Sunteți pe pagina 1din 99

Inteligență artificială

2. Metode de căutare

Florin Leon

Universitatea Tehnică „Gheorghe Asachi” din Iași


Facultatea de Automatică și Calculatoare

http://florinleon.byethost24.com/curs_ia.htm
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm
Metode de căutare
1. Rezolvarea problemelor prin căutare
2. Căutarea neinformată (oarbă)
3. Căutarea informată (euristică)
4. Concluzii

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 2


Metode de căutare
1. Rezolvarea problemelor prin căutare
2. Căutarea neinformată (oarbă)
3. Căutarea informată (euristică)
4. Concluzii

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 3


Probleme de căutare

15 puzzle Turnurile din Hanoi

Găsirea rutelor Navigarea roboților 4


Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm
Probleme de căutare
 Cele mai scurte căi în rețele sociale, web crawling
 Parcurgerea unor componente ierarhice ordonate
topologic:
 Găsirea unor fișiere într-o structură de directoare
 Compilare inteligentă în proiecte mari, ținând seama de
dependențe
 Găsirea rutelor pentru mașini, trenuri sau avioane
 Jocuri video, de exemplu, mutarea trupelor

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 5


Componentele unei probleme de
căutare
 Starea inițială
 Starea scop
 O mulțime de operatori sau acțiuni
 Funcția de evaluare – pentru căutarea informată
 O estimare a distanței fiecărei stări față de starea scop
 Conține cunoștințe despre fiecare problemă în parte

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 6


Formalizarea unei probleme de
căutare
 Q este o mulțime finită de stări
 S ∈ Q este starea inițială
 G  Q este o mulțime nevidă de stări scop
 succs : Q  (Q) reprezintă mulțimea de stări care pot fi
atinse dintr-o stare s într-un singur pas
 Funcția primește o singură stare ca argument și returnează
o mulțime de stări ca rezultat
 cost : Q2  ℝ+ reprezintă costul de a ajunge dintr-o stare s
într-o stare s’
 Funcția primește două stări și returnează un număr pozitiv
 cost(s, s’ ) este definită doar când s’  succs(s)

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 7


Definiții
 Spațiu de căutare (spațiul problemei)
 Mulțimea tuturor stărilor care pot fi atinse prin aplicarea
operatorilor disponibili

 Soluție
 Seria de operatori care transformă starea inițială într-o
stare scop

 Metodă de rezolvare a unei probleme


 O procedură pentru găsirea unei soluții

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 8


Stare Rezolvarea
inițială unei probleme
prin căutare

Soluție Spațiul de căutare


(spațiul problemei)

Stare
scop
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 9
Soluția
 O soluție este o cale care leagă nodul inițial de
oricare din nodurile scop
 Costul soluției este suma costurilor arcelor care
formează calea
 O soluție optimă este soluția de cost minim
 Unele probleme nu au soluție!

1 2 3 4 1 2 3 4
5 6 7 8 ? 5 6 7 8
9 10 11 12 9 10 11 12
13 14 15 13 15 14 1000 $
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 10
Dimensiunea spațiului de
căutare
 8-puzzle  9! = 362.880 stări
 15-puzzle  16!  2 · 1013 stări
 24-puzzle  25!  1025 stări

 Doar jumătate din aceste stări pot fi atinse dintr-o


stare dată
 Într-o abordare simplă, acest lucru nu se cunoaște
dinainte

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 11


Importanța reprezentării
 Misionarii și canibalii:
 3 misionari, 3 canibali, 1 barcă
 Barca poate duce 2 persoane
 Dacă sunt mai mulți canibali decât misionari, îi mănâncă
 Reprezentare: numărul de persoane pe primul mal și barca
 Starea inițială: (3, 3, 1)
 Starea scop: (0, 0, 0)
 5 operatori: 1C, 1M, 2C, 2M, CM
 Alternativă: persoanele individuale (27 de operatori)
 O reprezentare mai bună reduce spațiul de căutare

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 12


Presupuneri
 Mediul este static
 Mediul este discret (sau discretizabil)
 Mediul este accesibil (complet observabil)
 Mediul este determinist

 Chiar dacă aceste presupuneri nu sunt satisfăcute,


căutarea rămâne o metodă importantă de rezolvare
a problemelor

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 13


