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 etc.
 Găsirea rutelor și rezervarea biletelor pentru avioane,
trenuri etc.
 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 o mulțime nevidă de stări inițiale
 G  Q este o mulțime nevidă de stări scop
 succs : Q  (Q) reprezintă mulțimea de stări care pot fi
atinse din starea 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 din starea s
în starea 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

G

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

G

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 11
Existența soluției

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 12
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 13
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 14
Presupuneri
 Mediul este static
 Mediul este discret (sau discretizabil)
 Mediul este accesibil (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 15
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 16
Structuri de date

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

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 18
Metoda de căutare
 Frontiera (engl. “fringe”) este mulțimea tuturor
nodurilor care nu au fost încă expandate
 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 19
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 20
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 21
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 22
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 23
Parametri importanți
 Numărul maxim de succesori ai oricărei stări
 Factorul de ramificare (engl. “branching factor”)
b al arborelui de căutare
 Lungimea minimă (≠ cost) a căii între starea
inițială și o stare scop
 Adâncimea (engl. “depth”) d a celui mai
superficial nod scop din arborele de căutare

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 24
Evaluarea performanțelor
 Căutarea în lățime este:
 Completă
 Optimă dacă un pas are costul 1
 Numărul de noduri generate (cazul cel mai defavorabil)
 N = 1 + b + b2 + … + bd = O(bd)
 Complexitatea de timp și de spațiu este O(bd)
 Numărul de noduri generate (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 25
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 26
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 27
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 28
Problema cănilor cu apă:
căutare înainte
 În figură se prezintă
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 29
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 soluție optimă
unică, ea poate fi atinsă
pe două căi diferite

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 30
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 31
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
 Vor exista 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 32
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 33
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ă
 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 34
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 35
Pseudocod

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 36
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 37
Căutarea iterativă în adâncime

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 38
Căutarea iterativă în adâncime

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 39
Căutarea iterativă în adâncime

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

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 41
Generarea soluției

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 42
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 43
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 44
15-puzzle: b = 2.13

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 45
Cubul Rubik: b = 13.5

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 46
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 47
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 48
Structura de date Nod

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

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

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 51
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 52
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*
3.3. Algoritmul MM
4. Concluzii

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 53
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 54
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 55
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 56
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 ordine
crescătoare a lui f
 Pentru f egale, se decide aleatoriu

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 57
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 58
Exemplu: căutarea greedy

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

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 61
Caracteristicile căutării greedy
 Nu este optimă
 Este incompletă

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 62
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
 Soluția optimă poate fi trecută cu vederea

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 63
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 64
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: OPEN și CLOSED
 Mulțimea nodurilor din lista OPEN reprezintă frontiera,
iar cele din lista CLOSED nodurile deja vizitate

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 65
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 66
Structuri de date

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

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

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

70
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 71
Revizitarea stărilor
 Euristica h este
c=1 2
admisibilă
h = 100 1

2
1  Într-o situație reală, nodul cu
90 h = 1 ar putea fi lângă scop,
100 dar despărțit de acesta de
un obstacol
0

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 72
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 sub-optimă
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 73
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 74
Cum funcționează A*
A B(101), C(3)
1 2 C(3), B(101) – sortată după f
B(101), D(94)
100 B C 1 D(94), B(101) – sortată după f
B(101), E(104)
2 E(104), D(92)
1
D 90 D(92), E(104) – sortată după f
E(104), E(102)
100 E(102), E(104) – sortată după f
Scop: E(102)
E 0

Noduri introduse, noduri scoase
în/din coada de priorități
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 75
Euristici monotone
 O euristică h este monotonă
p
(sau consistentă) dacă:
cost(p,c)
 p și un fiu c 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 76
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 77
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 78
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 79
Efectul euristicilor monotone

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 80
Caracteristicile căutării A*
 A* este complet și optim
 Dacă nodurile care revizitează stările nu sunt eliminate
 A* este optim eficient (engl. “optimally efficient”)
 Niciun alt algoritm de același tip nu garantează expandarea
unui număr mai mic de noduri
 Este optim eficient doar dacă euristica este monotonă
 Alți algoritmi pot fi mai rapizi chiar dacă expandează mai
multe noduri

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 81
Complexitatea A*
 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
 Toate nodurile sunt memorate
 Cazul cel mai defavorabil: O(nS), unde nS este numărul de
stări
 A* are în general probleme de spațiu înainte de a
avea probleme de timp

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 82
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

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 83
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 (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 84
Optimizări
 Aplicarea pe grid, de exemplu pentru jocuri, este costisitoare.
Există foarte multe stări dacă gridul este mare
 Factor de ramificare mare: 4, 8 sau 6 pentru grid hexagonal
 Multe căi au aceeași lungime. A* le poate explora pe toate.
Când valorile f sunt egale, se compară după valorile h
 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
 Altă metodă pentru departajare: se preferă căile apropiate de
linia dreaptă între starea inițială și starea scop

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 85
Optimizări
 A* ierarhic cvasi-optim (engl. “Near-Optimal
Hierarchical Pathfinding”, HPA*)

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 86
IDA*
 Căutarea iterativă în adâncime A*
(engl. “Iterative Deepening A*”)
 Principiu similar cu acela al căutării iterative în
adâncime neinformate
 În loc de niveluri în arbore, folosește contururi de
cost ale funcției f
 În cadrul unui contur, face o căutare în adâncime

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

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

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

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 90
Algoritmul MM
 Algoritm euristic bidirecțional în care căutările se întâlnesc
garantat la mijloc (engl. “Bidirectional Search that Is
Guaranteed to Meet in the Middle”)
 https://webdocs.cs.ualberta.ca/%7Eholte/Publications/MM-AAAI2016.pdf

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

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm
92
Algoritmul MM
 ε = costul muchiei celei mai scurte a problemei
 F = forward, B = backward
 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
 prmin este valoarea minimă a funcției pr, analog fmin și gmin pentru
funcțiile f și g
 Algoritmul face 2 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 2 cozi (C)
 U este costul celei mai bune soluții găsite până la un moment dat
 U este actualizat când se găsește o soluție mai bună

Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.htm 93
Crearea de euristici
 O euristică admisibilă poate fi costul soluției
optime al 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