Mihai Sprinceana
Un forum de programare cu de toate. Va astept sa va inscrieti si sa deveniti moderatori. Oricine este binevenit aici sa se inscrie si sa aiba acces la informatie free! Fiecare este liber sa adauge proiecte programe free etc. Ajutati acest forum sa devina o comunitate puternica unde fiecare invata de la fiecare! Tot ce trebuie sa faceti este sa va inregistrati si fiecare contributie se poate dovedi utila in timp! Forumul este free informatia free dk aveti timp liber ajutati si pe ceilalti si invatati si voi in acelasi timp! Haideti sa facem ceva pt.a ne ajuta intre noi! Cititi regulament postare forum inainte de a posta!
Lista Forumurilor Pe Tematici
Mihai Sprinceana | Inregistrare | Login

POZE MIHAI SPRINCEANA

Nu sunteti logat.
Nou pe simpatie:
mariana_n23 pe Simpatie
Femeie
24 ani
Brasov
cauta Barbat
29 - 52 ani
Mihai Sprinceana / Inteligenta artificiala / Sinteza examen Inteligenta Artificiala  
Autor
Mesaj Pagini: 1
mihaispr
Administrator

Inregistrat: acum 18 ani
Postari: 2142
Sinteza pt.examenul de IA



Termeni de baza IA pt.rezolvarea unei probleme date:

1. Date – constau în material brut, fapte, simboluri, numere, cuvinte, poze fără un înţeles de sine stătător, neintegrate într-un context, fără relaţii cu alte date sau obiecte. Ele se pot obţine în urma unor experimente, sondaje etc.

2. Informaţii – prin prelucrarea datelor şi găsirea relaţiilor dintre acestea se obţin informaţii care au un înţeles şi sunt integrate într-un context. Datele organizate şi prezentate într-un mod sistematic pentru a sublinia sensul acestor date devin informaţii. Pe scurt informaţiile sunt date prelucrate. Informaţiile se prezintă sub formă de rapoarte, statistici, diagrame etc.

3. Cunoştinţele - sunt colecţii de date, informaţii, adevăruri şi principii învăţate, acumulate de-a lungul timpului. Informaţiile despre un subiect reţinute şi înţelese şi care pot
fi folosite în luarea de decizii, formează judecăţi şi opinii devin cunoştinţe. Cu alte cuvinte, cunoştinţele apar în momentul utilizării informaţiei

Baza de date
-cuprinde informatiile organizate într-o forma particulara, legata de algoritmul folosit si
pentru a-l servi pe acesta

Adancimea nodului
- numarul de noduri prin care s-a
trecut de la nodul radacina pana la nodul curent;

Solutia initiala:
-reprezinta configuratia initiala a problemei. Se mai numeste si starea curenta;

Solutia finala:

-reprezinta solutia/configuratia finala a problemei

Spatiul starilor:

-contine toate configuratiile posibile ale obiectelor relevante (si poate si unele imposibile). Practic sunt toate configuratiile posibile si cele care conduc la solutie si cele care nu conduc la solutie.

Euristica (heuristica)
-este o metoda ce se bazeaza pe reguli derivate din
experienta, introducând în multe situatii un grad de incertitudine.

IA (Inteligenta artificiala)

-este o ramura a stiintei calculatoarelor ce studiaza realizarea unor tehnici de
programare performante, care sa permita rezolvarea unor sarcini complexe.
Învatarea este privita în IA ca fiind procesul prin care oamenii si calculatoarele îsi
îmbogatesc cunostintele si îsi perfectioneaza activitatea.

Strategii de cautare în spatiul starilor

Unul dintre cele mai utilizate modele de rezolvare a problemelor este prin reprezentarea căutării sub forma unui graf orientat în care nodurile sunt stări succesive în rezolvare iar arcele corespund tranziţiilor sau operatorilor legali ce pot fi aplicaţi pentru trecerea dintr-o stare în alta.

Cautarea solutiilor în spatiul starilor

Pentru a construi o descrierea unei probleme rezolvate prin reprezentare în spaţiul stărilor trebuie parcurse urmatoarele etape:

