Sunteți pe pagina 1din 47

Metode de

cautare
informata
Lector. dr. Luciana Morogan

ATM
Cautare neinformata (blind search)
- recap. -
• Solutii
o Generare (stare_curenta) = stari_noi
o Test (stari_noi) = stare_scop?

• Ordinea de expandare a nodurilor => Strategia de cautare

• NEXT... strategiile de cautare informata


o utilizeaza cunostinte specifice problemei pentru a gasi
solutiile in mod eficient
Cautarea informata (1)

Cunostintele aditionale despre problema sunt adaugate la functia care decide


nodurile ce vor fi expandate !
Cautarea informata (2)

• Pentru fiecare nod n, se calculeaza f(n)


(functie de evaluare in decizia in expandarea nodurilor)
=> n1,…, nk pt expandare

• Se ordoneaza nodurile astfel incat cel cu cea mai buna


evaluare este expandat primul

=> Strategia de cautare: intai cel mai bun


Strategia intai cel mai bun (best first)

• Algoritmul general de cautare: permite orice tip de cautare


preferat de utilizator: neinformata sau euristica

• Plecand de la nodul initial, se inainteaza preferential de-a


lungul unor noduri pe care informatia euristica (specifica
problemei) le indica drept aflandu-se pe drumul cel mai bun
catre un scop
Algoritmul general de cautare: Graphsearch

• Creeaza arborele de cautare Tr ce consta numai din nodul de start n0.


Introdu n0 in lista ordonata OPEN

• Creeaza lista CLOSED initial vida

• Daca OPEN = [ ] atunci exit (esec)

• Daca OPEN =/= [ ] atunci:


o selecteaza primul nod n din OPEN
o sterge n din OPEN
o include n in CLOSED

• Daca Test(n) = scop, atunci succes si stop


Solutia: parcurgerea in sens invers a unui drum de-a lungul arcelor (create la pasul urmator)

• Se extinde n => M = {succesori}.


o Include M in Tr prin creearea de arce de la n la fiecare membru al lui M

• Reordoneaza OPEN fie in concordanta cu un plan arbitrar, fie in mod euristic

• Se reia de la pasul 3

Obervatie!
Pentru best-first, OPEN se reordoneaza in functie de meritele euristice ale nodurilor!
Altfel spus... Algoritmul best-first...

functia best_first(problema, evaluare) intoarce solutie sau esec


noduri = genereaza_coada(genereaza_nod(stare_initiala[problema]))
f_coada = o functie care ordoneaza nodurile dupa criteriul eval

Cat timp (este posibil) executa


Daca noduri = vida atunci
intoarce esec
nod = scoate_din_fata (noduri)
Daca test_scop[problema] se aplica la stare(nod)
Atunci intoarce nod
Altfel noduri = adauga(noduri, expandare(nod, f_coada))
Sfarsit cat timp
Intrebari utile

• Cum directionez cautarea?


Intrebari utile

• Cum directionez cautarea?

Raspuns: in evaluarea nodului trebuie sa incorporez costul


drumului de la starea curenta pana la starea scop

• Doua abordari:

o Cautarea Greedy
o Cautarea A*
Best-first -> Greedy
• Ideea de baza: minimizarea costului de atingere a scopului
(de la starea curenta la scop)

• Nodul care reprezinta starea cea mai aproape de starea tinta


este expandat primul

• La cele mai multe probleme, costul de a ajunge de la o stare


la starea finala nu poate fi determinat exact, ci estimat

• Functia care estimeaza costurile s.n. functie euristica (h)


o h(n) = costul estimat pentru cel mai scurt drum de n la scop
o Daca n este chiar scop, atunci h(n) = 0

• O cautare best first care utilizeaza asemenea functie euristica


se numeste cautare greedy
Distantele pana la Bucuresti: h(n)

• h(n) = distanta in linie dreapta de la orasul n pana la Bucuresti


Greedy (1)
Greedy (2)
Greedy (3)
Greedy (4)
Greedy (5)

• Totusi, solutia nu este optimala:


o Sibiu -> Fagaras -> Bucuresti este cu 32 km mai mult decat
o Sibiu -> Rimnicu Vilcea -> Pitesti -> Bucuresti

• De ce nu a fost aleasa calea mai convenabila?...


