Sunteți pe pagina 1din 6

Universitatea “Politehnica” din Timisoara

Facultatea de Automatica si Calculatoare

PROIECT IASE
PUZZLE 3x3

Echipa 6:
Eliza-Mirela MOTORGA
Cristina DUMITRAȘCU
Anita FERICEL
Carina GHENGHIU
Simona COSTEA
Raul BIRĂU

- 2018 -
Enunțul problemei:

Se consideră un puzzle 3x3 cu următoarele caracteristici:


 Stare inițială: orice aranjare a pieselor din careu care este punctul de plecare al
problemei;
 Stare finală: orice aranjare prestabilită a pieselor;
 Stare intermediară: starea prin care algoritmul ajunge din starea inițială în cea
finală;
 Operatori: toate mutările posibile ale spațiului liber - stânga, dreapta, sus, jos.
 Rezolvare: găsirea unui drum prin spațiul stărilor de la starea inițială la starea
finală prin aplicarea operatorilor( deci mutările care trebuie făcute pentru a ajunge
de la configurația care se dă la configurația care se cere);
 Spațiul stărilor: numărul de variante posibile pentru a aranja piesele pe tablă,
anume permutări de 9( 9!= 362880 stări). Dimensiunea spațiului stărilor pentru
un puzzle de n piese este O(n!).

Să se aplice:
1. Căutarea pe nivel(BREADTH-FIRST);
2. Căutarea în adâncime(DEPTH-FIRST);
3. Căutarea cu cost uniform(UNIFORM COST);
4. Căutarea în adâncime iterativă(ITERATIVE-DEEPENING);
5. Căutarea informată BEST-FIRST.

Să se compare strategiile de căutare din punct de vedere al performanțelor


cantitative( timp, spațiu) și calitative( optimalitate, completitudine).

1
1. Căutarea pe nivel
Căutarea pe nivel, numită și breadth-first, este cea mai simplă strategie de
căutare. Aceasta explorează nodurile în ordinea nivelelor, altfel spus nodurile de pe
nivelul d sunt explorate înaintea nodurilor de pe nivelul d+1.

Această căutare are la bază o strategie de tip coadă(FIFO).

Avantaj: găsește soluția de lungime minimă, este completă și optimală.

Dezavantaj: resursele de memorie necesare sunt foarte mari, acestea crescând


exponențial cu nivelul de adâncime explorat.

Implementare: Strategia breadth-first poate fi ușor implementată folosind o


structură de tip coadă(queue) în care la fiecare pas se extrage din coadă nodul
curent și se adaugă la sfârșit nodurile rezultate din explorarea nodului curent.

2. Căutarea în adâncime
Strategia de căutare în adâncime, numită și depth-first, este alternativă pentru a
reduce consumul ridicat de memorie de la căutarea pe nivel. Numai când se ajunge
la final(la nodurile frunză), căutarea se întoarce și expandează noduri de la nivele mai
puțin adânci.

Avantajul major al strategiei de căutare în adâncime este faptul că necesitățile


de memorie sunt minimale, complexiatea de spațiu fiind liniara și nu exponențială ca
la strategia de căutare pe nivel. Dezavantajul major este că strategia nu este nici
optimală nici completă ( daca arborii sunt infiniți). Nu este optimală deoarce găsește
soluția la adâncimea cea mai mare și nu ține cont de costuri.

Implementare: Căutarea în adâncime se implementează ușor folosind o stivă în


care sunt adăugate, la început, nodurile care rezultă din explorarea nodului curent și
tot așa.

3. Căutarea cu cost uniform


Strategia funcționează similar cu strategia de căutare pe nivel doar că de această
dată nodurile sunt explorate nu în ordinea nivelelor ci în ordinea costurilor
explorându-se întotdeauna nodul cel mai ieftin. În cazul în care costul operatorilor
este egal, strategia de căutare cu cost uniform se comportă exact ca și strategia de
căutare pe nivel.

Strategia de căutare cu cost uniform este completă datorită faptului că costul