Stări și noduri
 O stare este o configurație a problemei
 Un nod este o structură de date în program

 Două noduri diferite pot conține aceeași


stare!

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 14


Structuri de date

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 15


Structuri de date

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 16


Metoda de căutare
 Frontiera este mulțimea tuturor nodurilor care nu
au fost încă expandate
 De obicei, frontiera este implementată ca o listă
 Ordonarea nodurilor în frontieră definește
metoda de căutare, de exemplu, tratarea listei
ca o coadă (căutare în lățime) sau ca o stivă
(căutare în adâncime)

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 17


Măsuri de performanță
 Completitudine
 Un algoritm este complet dacă găsește o soluție atunci când
există una
 Dar dacă nu există o soluție?
 Optimalitate
 Un algoritm este optim dacă returnează o soluție de cost
minim când problema are soluții
 Complexitate
 Măsoară timpul și volumul de memorie necesare algoritmului

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 18


Metode de căutare
1. Rezolvarea problemelor prin căutare
2. Căutarea neinformată (oarbă)
2.1. Căutarea bidirecțională
2.2. Căutarea iterativă în adâncime
2.3. Căutarea de cost uniform
3. Căutarea informată (euristică)
4. Concluzii

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 19


Căutarea neinformată
 Căutarea constă în explorarea alternativelor,
fără a utiliza informații specifice despre
problemă

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 20


Căutarea în lățime
 Nodurile noi sunt inserate la sfârșitul
frontierei: lista este o coadă

1
Rezultat: 1, 2, 3, 4, 5, 6, 7
2 3

4 5 6 7

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 21


Parametri importanți
 Factorul de ramificare (branching factor) al arborelui
de căutare: b
 Numărul de succesori ai fiecărei stări
 Dacă numărul nu este uniform, se poate calcula o valoare
medie

 Adâncimea (depth) a celui mai superficial nod scop


din arborele de căutare: d
 Lungimea minimă (≠ cost) a căii între starea inițială și o
stare scop

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 22


Evaluarea performanțelor
 Căutarea în lățime este:
 Completă
 Optimă dacă un pas are costul 1
 Cazul cel mai defavorabil
 N = 1 + b + b2 + … + bd = O(bd)
 N este numărul de noduri generate
 Complexitatea de timp și de spațiu este O(bd)
 Cazul cel mai favorabil
 N = 1 + b + b2 + … + bd–1 + 1 = O(bd–1)
 Nu este o diferență foarte mare, performanțele sunt destul de
predictibile

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 23


Notă
 Căutarea în lățime poate rula la infinit dacă:
 Problema nu are soluții și spațiul de căutare este
infinit
sau
 Stările pot fi revizitate de mai multe ori

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 24


Căutarea bidirecțională
s

 Două frontiere
 Complexitatea de timp și spațiu este O(bd/2) ≪ O(bd)
dacă ambii arbori au același factor de ramificare b
 Permite o căutare pe un număr dublu de niveluri față de
căutarea în lățime
 Căutarea înapoi poate fi mai dificilă față de căutarea înainte
(vezi exemplul următor)
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 25
Problema cănilor cu apă:
căutare înainte
 Avem la dispoziție 2 căni de capacități diferite A și B
 Scopul este ca în cana A să rămână o cantitate
specificată de apă prin aplicarea a 6 operații posibile:
 Umple cana A (↑A)
 Umple cana B (↑B)
 Toarnă apa din cana A în cana B (A→B)
 Toarnă apa din cana B în cana A (B→A)
 Varsă cana A (↓A)
 Varsă cana B (↓B)

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 26


Problema cănilor cu apă:
căutare înainte
 Arborele rezultat prin
aplicarea celor 6 operații
unei probleme concrete:
cana A are capacitatea de
4l, cana B are capacitatea
de 3l, iar în final în cana A
trebuie să se obțină un
rest de 2l

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 27


Problema cănilor cu apă:
căutare înainte
 Datorită complexității,
numai primul nivel a fost
completat, în rest
urmărindu-se drumul
către soluția optimă (calea
cea mai scurtă către scop)
 Nu există o singură soluție
optimă, ea poate fi atinsă
pe două căi diferite

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 28


Problema cănilor cu apă:
căutare înapoi
 Pentru a o rezolva prin căutare înapoi, trebuie să
facem unele precizări suplimentare
 Când problema este rezolvată prin căutare înainte,