o Pentru ca Fagaras este mai aproape de Bucuresti in linie dreapta
decat Rimnicu Vilcea!

• !!! Greedy, in general, gaseste solutia rapid insa nu intotdeauna


pe cea mai buna
Greedy (6) – dezavantaj
• Cautarea Greedy poate avea starturi gresite:

o Exp: daca vrem sa ajungem din Iasi in Oradea?


• functia euristica va expanda intai nodul Neamt care se
inchide => Iasi ->Neamt -> Iasi-> Neamt…
• !!! Daca nu formulam atent problema pentru a nu face
pasi repetitivi, cautarea poate oscila la infinit intre Neamt
si Iasi

Solutia:
deplasare Vaslui,
(nod mai departat) de nodul tinta - conform cu euristica – si sa
Urziceni, Bucuresti…
Greedy (7)

• Similar cu cautarea in adancime


o Merge pe un singur drum pana la capat si, daca nu gaseste
nodul tinta, se intoarce pentru a alege un alt drum

o NU este optimal si ESTE incomplet


(pentru ca poate alege un drum infinit => nu se mai intoarce pentru
a alege alte posibilitati)

Agoritm:

• Complexitatea temporala si spatiala: O(bm), unde


o b este numarul de noduri in care se expandeaza fiecare nod

o m este adancimea maxima a spatiului de cautare


Cautarea cu cost uniform
• Cautarea Greedy minimizeaza costul estimat catre tinta h(n), ceea
ce face sa scada considerabil costul cautarii
o Nu este insa nici optimala, nici completa!

Vs.

• Cautarea cu cost uniform minimizeaza costul drumului pana la


momentul curent folosind g(n)
o Este optimala si completa insa poate fi ineficienta!

• Echivalenta cu cautarea in latime cu toate costurile egale


o Extinde nodul de cost minim

• Este aleasa, dc. exista, calea de cost minim


=> Solutia de cost minim va fi gasita garantat
Dorim: Arad -> Rimnicu Vilcea

• Descendentii sunt asezati in ordine crescatoare a distantei fata


de nodul curent
• Extind cel cu valoarea cea mai
mica
Cautarea A*
• Combinarea celor doua strategii anterioare => o functie care
tine cont si de costul de pana acum in drumul considerat si de
costul estimat pana la tinta:

f(n) = g(n) + h(n)

o g(n) - costul drumului de la starea initiala pana la n


o h(n) - estimeaza costul celui mai convenabil drum de la n la
scop

o => f(n) = costul estimat al celei mai convenabile solutii prin n

• Algoritm complet si optimal


o Conditie! h nu supraestimeaza costul de atingere a solutiei
(euristica admisibila)
Algoritm:

• Complexitatea spatiala: toate nodurile sunt retinute in


memorie

• Complexitatea temporala: O(bm)

• Este complet si optimal daca h nu supraestimeaza costul


pana la starea tinta
Functii euristice
• Pentru problema de gasirii de rute: distanta in linie dreapta dintre
2 orase

• Alegerea functiilor euristice depinde de la o problema la alta

• Complexitatile temporala si spatiala depind de alegerea functiei


euristice => alegerea potrivita depinde de studiul spatiului starilor
problemei

• Evaluarea functiei euristice: anumite caracteristici ale starii


curente

Exemplu: ce caracteristici ar fi elocvente in cazul functiei euristice


pentru jocul de sah?

Chiar daca starea tinta este sah mat, se poate tine cont de…
• Numarul de piese pe care il au fiecare din cei doi jucatori
• Numarul de piese ce pot fi atacate de catre piesele
adversarului
• Tipul pieselor pe care le are fiecare din cei doi jucatori...
? Functia euristica ce nu supraestimeaza

nr. pasilor pana la scop?

Fie h1 = numarul de cifre care sunt gresit


pozitionate =>

Fie h2 = suma mutarilor necesare pentru ca toate cifrele sa ajunga la


scop ca si cum toate celelalte casute ar fi goale
(Deplasarile se pot face numai pe orizontala si verticala)

=1+0+0+1+2+1+1=6
Efectul functiilor euristice asupra performantei algoritmului:

• Factorul de ramificare b* afecteaza in mod direct performanta

