You are on page 1of 91

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.html

v2022.1
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.html 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.html 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.html
Probleme de căutare
 Neinformată
 Căutare în lățime: cele mai scurte căi în rețele sociale,
web crawling
 Căutare în adâncime: parcurgerea unor componente
ierarhice ordonate topologic
 Descoperirea fișierelor dintr-o structură de directoare
 Compilare inteligentă în proiecte mari, ținând seama de
dependențe: detecția ciclurilor
 Informată
 Găsirea rutelor pentru mașini, trenuri sau avioane
 Mutarea trupelor în jocuri video

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


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

Soluție
Seria de Spațiul de căutare
operatori
care trans-
(spațiul problemei)
Mulțimea tuturor stărilor care
formă starea
pot fi atinse prin aplicarea
inițială într-o
operatorilor disponibili
stare scop

Stare
scop
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.html 8
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.html 9
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.html 10


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.html 11


Presupuneri
 Mediul este static: rămâne neschimbat cu excepția efectelor
acțiunilor agentului / algoritmul
 Mediul este discret (sau discretizabil): are un număr finit de stări
 Mediul este accesibil (complet observabil): agentul / algoritmul
are informații complete și actuale despre starea mediului
 Mediul este determinist: orice acțiune are un singur efect
garantat

 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.html 12


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.html 13


Structuri de date

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


Structuri de date

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


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.html 16


Măsuri de performanță
 Completitudine
 Un algoritm este complet dacă găsește o soluție atunci când
există una
 Dacă nu există o soluție, algoritmul ar trebui să nu ruleze la
infinit
 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.html 17


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.html 18


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.html 19


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.html 20


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) celui mai superficial nod scop din


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

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


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.html 22


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.html 23


Căutarea bidirecțională
s

 Există două frontiere. Căutarea se termină când cozile se intersectează


 Complexitatea de timp și spațiu este O(bd/2) ≪ O(bd) dacă ambii arbori
au același factor de ramificare b
 Permite un număr dublu de niveluri față de căutarea în lățime
 Căutarea înapoi poate fi mai dificilă decât căutarea înainte (vezi
exemplul următor)
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.html 24
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.html 25


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.html 26


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.html 27


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.html 28


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.html 29


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.html 30


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ă deoarece poate intra în bucle infinite
 Este completă dacă 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.html 31
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.html 32


Pseudocod

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


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.html 34


Căutarea iterativă în adâncime

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


Căutarea iterativă în adâncime

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


Căutarea iterativă în adâncime

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


Pseudocod

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


Generarea soluției

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


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.html 40


Exemple: 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.html 41


15-puzzle: b = 2,13

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


Cubul Rubik: b = 13,5

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


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.html 44


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.html 45
Structura de date Nod

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


Pseudocod

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


Pseudocod

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


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. Alți algoritmi
4. Concluzii

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


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.html 50


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.html 51


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.html 52


Căutarea best-first
 Evaluează cât de bun (promițător) 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.html 53


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.html 54
Exemplu: căutarea greedy
(Arad – București)

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


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


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

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


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.html 59


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.html 60


Căutarea A*
 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.html 61


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.html 62


Structuri de date

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


Structuri de date

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


Pseudocod A* simplificat

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


Pseudocod A* optimizat

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


Pseudocod A* optimizat

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


67
Important: Algoritmul A* nu
expandează nodurile arborelui în
mod greedy, ci după valorile
funcției f ale nodurilor din lista
deschisă. Deoarece aceasta este
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.html 68


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.html 69


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.html 70
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.html 71


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
1 add to closed list: A (0+0:0)
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.html 72


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
1 successor(D): E (104+0:104)
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.html 73
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
1 successor(D): E (102+0:102)
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.html 74


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

h(p)  cost(p, c) + h(c) h(c)


 O euristică monotonă este și
admisibilă (inegalitatea în triunghi)

 O euristică monotonă devine din ce în ce mai precisă


cu cât înaintează în adâncimea arborelui de căutare
 În multe cazuri (dar nu întotdeauna), monotonia
euristicii accelerează găsirea soluției, deoarece
nodurile închise nu mai sunt redeschise
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.html 75
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.html 76


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.html 77


Efectul euristicilor monotone

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


Proprietăți
 A* este complet și optim dacă nodurile care
revizitează stările nu sunt eliminate
 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.html 79


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

În noduri: h()
Pe arce: cost()

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


 După expandarea lui n5 (fără pathmax), lista deschisă este:
n1 (11+0), n2 (9+3), n3 (6+7), n4 (1+13)
 Înainte de găsirea soluției, lista deschisă este: n0 (23+0), n0 (24+0),
n0 (25+0), n0 (26+0), n0 (27+0), n0 (28+0), n0 (29+0), n0 (30+0)
 Soluția: n5 - n4 - n3 - n2 - n1 - n0 , 17 noduri expandate
 Cu pathmax, după expandarea lui n5, lista deschisă este:
n1 (11+0:23), n2 (9+3:23), n3 (6+7:23), n4 (1+13:23)
 Dacă ordinea în care sunt adăugați în listă succesorii este cea mai
favorabilă (n4, n3, n2, n1), soluția este găsită doar cu 6 noduri
expandate
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.html 81
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 de hash (hashtable)
 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.html 82


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.html 83


Algoritmul HPA*
 A* ierarhic cvasi-optim (Near-Optimal Hierarchical
Pathfinding)

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


Algoritmul 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.html 85


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.html 86


Crearea de euristici
 O euristică admisibilă poate fi costul soluției
optime a unei probleme relaxate prin eliminarea
constrângerilor
 De exemplu, pentru navigare:
 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.html 87


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.html 88


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.html 89


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.html 90


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.html 91

You might also like