1) Se defineste spatiul starilor care contine toate configuratiile posibile ale obiectelor relevante (si poate si unele imposibile). Spatiul se poate defini explicit prin indicarea tuturor stărilor (acesta fiind un caz particular şi rar întâlnit în practică ) sau implicit prin indicarea transformărilor care generează o nouă stare dintr-o stare dată.

2) Se specifica una sau mai multe stari din spatiu care descriu situatii posibile de la care poate porni procesul de rezolvare a problemei (starea iniţială ) .

3) Se specifica una sau mai multe stari care ar fi acceptabile ca solutii ale problemei. Aceste stari se numesc stari scop (sau stari finale sau scopuri).

4) Se specifica un set de reguli care descriu actiunile (operatorii) disponibile şi care definesc tranziţiile sau transformările între stări.




Strategii de cautare




Exista 2 tipuri de strategii de cautare neinformate si informate



Din categoria strategiilor de cautare neinformate fac parte: strategia de cautare pe nivel, adancime limitata,cost uniform, adancime cu nivel iterativ si bidirectionala.

Din categoria strategiilor de cautare informate fac parte: strategia A*,strategia AO*, strategia BF(best first care este o generalizare a strategiilor pe nivel si in adancime).


Strategia de cautare pe nivel



Strategia de căutare pe nivel (în lăţime, breadth-first search) este o strategie de căutare
neinformată.
Strategia de căutare pe nivel începe expandarea cu nodul rădăcină, apoi expandează toate
nodurile generate de rădăcină şi continuă similar expandarea cu toţi succesorii acestora etc.
Orice nod este expandat pt.a genera stari succesoare. Daca starile succesoare de pe un anumit nivel sunt egale cu starea tinta atunci e gasita solutia si adaugata in caz contrar nu este adaugata.














FRONTIERA- lista implementata sub forma de coada (lista=vector alocat dinamic) ce contine nodurile evaluate

TERITORIU- lista implementata sub forma de coada (lista=vector alocat dinamic) ce contine nodurile expandate


Strategia de cautare pe nivel incepe cu expandarea nodului radacina, apoi expandeaza toate nodurile generate de radacina si continua expandarea cu toti succesorii acestora.

Implementarea strategiei de cautare pe nivel se realizeaza particularizand strategia generala de cautare prin implementarea listelor FRONTIERA si TERITORIU de tip coada( coada este de tip FIFO –primul nod din coada este primul scos)





Caracteristici

Căutarea pe nivel este completă.
Căutarea pe nivel este optimală.
Complexitatea strategiei este exponenţială. (asta inseamna ca daca arborele de cautare are o structura complexa el va gasi solutia mai repede)

Criterii de caracterizare a unei strategii de cautare in spatiul starilor


Completitudine:

-daca garanteaza o solutie in cazul in care aceasta exista

Optimalitate:
-daca gaseste o solutie optima (reprezinta cea mai buna cale de rezolvare a problemei)

Complexitatea:
-este de 2 categorii spatiu si timp

Complexitatea în spaţiu
-se referă la volumul de memorie necesar calculelor ( cat spatiu de memorie este necesar pentru a realiza cautarea solutiei)

Complexitatea în timp

-se referă la timpul necesar efectuării calculelor, ambele fiind exprimate ca funcţii de n, unde n este mărimea datelor de intrare. ( in cat timp se gaseste o solutie)

In continuare este prezentat un exemplu al structurii unui arbore de cautare asupra caruia vom aplica strategia de cautare pe nivel:





Nodul a1 are succesorii notati a1.1 si a1.2.

Nodul a2 are succesorii notati a2.1 si a2.2

Nodul a3 in acest caz nu are succesori.






Algoritm pseudocod:

1. iniţializează listele FRONTIERA ←{Si} şi TERITORIU ←{}
2. dacă FRONTIERA={} atunci
întoarce INSUCCES /*nu există soluţie*/
3. elimină primul nod S din FRONTIERA şi inserează-l în TERITORIU
4. expandează nodul S
4.1. generează toţi succesorii direcţi Sj ai nodului S
4.2. pentru fiecare succesor Sj (1≤j≤n) al lui S execută
4.2.1. stabileşte legătura Sj → Suzz
4.2.2. dacă Sj este stare finală atunci
i. soluţia este (Sj, S, ..., Si)
ii. întoarce SUCCES /* a fost găsită soluţia */
4.2.3. dacă Sj ≠ toate stările anterior generate în
soluţia parţială curentă atunci
inserează Sj în FRONTIERA, la sfârşit
5. repetă de la pasul 2
sfârşit



Cum functioneaza strategia de cautare pe nivel pt.acest exemplu:


Nodul radacina nu este cel tinta, prin urmare deci vor fi generate stari succesoare de la nodul radacina.Fiecare
     din aceste stari succesoare vor fi luate din agenda si vor fi comparate cu tinta daca sunt egale cu scopul final
     (tinta) vor fi stocate in SolutionsFound de tip ArrayList. In cazul in care un nod de exemplu de pe nivelul2 este
     diferit de scopul final(tinta) acesta va fi expandat pentru a crea stari succesoare pana va fi egal cu tinta
     si abia atunci va fi adaugat in agenda.
     
     In concluzie solutiile pot fi gasite pe nivele diferite in arborele de cautare.
     
     Prima solutie sa spunem ca a fost gasita. Urmatoarele solutii vor fi comparata cu solutia gasita pe nivelul
     respectiv si daca sunt mai mici sau egale sunt stocate ca solutii optimale valide. Doar atunci cand sunt gasite
     solutii la un nivel superior strategia de cautare stie cum sa-si gaseasca toate solutiile optimale.Cand se
     intampla acest lucru strategia de cautare pe nivel se opreste si solutiile optimale sunt afisate.

Algoritmul pleaca din nodul radacina si intra pe nodul a1

Pasul1: pleaca din nodul radacina numit  Root

Pasul2: Ajunge pe nivelul 2 si intra pe nodul a1

Pasul3: Cauta solutii pe nivelul2

Pasul4: expandeaza nodul a2 (succesorii lui sunt nodurile a2.1 si a2.2)

Pasul5: Expandarea nodulului a3 nu mai are loc deoarece observam ca nu are stari succesoare


Expandarea unui nod- se realizeaza pt.a determina stari succesoare.


Obs. O solutie intr-un arbore de cautare in cadrul strategiei pe nivel poate fi gasita pe orice nivel.


Concluzie:

Strategia pe nivel este completa, optimala iar complexitatea timp si spatiu este exponentiala. (asta inseamna ca daca arborele de cautare are o structura complexa el va gasi solutia mai repede)




Strategia de căutare în adâncime limitată