în starea scop în cana B se poate găsi orice cantitate
de apă
 Când problema este rezolvată prin căutare înapoi,
starea scop trebuie fixată complet (A și B, nu doar
A), pentru că de aici începe căutarea

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 29


Problema cănilor cu apă:
căutare înapoi
 Să presupunem că dorim restul
de 2l în cana A și 0l în cana B
 Nu toate cele 6 operații se vor
putea aplica pentru orice nod
 Există constrângeri, de
exemplu, dacă la un anumit
moment în cana A sunt 0l, este
imposibilă aplicarea primei
operații (umple A); ar însemna
ca după umplerea cănii, în ea
să nu existe apă, ceea ce este
absurd

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 30


Căutarea în adâncime
 Nodurile noi sunt inserate la începutul
frontierei: lista este o stivă

1
Rezultat: 1, 2, 4, 5, 3, 6, 7
2 3

4 5 6 7

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 31


Evaluarea performanțelor
 b: factorul de ramificare; d: adâncimea celui mai superficial nod scop
 m: adâncimea arborelui de căutare
 Căutarea în adâncime:
 Nu este completă în varianta pe arbore, deoarece poate intra în bucle infinite
 Este completă în varianta pe graf, care nu mai expandează stările deja vizitate
 Nu este optimă
 Cazul cel mai favorabil
 Complexitatea de timp și de spațiu este O(d) – extrem de rapidă
 Cazul mediu
 Complexitatea de timp este similară cu a căutării în lățime: O(bd)
 De obicei, DFS este mai rapid decât BFS
 Cazul cel mai defavorabil
 Complexitatea de timp este O(bm) – căutarea este lentă
 Complexitatea de spațiu este O(b ∙ m) – excelentă
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 32
Căutarea limitată în adâncime
 Căutare în adâncime cu limitare la k niveluri
 Sub această adâncime, nodurile nu mai sunt
expandate

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 33


Pseudocod

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 34


Căutarea iterativă în adâncime
 Combină avantajele căutărilor în lățime și adâncime
 Ideea de bază: pentru k = 0, 1, 2, …
 Realizează o căutare limitată în adâncime pentru limita k:
generează nodurile cu adâncime  k

 Situații posibile:
 Găsirea unei soluții
 Eșec: nu există soluție
 Căutare incompletă: nu există soluție pe nivelurile
considerate

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 35


Căutarea iterativă în adâncime

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 36


Căutarea iterativă în adâncime

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 37


Căutarea iterativă în adâncime

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 38


Pseudocod

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 39


Generarea soluției

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 40


Evaluarea performanțelor
 Căutarea iterativă în adâncime este:
 Completă
 Optimă dacă un pas are costul 1
 Cazul cel mai defavorabil
 Complexitatea de timp:
 (d + 1) ∙ 1 + d ∙ b + (d – 1) ∙ b2 + … + 1 ∙ bd = O(bd)
 Comparabilă cu a căutării în lățime, puțin mai lentă din cauza
repetițiilor
 Complexitatea de spațiu: O(b ∙ d)
 Comparabilă cu a căutării în adâncime, foarte bună

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 41


Compararea performanțelor
 Două probleme:
 15-puzzle: b = 2,13
 Cubul Rubik: b = 13,5
 Timpul și spațiul de prelucrare
 1 milion de noduri pe secundă
 100 octeți pe nod
 Tabelele următoare prezintă cazurile cele mai defavorabile
 Pentru analiza cazurilor celor mai favorabile:
 tw: cel mai defavorabil, tb: cel mai favorabil
 Căutare în lățime (BFS), bidirecțională  tw / tb  b
 Căutare iterativă în adâncime (IDS)  tw / tb  b / 2
 Căutare în adâncime (DFS)  tw este exponențial, tb este liniar

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 42


15-puzzle: b = 2,13

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 43


Cubul Rubik: b = 13,5

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 44


Evitarea repetării stărilor
 Evitarea întoarcerii în starea din care tocmai s-a
plecat
 Starea fiului este aceeași cu starea părintelui
 Evitarea căilor cu bucle
 Starea unui nod este aceeași cu starea unui nod de pe calea
din starea inițială
 Evitarea stărilor generate anterior
 Necesită memorarea tuturor stărilor generate: complexitate
de spațiu în cazul cel mai defavorabil O(bd)

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 45