• Daca
o numarul total de noduri expandate este N
o solutia se gaseste la adancimea d

Atunci b* este factorul de ramificare (in cate noduri se expandeaza fiecare


nod) pe care l-ar avea un arbore uniform de adancime d cu N noduri:
N = 1 + b* + (b*)2 + … + (b*)d

• O euristica este cu atat mai bine definita cu cat numarul nodurilor in care se
expandeaza fiecare nod este mai mic

• b* trebuie sa fie cat mai aproape de 1!


Exemplu

• Stari: 4 dame in 4 coloane (256 de stari posibile)

• Actiuni: muta o dama pe coloana

• Stare tinta: sa nu se atace damele reciproc

• h(n) = numarul de perechi de dame care se ataca reciproc


ITERATIVE
IMPROVEMENT
ALGORITHMS
• In multe probleme de optimizare, drumul catre tinta este
irelevant

• Exp.
o Pb damelor: se pleaca cu 8 dame pe tabla de sah. Dorim
mutarea acestora astfel incat sa nu se atace reciproc.
o Pb rutarii cablurilor prin anumite canale: Dorim mutarea cablurilor
dintr-un canal in altul pentru evitarea congestiei acestora.

• Ideea: se pleaca de la o configuratie completa si se fac


modificari pentru imbunatatirea calitatii configuratiei!!!

• Consideram starile unei probleme intinse pe suprafata unui


peisaj 3D
o Inaltimea fiecarui punct corespunde functiei de evaluare a starii
in acel punct
• Ideea acestei clase de algoritmi:
De a gasi in peisaj acele puncte cele
mai inalte care sa reprezinte solutii
optime

Se cauta acele puncte din


imediata vecinatate, ceea ce
conteaza este starea curenta

a urca Everestul pe o ceata cumplita suferind, in plus, de


amnezie

Acesti alg. se aleg pt probleme practice grele!

Clase:
• Hill-climbing (gradient ascendent) – daca functia de evaluare
trebuie vazuta drept cost mai mult decat dpdv calitativ – se
incearca modificari pt imbunatatirea starii curente
• Simulated annealing
Hill-climbing
bucla ce se misca continuu in
directia valorilor crescatoare

• Nu exista arbore de cautare


• Structura de date de tip nod:
starea si evaluarea acesteia
(VALUE)

• Daca exista mai mult decat un singur cel mai bun succesor, atunci algoritmul
alege unul random => drawbacks:
o Maximul local (in comparatie cu cel global) poate fi mai mic decat
puctul cel mai sus in spatiul starilor si algoritmul se poate opri chiar daca
este departe de o solutie satisfacatoare

o Platoul: arie a spatiului starilor in care functia de evaluare este plata si


cautarea va conduce o miscare aleatoare plata

o Pot exista muchii ce pot avea parti alunecoase in care cautarea poate
oscila de pe o parte pe alta cu progrese putine
• Algoritmul poate ajunge in puncte in care nu se fac progrese => se reia
cautarea din alt punct de plecare

• Solutia:
o Random restart pentru o serie de cautari hill-climbing
• Start: stari initiale alese aleator
• Stop: cand cautarea se opreste sau nu se fac progrese considerabile

o Se salveaza cel mai bun rezultat gasit in aceste reiterari ale cautarii

o Reiterarea se opreste
• la un numar maxim de runde alese initaial SAU
• cand in urma unor reiterari succesive rezultatul intors nu se modifica
considerabil

• La un numar de iteratii admis suficient de mare, algoritmul garanteaza gasirea


unei solutii optime

• Succesul strategiei depinde de forma spatiului de stari (suprafetei de stari): la


un numar rezonabil de puncte de maxim local, restartul aleator va gasi rapid
o solutia foarte buna

o Exp. Pentru o pb NP-completa, se estimeaza gasirea unei solutii intr-un


timp de calcul exponential
Simulated annealing

• La blocarea intr-un maxim local, algoritmul permite


cautarii sa coboare “dealul” cu cativa pasi.

• TEMA
Concluzii
• Cautarea best-first = CAUTARE GENERALA in care nodurile considerate de cost minim (in urma
evaluarii) sunt expandate primele