Strategia de căutare în adâncime limitată (depth-first search) este o strategie de căutare
neinformată.
Strategia expandează întotdeauna ultimul nod adăugat arborelui (aflat pe nivelul cel mai
adânc). Căutarea revine pe nivelele anterioare numai atunci când s-a blocat (a apărut un nod
care nu e nodul scop şi care nu poate fi expandat sau s-a ajuns la adâncimea maximă
impusă.
Implementarea strategiei de căutare pe nivel se realizează particularizând strategia generală
de căutare prin implementarea listei FRONTIERA sub formă de stivă.

Algoritm in pseudocod

1. iniţializează listele FRONTIERA ←{Si} şi TERITORIU ←{}
2. dacă FRONTIERA={} atunci
întoarce INSUCCES /*nu există soluţie*/
3. elimină primul nod S din FRONTIERA şi inserează-l în TERITORIU
4. daca adancime(S) = Hmax atunci repeta de la pasul 2
4. expandează nodul S
4.1. generează toţi succesorii direcţi Sj ai nodului S
4.2. pentru fiecare succesor Sj (1≤j≤n) al lui S execută
4.2.1. stabileşte legătura Sj → S
4.2.2. dacă Sj este stare finală atunci
i. soluţia este (Sj, S, ..., Si)
ii. întoarce SUCCES /* a fost găsită soluţia */
4.2.3. dacă Sj ≠ toate stările anterior generate în
soluţia parţială curentă atunci
inserează Sj în FRONTIERA, la inceput
5. repetă de la pasul 2
sfârşit
Dezavantajul căutării este posibilitatea blocării într-o cale greşit aleasă.

Caracteristici


Căutarea nu este completă.
Căutarea nu este optimală.
Complexitatea timp este exponenţială, iar complexitatea spaţiu este polinomială


In continuare este prezentat un exemplu al structurii unui arbore de cautare asupra caruia vom aplica strategia de cautare pe adancime:





Am luat acelasi arbore de cautare.


Cum functioneaza strategia de cautare pe in adancime pt.acest exemplu ilustrat in printscreen-ul de mai sus:

Fie arborele de cautare de mai sus avand 3 nivele.


Pasul1: Pleaca din radacina se duce in nodul a1 si apoi in a1.1 si vede dk a gasit solutia
prima data

Pasul2: Revine in radacina

Pasul3:  Pleaca pe traseul Root a1 a1.1
Pasul4:  Pleaca pe traseul Root,a2,a2.1
Pasul5:  Pleaca pe traseul Root,a2,a2.2
Pasul6: Revine in radacina

Pasul7: Pleaca pe traseul Root,a3 si atat deoarece a3 nu are descendenti


Strategia de cost uniform

Aceasta modifică strategia de căutare pe nivel pentru a găsi soluţia de cost minim (care nu
întotdeauna este şi soluţia cu adâncimea minimă. Prin urmare se va expanda mai întâi nodul
cu cost minim din FRONTIERA.
Căutarea pe nivel este căutarea de cost uniform cu cost(S)=Adâncime (S).
Căutarea de cost uniform găseşte soluţia cea mai ieftină dacă este îndeplinită condiţia:
- costul unei căi nu scade de-a lungul acesteia: cost(succesor(S))≥cost(S), pentru orice
nod S.

Exista 2 modalitati de definire a costului unui arbore solutie:

-    Costul suma- suma costurilor tuturor arcelor din arbore

-    Cosul maxim- suma costurilor de-a lungul caii celei mai costisitoare intre radacina si un nod terminal

Strategia de cautare cu nivel iterativ


Complexitatea spatiu este exponentiala complexitatea timp liniara.



Caracteristici


Căutarea este completă.
Căutarea este optimală.
Complexitatea timp si spatiu este exponenţială.



Strategii de cautare informate


Strategia A*

Strategia de căutare A* este o strategie de căutare informată care încearcă reducerea
numărului de noduri generate din spaţiul de căutare, pe baza unor anumite criterii cum sunt
euristicile.
Acest obiectiv include şi problema găsirii căii spre soluţie care presupune aplicarea unui
număr minim de operatori.
Strategia de căutare A* începe expandarea cu nodul rădăcină, generează toţi succesorii
acestui nod şi calculează funcţia euristică specifică fiecăruia. Apoi expandează acel succesor
a cărei funcţie euristică are valoarea minimă şi continuă similar expandarea cu toţi succesorii
acestuia etc.


Funcţii euristice

După cum sugerează şi numele, euristicile nu garantează găsirea unei soluţii, ci sunt
determinate de experienţa specialiştilor în rezolvarea clasei de probleme.

În stategia de căutare A* funcţia de evaluare euristică este o funcţie aditivă:
f(S) = g(S) + h(S),
unde:
g(S) – reprezintă costul soluţiei parţiale (Si, ..., S)
h(S) – estimata distanţei de la starea curentă la starea scop (S,..., Sf)
Si – starea iniţială
S – starea curentă
Sf – starea finală (scop)

Funcţia h(S) trebuie definită de către programator, ea fiind specifică fiecărei probleme în
parte.

Algoritm

1. iniţializează listele FRONTIERA ←{Si} şi TERITORIU ←{}
2. calculeaza f(Si) şi asociază această valoare nodului Si
3. dacă FRONTIERA={} atunci
întoarce INSUCCES /*nu există soluţie*/
4. selectează din FRONTIERA un nod S pentru care f(S) este minimă
5. elimină nodul S din FRONTIERA şi inserează-l în TERITORIU
6. dacă S este starea finală atunci
6.1. construieşte soluţia(S,..., Si), prin trasarea căii de-a
lungul pointer-ilor de la scop înapoi la starea iniţială, Si
6.2 întoarce SUCCES /* s-a găsit soluţia problemei */
7. expandează nodul S
7.1. generează toţi succesorii direcţi Sj ai nodului S
7.2. pentru fiecare succesor Sj (1≤j≤n) al lui S execută
7.2.1. calculează f(Sj) = g(S) + cost_arc(S, Sj) + h(Sj)
şi asociază valoarea lui Sj
7.2.2. stabileşte legătura fiu – părinte Sj -> S, prin
ataşarea unui pointer de la Sj înapoi la S
7.2.3 dacă Sj ≠ toate stările anterior generate în
soluţia parţială curentă atunci
introduce Sj în FRONTIERA
7.2.4 altfel
i. fie S’j copia lui Sj din FRONTIERA sau TERITORIU
ii. dacă g(Sj) < g(S’j) atunci
* transformă legătura S’j -> predecesor(S’j) în
legătura S’j -> S
* înlocuieşte f(S’j) asociată lui S’j cu f(Sj) (se
modifică doar g)
dacă S’j ∈ TERITORIU atunci
*elimină S’j din TERITORIU şi inserează-l în
FRONTIERA
iii. ignoră nodul Sj
8. repetă de la pasul 3
sfârşit

Caracteristici

Strategia A* este completă şi optimală dacă funcţia h este euristică admisibilă, adică
nu supraestimează niciodată costul atingerii scopului.

Funcţia g(S) reprezintă costul drumului parcurs de la starea iniţială până la starea curentă S.


  daca sunt indeplinite urmat conditii:
   
     h = admisibil  (funct admisibila)
     cost_arc(S,S') > ct       unde ct > 0   

atunci alg este admisibil => este complet si optimal si cu complexitate mare dar depinde de prb.


Algoritm pseudocod A*:


1. iniţializează listele FRONTIERA ←{Si} şi TERITORIU ←{}
2. calculeaza f(Si) şi asociază această valoare nodului Si
3. dacă FRONTIERA={} atunci
întoarce INSUCCES /*nu există soluţie*/
4. selectează din FRONTIERA un nod S pentru care f(S) este minimă
5. elimină nodul S din FRONTIERA şi inserează-l în TERITORIU
6. dacă S este starea finală atunci
6.1. construieşte soluţia(S,..., Si), prin trasarea căii de-a
lungul pointer-ilor de la scop înapoi la starea iniţială, Si
6.2 întoarce SUCCES /* s-a găsit soluţia problemei */
7. expandează nodul S
7.1. generează toţi succesorii direcţi Sj ai nodului S
7.2. pentru fiecare succesor Sj (1≤j≤n) al lui S execută
7.2.1. calculează f(Sj) = g(S) + cost_arc(S, Sj) + h(Sj)
şi asociază valoarea lui Sj
7.2.2. stabileşte legătura fiu – părinte Sj -> S, prin
ataşarea unui pointer de la Sj înapoi la S
7.2.3 dacă Sj ≠ toate stările anterior generate în
soluţia parţială curentă atunci
introduce Sj în FRONTIERA
7.2.4 altfel
i. fie S’j copia lui Sj din FRONTIERA sau TERITORIU
ii. dacă g(Sj) < g(S’j) atunci
* transformă legătura S’j -> predecesor(S’j) în
legătura S’j -> S
* înlocuieşte f(S’j) asociată lui S’j cu f(Sj) (se
modifică doar g)
dacă S’j ∈ TERITORIU atunci
*elimină S’j din TERITORIU şi inserează-l în
FRONTIERA
iii. ignoră nodul Sj
8. repetă de la pasul 3
sfârşit


Alg. AO*


-reprezinta o strategie de cautare informata si este folosita in cazul grafurilor SI/SAU.

daca sunt indeplinite urmat conditii:
   
     f(s)<=W(s)         
     cost_arc(S(k mic0,S(kmic +1)) >= ct       unde ct > 0 

daca sint indeplinite atunci => alg optimal


pus acum 17 ani
   
Pagini: 1  

Mergi la