Căutarea de cost uniform
 Utilizată pentru grafuri ponderate, în care muchiile
pot avea costuri diferite

 Frontiera este ordonată după o funcție g(n) care


reprezintă costul căii de la nodul inițial la nodul
curent n
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 46
Structura de date Nod

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 47


Pseudocod

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 48


Pseudocod

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 49


Algoritmul Dijkstra bidirecțional
 Găsește căile cele mai scurte de la un nod sursă la toate celelalte
noduri din graf
 Algoritmul lui Dijkstra vs. Căutarea de cost uniform
 Căutarea de cost uniform, între doar două noduri, poate fi aplicată
pe grafuri foarte mari, teoretic infinite
 Căutarea de cost uniform umple listele pe măsură ce se realizează
căutarea, în timp ce Dijkstra adaugă toate nodurile de la început,
cu un cost inițial infinit
 Sistemele comerciale de navigare GPS folosesc variante
optimizate ale algoritmilor prezentați în acest curs (metode
informate sau neinformate), de exemplu, varianta bidirecțională
a algoritmului lui Dijkstra

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 50


Metode de căutare
1. Rezolvarea problemelor prin căutare
2. Căutarea neinformată (oarbă)
3. Căutarea informată (euristică)
3.1. Algoritmul A*
3.2. Algoritmul IDA*
4. Concluzii

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 51


Căutarea informată (euristică)
 Factorii de ramificare mari sunt o problemă
serioasă
 Este necesară o modalitate de a reduce numărul
de noduri vizitate
 Metodele de căutare euristică încearcă alegerea
„inteligentă” a nodurilor care trebuie expandate

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 52


Euristică
 εὑρίσκειν = a găsi, εὕρηκα/evrika = am găsit
 O euristică este o metodă care furnizează rapid o
soluție, nu neapărat optimă
 Este o metodă aproximativă, spre deosebire de un
algoritm exact optim
 Deși nu garantează găsirea soluției optime, metodele
euristice găsesc de obicei o soluție acceptabilă și
deseori chiar soluția optimă

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 53


Metode neinformate vs.
metode informate
 Metodele neinformate (oarbe)
 Nu exploatează semnificațiile stărilor pentru a ordona
nodurile din frontieră
 Exploatează doar pozițiile nodurilor în arbore
 Tratează toate problemele la fel
 Metodele informate (euristice)
 Ordonează nodurile frontierei în funcție de semnificațiile
stărilor
 Cele mai „promițătoare” noduri sunt plasate la începutul
frontierei
 Utilizează cunoștințe specifice fiecărei probleme

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 54


Căutarea best-first
 Evaluează cât de bun este un nod
 Utilizează o funcție de evaluare f care atribuie
fiecărui nod n un număr real f(n)  0
 f(n) este un cost estimat
 Cu cât este mai mic f(n), cu atât este mai bun nodul n
 Căutarea best-first sortează frontiera în ordinea
crescătoare a lui f
 Pentru f egale, se poate decide în mod aleatoriu

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 55


Definirea lui f
 Funcții utilizate în general
 g(n) este costul căii de la nodul inițial la n
 Este cunoscută
 h(n) este estimarea costului căii de la n la nodul scop
 Este o estimare euristică
 Căutarea de cost uniform (neinformată)
 f(n) = g(n)
 Căutarea greedy
 f(n) = h(n)
 Căutarea A*
 f(n) = g(n) + h(n)
 Reunește ideile căutărilor de cost uniform și greedy
 Problema principală: găsirea celei mai bune funcții h
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 56
Exemplu: căutarea greedy

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 57


Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 58
Căutarea greedy
 Iași – Făgăraș: prin Piatra Neamț
 Dacă se permite revizitarea stărilor, apare o buclă infinită

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 59


Caracteristicile căutării greedy
 Nu este optimă
 Nu este completă

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 60


Calitatea căutării este dată de h
 Când h = costul până la scop
 Sunt expandate doar nodurile de pe calea corectă
 Se găsește soluția optimă

 Când h < costul până la scop


 Sunt expandate noduri suplimentare
 Se găsește soluția optimă

 Când h > costul până la scop


 Se poate găsi o soluție suboptimă

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 61


Euristici admisibile
 Fie h*(n) costul căii optime de la n la nodul scop
 Funcția euristică h(n) este admisibilă dacă:
0  h(n)  h*(n)
 Dacă G este scopul, atunci h(G) = 0
 O funcție euristică admisibilă este întotdeauna
optimistă (niciodată nu supraestimează)

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 62


Căutarea A*
 Unul din cei mai populari algoritmi de IA
 f(n) = g(n) + h(n), unde:
 g(n) = costul celei mai bune căi găsite până la n
 h(n) = o funcție euristică admisibilă
 Presupunem că: p, c,  : cost(p, c)   > 0
 Între două noduri diferite există întotdeauna un cost pozitiv
 Căile infinite au cost infinit
 Folosește două liste: lista deschisă și lista închisă
 Mulțimea nodurilor din lista deschisă reprezintă frontiera,
iar cele din lista închisă, nodurile deja vizitate

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 63


Greedy vs. A*
 f(n) = g(n) + h(n)

 f(B) = 15 + 20 + 30 = 65
 f(C) = 15 +10 + 35 = 60

 Greedy alege nodul B


(h = 30)
 A* alege nodul C
(f = 60)

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 64


Structuri de date

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 65


Structuri de date

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 66


Pseudocod A* simplificat

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 67


Pseudocod A* optimizat

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 68


Pseudocod A* optimizat

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm


69
Atenție: Algoritmul A* nu
expandează nodurile arborelui în
mod greedy, dar după valorile
funcției f. Deoarece folosește o
listă de priorități, căutarea poate
„sări” dintr-un subarbore în altul,
de exemplu, Râmnicu Vâlcea -
Făgăraș. A se vedea și exemplul
următor.

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 70


Revizitarea stărilor
 Euristica h este
c=1 2 admisibilă
h = 100 1

2 Pentru acest exemplu,


1 

90 euristica ar putea fi distanța


în linie dreaptă, iar nodul cu
100 h = 1 ar putea fi lângă scop,
dar despărțit de acesta de
0 un obstacol

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 71


Revizitarea stărilor
c=1 2

f = 1+100 2+1
h = 100 1

2
1
90 4+90

100
?
0 104

Dacă eliminăm acest nod, algoritmul


expandează nodul scop vecin și
returnează o soluție suboptimă
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 72
Revizitarea stărilor

1 2

1+100 2+1
100 1

2
1
90 2+90 4+90

100

0 102 104

Dacă nu eliminăm nodurile care revizitează


stările, căutarea se termină cu soluția optimă

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 73


Cum funcționează A*
Iterația 1
A open list: A (0+0:0)
closed list:
1 2 expand A (0+0:0)
successor(A): B (1+100:101)
add to open list: B (1+100:101)
100 B C 1
successor(A): C (2+1:3)
add to open list: C (2+1:3)
2 add to closed list: A (0+0:0)
1
D 90
Iterația 2
open list: C (2+1:3) B (1+100:101)
100 closed list: A (0+0:0)
expand C (2+1:3)
successor(C): A (4+0:4)
E 0 skip: parent pruning
successor(C): D (4+90:94)
add to open list: D (4+90:94)
add to closed list: C (2+1:3)

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 74


Cum funcționează A*
Iterația 3
A open list: D (4+90:94) B (1+100:101)
closed list: A (0+0:0) C (2+1:3)
1 2 expand D (4+90:94)
successor(D): B (5+100:105)
skip: lower G in open list
100 B C 1
successor(D): C (6+1:7)
skip: parent pruning
2 successor(D): E (104+0:104)
1
D 90 add to open list: E (104+0:104)
add to closed list: D (4+90:94)

100 Iterația 4
open list: B (1+100:101) E (104+0:104)
closed list: A (0+0:0) C (2+1:3) D (4+90:94)
E 0 expand B (1+100:101)
successor(B): A (2+0:2)
skip: parent pruning
successor(B): D (2+90:92)
add to open list: D (2+90:92)
add to closed list: B (1+100:101)
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 75
Cum funcționează A*
Iterația 5
A open list: D (2+90:92) E (104+0:104)
closed list: A (0+0:0) C (2+1:3) D (4+90:94) B (1+100:101)
1 2 expand D (2+90:92)
successor(D): B (3+100:103)
skip: parent pruning
100 B C 1
successor(D): C (4+1:5)
skip: lower G in closed list (& parent pruning)
2 successor(D): E (102+0:102)
1
D 90 add to open list: E (102+0:102)
replace in closed list: D (2+90:92)