• Daca minimizam costul estimat pt atingerea scopului, h(n) => cautare de tip greedy
o Algoritm care nu este nici optim si nici complet
o Timpul de cautare este mai scazut decat in cazul cautarii de cost uniform

• Daca minimizam f(n) = g(n) + h(n) (combinand cautarea de cost uniform si greedy) si garantam
ca h(n) nu supraestimeaza costul de atingere a solutiei => cautarea de tip A*
o A* este complet, optimal si eficient

• Complexitatea temporala a algoritmilor euristici depinde de calitatea functiei euristice alese


o O euristica buna poate fi construita prin examinarea definirii problemei sau prin
generalizarea din experienta clasei de prbleme in care se poate incadra

• Algoritmii pentru imbunatatirile iterative pastreaza in memorie o singura stare a problemei, insa
se pot bloca intr-un maxim local. Simulated annealing ofera modalitatea de a scapa dintr-un
astfel de punct si poate fi complet si optim sub anumite constrangeri (ramase tema ☺ )
Exercitii
Se considera problema gasirii drumului cel mai scurt dintre doua puncte dintr-un plan cu
obstacole convexe. Scena cu obstacolele poligonale reprezinta problema pe care un robot
trebuie sa o rezolve pentru a putea naviga intr-un mediu aglomerat.

1. Presupunem ca spatiul starilor consta in toate pozitiile (x,y) din plan. Precizati cate astfel
de stari exista. Cate cai exista pana la atingerea unui scop?

2. Explicati de ce drumul cel mai scurt dintr-un varf poligonal catre oricare altul consta in
segmente de linie dreapta ce unesc anumite muchii ale poligoanelor. In acest moment
definiti un bun spatiu al starilor problemei. Cat este de mare acest spatiu?
3. Definiti functiile necesare implementarii problemei de cautare, incluzand si o functie
succesor ce ia ca intrare un nod si returneaza multimea muchiilor care pot fi atinse in linie
dreapta de la nodul dat. (A nu se uita vecinii din acelasi poligon.) Folositi distanta in linie
dreapta pentru functia euristica.

4. Implementati un algoritm euristic discutat. Aplicati apoi acest algoritm pentru rezolvarea
diferitelor instante ale acestei probleme.

5. In acelasi context analizati hill-climbing. Vom plasa agentul in acest mediu si si acesta va
trebui sa isi gaseasca drumul pana la scop.
a. Implementati un mediu pentru evaluare. Comportamentul mediului:
- La fiecare ciclu, perceptia confera agentului o lista cu locurile pe care le poate vedea
din pozitia curenta. Fiecare loc este reprezentat de un vector pozitie (cu componentele
x si y) ce ofera coordonatele locatiei relative la agent. (DECI: depinde de agent a afla
pozitia sa curenta in plan. Acesta poate presupune ca toate pozitiile au un “view” diferit
☺)
- Actiunea returnata de catre agent va fi reprezentata de vectorul care va descrie drumul
in linie dreapta pe care va trebui sa il urmeze (coordonatele relative ale locului in care
doreste sa mearga). Daca miscarea nu va provoca lovirea nici unui obstacol, atunci
mediul va trebui sa “miste” agentul si sa ii ofere acestuia o noua perceptie potrivita
pentru urmatoarea locatie in care acesta va trebui miscat. Altfel, agentul ramane pe
loc. La o reiterare a algoritmului, mediul va trebui sa mute agentul intr-un varf nou, la
intamplare (intai se alege aleator un poligon si apoi un varf al acestuia tot la intamplare).
Se poate bloca agentul intr-un punct de maxim local?

b. Implementati o functie agent care opereaza in acest mediu dupa cum


urmeaza:
- Daca nu stie unde se afla, agentul va trebui sa calculeze propria pozitie in functie de
perceptia mediului.
- Daca stie unde se afla si nu are un plan, trebuie sa-si calculeze un plan pentru a ajunge
acasa, la scop, folosind un algoritm de cautare.
- Odata ce stie unde se afla si are si un plan de actiune, trebuie sa intoarca actiunea
potrivita cnform planului .

c. Realizati ca mediul si agentul sa lucreze impreuna. Mediul trebuie sa afiseze


anumite mesaje pentru utilizator pentru a se putea urmari evolutia problemei.

S-ar putea să vă placă și