este strict crescător odată cu adâncimea în arbore făcând ca ciclurile să fie evitate.
Este optimală în funcție de cost cu excepția situației când apar costuri negative în
arbore.

2
Implementare: Se implementează folosind o listă sortată crescător după costuri.

Avantajul strategiei constă în faptul că este completă și optimală chiar și atunci


când costul nu este strict crescător cu nivelul. Dezavantajul insă este că are necesități
de memorie ridicare, la fel ca in cazul lui breadth-first.

4. Căutarea în adâncime iterativă


Strategia îmbină cele mai bune caracteristici de la căutarea în adâncime și
căutarea pe nivel. Acest tip de căutare este preferat când spațiul de căutare este
foarte mare și nu se cunoaște adâncimea soluției. Costul - unele stări sunt expandate
de mai multe ori.

Este optimală și completă la fel ca strategia de căutare pe nivel și are necesități


scăzute de memorie la fel ca strategia de căutare în adâncime.

Dezavantajul este că fiecare nod este parcurs de mai multe ori.

5. Căutarea informată BEST-FIRST


Această strategie folosește o euristică pentru a estima distanța de la starea
curentă la starea finală și se notează de obicei cu h(n). Rolul eurisiticilor este de a
preveni ca o strategie să caute “în întuneric” încercând să deschidă o cale mai bună,
mai scurtă, către starea finală. Strategiile euristice de căutare se mai numesc şi
strategii informate de căutare.

Spre exemplu, pentru un puzzle h(n) poate fi numărul de piese aflate în pozitii
greşite sau suma distanţelor pieselor până la poziţia lor finală, sumă evaluată ca
suma distanţelor Manhattan a fiecărei piese până la poziţia ei finală (distanţa
Manhattan se mai numeşte şi “city block distance” şi este distanţa în linie dreaptă
fără a merge în diagonală).

Strategia Best-First este un model idealizat de strategie de căutare euristică.


Aceasta presupune explorarea nodului şi alegerea ca successor a celui mai bun nod.

Avantajul constă în minimizarea necesităților de timp si spațiu.

3
Pentru a compara aceste strategii de căutare am folosit problema puzzle-ului
3x3 pe care am rezolvat-o cu ajutorul acestora.

S-au folosit 3 metode de rezolvare a puzzle-ului: EASY, MEDIUM și HARD.

Așadar, în funcție de metodele de rezolvare a puzzle-ului, căutările au avut


următoarele rezultate:

Tranziții Stări Costul Timp Optimală Memorie Completă


pâna la vizitate soluției
starea Aprox.
finală

Pe nivel 2 14 15 15ms DA MARE DA

În 13170 180688 59789 1000ms NU MICĂ DA


adâncime

Cost 2 28 15 12ms DA MARE DA


uniform

Adâncime 2 3 15 16ms DA MICĂ DA


iterativă

Best first 2 5 15 15ms DA MICĂ DA

Tabel 1. Metoda EASY de rezolvare a puzzle-ului.

Tranziții Stări Costul Timp Optimală Memorie Completă


pâna la vizitate soluției
starea
finală

Pe nivel 2 20 13 16ms DA MARE DA

În 1580 3171 7073 78ms NU MICĂ DA


adâncime

Cost 2 39 13 16ms DA MARE DA


uniform

Adâncime 2 5 13 62ms DA MICĂ DA


iterativă

Best first 2 7 13 31ms DA MICĂ DA

Tabel 2. Metoda MEDIUM de rezolvare a puzzle-ului.

4
Tranziții Stări Costul Timp Optimală Memorie Completă
pâna la vizitate soluției
starea
finală

Pe nivel 2 20 13 614ms DA MARE DA

În 1580 3171 7073 924ms NU MICĂ DA


adâncime

Cost 28 146248 106 1039ms DA MARE DA


uniform

Adâncime 30 82908 130 765ms DA MICĂ DA


iterativă

Best first 72 1264 290 109ms DA MICĂ DA

Tabel 3. Metoda HARD de rezolvare a puzzle-ului.

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