100 Iterația 6
open list: E (102+0:102) E (104+0:104)
closed list: A (0+0:0) C (2+1:3) D (2+90:92) B (1+100:101)
E 0 expand E (102+0:102)
solution: A - B - D - E

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 76


Euristici monotone
 O euristică h este monotonă
p
(sau consistentă) dacă:
cost(p,c)
 p un nod și c un fiu al lui p:
 h(p)  cost(p, c) + h(c) c h(p)

 G un nod scop h(c)


 h(G) = 0
 O euristică monotonă este și (inegalitatea în triunghi)
admisibilă
 O euristică monotonă devine din ce în ce mai precisă
cu cât înaintează în adâncimea arborelui de căutare

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 77


Euristici monotone
 Dacă h este monotonă, oricând este deschis un nod,
algoritmul A* garantează că a găsit o cale optimă
către acesta
 Nodurile închise nu mai sunt redeschise
 În multe cazuri (dar nu întotdeauna), monotonia
euristicii accelerează găsirea soluției

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 78


Euristici monotone
 Fie un nod părinte p și un nod fiu c
 h(p)  cost(p,c) + h(c) ← h este monotonă
 h(c)  h(p) – cost(p,c)
 g(c) = g(p) + cost(p,c)
 f(c) = g(c) + h(c)  g(p) + cost(p,c) + h(p) – cost(p,c)
 ⇒ f(c)  f(p)
 h < h* ⇒ pe măsură ce înaintăm spre scop, h se
apropie de costul real, deci este normal ca f să
crească

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 79


Ecuația pathmax
 Ecuația pathmax: la generarea unui nod fiu c al lui p
 f(c) = max( f(p), g(c) + h(c) )
 În exemplul anterior: nodul D
 f(D) = max( f(C), g(D) + h(D) ) = max(3, 94) = 94
 f(D) = max( f(B), g(D) + h(D) ) = max(101, 92) = 101
 Ecuația pathmax face ca valorile lui f să fie monoton
nedescrescătoare pe căile traversate din arborele de căutare
 Dacă există mai multe căi prin care se poate ajunge la scop,
valorile f pot rămâne nemonotone pentru căile netraversate încă

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 80


Exemplul anterior: comparație
Fără pathmax Cu pathmax

Iterația 4 Iterația 4
open list: B (1+100:101) E (104+0:104) open list: B (1+100:101) E (104+0:104)
closed list: A (0+0:0) C (2+1:3) D (4+90:94) closed list: A (0+0:0) C (2+1:3) D (4+90:94)
expand B (1+100:101) expand B (1+100:101)
successor(B): A (2+0:2) successor(B): A (2+0:101)
skip: parent pruning skip: parent pruning
successor(B): D (2+90:92) successor(B): D (2+90:101)
add to open list: D (2+90:92) add to open list: D (2+90:101)
add to closed list: B (1+100:101) add to closed list: B (1+100:101)

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 81


Efectul euristicilor monotone

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 82


Proprietăți
 A* este complet și optim dacă nodurile care
revizitează stările nu sunt eliminate
 A* este optim eficient (optimally efficient) dacă
euristica este monotonă
 Niciun alt algoritm de același tip nu garantează expandarea
unui număr mai mic de noduri
 Alți algoritmi pot fi mai rapizi chiar dacă expandează mai
multe noduri

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 83


Complexitate
 Timp
 Calitatea euristicii h scade timpul necesar
 Cazul cel mai favorabil: h este perfectă, O(d)
 Cazul cel mai defavorabil: h = 0, O(bd) ~ BFS
 Spațiu
 Cazul cel mai defavorabil: O(nS), unde nS este
numărul de stări

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 84


Cazul cel mai defavorabil
 Exemplu de caz cel mai defavorabil pentru A* cu
euristici inconsistente: familia Martelli – G5
 O(2n) expandări de noduri pentru găsirea soluției pentru
calea de la n5 la n0

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 85


Optimizări
 Optimizarea listelor
 Căutarea celui mai bun nod, de fiecare dată, este ineficientă
 Lista deschisă trebuie să fie o listă sortată sau un arbore heap
 Lista închisă poate fi un tabel hash
 Optimizarea spațiului de căutare
 Cel mai simplu caz: parent pruning – evitarea expandării ca
succesor a părintelui unui nod, prin care s-ar reveni în starea
imediat anterioară
 Dacă se ignoră succesorii care au o stare deja vizitată, nu se
mai garantează optimalitatea algoritmului

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 86


Optimizări
 Aplicarea pe grid, de exemplu pentru jocuri, este costisitoare.
Factorul de ramificare este mare: 4, 8 sau 6 pentru grid
hexagonal. Există foarte multe stări dacă gridul este mare
 Multe căi au aceeași lungime. A* le poate explora pe toate.
Când valorile f sunt egale, se compară după valorile h
 Altă metodă pentru departajare: se preferă căile apropiate de
linia dreaptă între starea inițială și starea scop
 h poate fi mărită puțin, devenind neadmisibilă. Dacă funcția
rezultată h’ supraestimează rareori funcția h* cu o valoare mai
mare decât v, atunci algoritmul va găsi rareori o soluție al cărei
cost este mai mare cu v decât costul optim

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 87


Optimizări
 A* ierarhic cvasi-optim (Near-Optimal Hierarchical
Pathfinding, HPA*)

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 88


IDA*
 Căutarea iterativă în adâncime A*
(Iterative Deepening A*)
 Principiu similar cu acela al căutării iterative în
adâncime neinformate
 În loc de niveluri în arbore, se folosesc contururi
de cost ale funcției f
 În cadrul unui contur, se face o căutare în
adâncime

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 89


Pseudocod

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 90


Pseudocod

91
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm
Pseudocod

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 92


Algoritmul MM
 Algoritm euristic bidirecțional în care căutările se întâlnesc
garantat la mijloc (Bidirectional Search that Is Guaranteed
to Meet in the Middle)
 Algoritmul face două căutări similare cu A* din starea
inițială, respectiv finală, deschizând la un moment dat
nodul cu prioritatea cea mai mică din cele două cozi
 Prioritatea este definită drept: pr(n) = max(f(n), 2g(n))
 Termenul 2g împiedică nodurile să se depărteze foarte
mult de starea inițială, favorizând intersectarea la mijlocul
distanței

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 93


Crearea de euristici
 O euristică admisibilă poate fi costul soluției
optime a unei probleme relaxate prin eliminarea
constrângerilor
 Pentru navigarea unui robot:
 Distanța Manhattan corespunde eliminării obstacolelor
 Distanța euclidiană corespunde eliminării obstacolelor
și a constrângerilor de mișcare pe grid

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 94


Euristici pentru 8-puzzle
1 2 3
Starea
curentă 4 5 6
7 8 11 22 33
Numărul de căsuțe
diferite (fără a 44 55 66
include spațiul) 1 2 3
Starea 77 8 8
scop 4 5 6
7 8
N N N
Doar 8 este plasat diferit, deci funcția
euristică este evaluată la 1 N N N
Euristica ne spune că o soluție ar putea fi N D
găsită în (cel puțin) o mutare: h(scrt) = 1

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 95


Euristici pentru 8-puzzle
3 2 8 3 3
Starea
curentă 4 5 6 2 spații
Distanța 7 1
Manhattan (fără
a include spațiul) 8
1 2 3
Starea 3 spații
scop 4 5 6
8
7 8
1
Doar căsuțele 3, 8 și 1 sunt plasate greșit, deci
funcția euristică întoarce 8 3 spații
Euristica ne spune că o soluție ar putea fi 1
găsită în cel puțin 8 mutări: h(scrt) = 8
Total 8

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 96


Modalități suplimentare de
alegere a funcției euristice
 Abordarea maximă, cu m euristici diferite
 h(n) = max( h1(n), …, hm(n) )
 Abordarea statistică
 De exemplu, dacă în 90% din cazuri când h(n) = 14,
h*(n) = 18, atunci când valoarea lui h(n) este 14,
returnăm 18
 Complexitatea euristicii nu trebuie să afecteze
eficiența căutării

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 97


IDS vs. A*

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 98


Concluzii
 Metodele neinformate nu utilizează cunoștințe
specifice fiecărei probleme și deci tratează toate
problemele la fel
 Metodele informate sau euristice utilizează cunoștințe
specifice fiecărei probleme și expandează mai întâi
cele mai promițătoare noduri
 Funcțiile euristice care direcționează căutarea pot fi
construite prin simplificarea problemei inițiale, adică
eliminarea unor constrângeri

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 99