Sunteți pe pagina 1din 6

Tehnici de căutare

A. Căutare neinformată

Sarcina principală a sistemului de control este acela de a dezvolta o soluţie pentru


o anumită problemă. Pentru aceasta, algoritmul de căutare trebuie să asigure parcurgerea
grafului de stări pornind de la nodul iniţial până când se ajunge la nodul ţintă.
Nodurile sunt stările sistemului, iar producţiile sunt reprezentate prin operaţiile
efectuate pentru a trece de la o stare la alta. Sistemul de control va parcurge nodurile prin
efectuarea producţiilor, va compara fiecare nod cu starea ţintă şi, în momentul găsirii
acestuia, va reconstitui calea pe acele noduri şi acele producţii care au condus la rezultat.
Ca efect al acestei strategii se construieşte arborele de căutare care nu este altceva decât
acea parte a grafului stărilor care a fost verificată de sistemul de control. Nodul rădăcină
este stare iniţială, iar fiii fiecărui nod sunt stările care pot fi obţinute prin producţii asupra
nodului părinte. Fiecare arc care leagă două noduri este o producţie.

Parcurgerea unui graf de stări se poate face în două feluri:

1. În adâncime, parcurgând o ramură a grafului până la un nivel prestabilit - are


dezavantajul că este posibil să nu se ajungă la soluţie dacă aceasta este sub nivelul maxim
admis de căutare.

1
2. În lăţime, adică sunt parcurse toate stările pe un nivel şi dacă nu s-a găsit soluţia se
trece la nivelul următor.

Un exemplu pentru arborii de căutare ar fi modul de rezolvare al unui puzzle cu 8


cifre:

Pentru rezolvarea acestui puzzle o maşină fără gândire logică umană ar trebui să
mute numerele, efectuând toate mutările posibile dintr-o anumită stare (producţii), să
verifice stările obţinute şi dacă nu s-a găsit starea ţintă, să mai aplice câte o producţie pe
stările noi. În cazul nostru pe primul nivel (nivelul 0) ar fi trei producţii posibile : 2, 5 şi
6. Cele trei noduri obţinute, pe nivelul 1 cu 3 stări, la rândul lor nefiind stări ţintă, vor fi
supuse unor noi producţii rezultând alt nivel (2) cu 5 stări ş.a.m.d.. până când pe un nivel

2
oarecare (5) se obţine soluţia. Parcurgerea în acest exemplu s-a efectuat în lăţime. După
găsirea soluţiei se reconstituie acele producţii (se evidenţiază acele ramuri) care au
condus la rezultat.

Evident, metoda poate fi îmbunătăţită cu anumite condiţii “de bun simţ” cum ar fi:

- nu revenim la starea de dinainte; dacă pe o ramură ajungem la o stare care se regăseşte


deja pe o altă ramură (există această posibilitate) vom continua producţiile numai pe 
ramura care are deja subramuri (a fost deja dezvoltat).

Cu aceste reguli, soluţia finală se va obţine pe nivelul 5 având următoarele producţii:

Mută 5 în jos

Mută 3 la dreapta

Mută 2 în sus

Mută 5 la stânga

Mută 6 în sus

Primele trei nivele se pot observa pe figura următoare. Urmăriţi producţiile enunţate mai
sus şi verificaţi corectitudinea rezultatului (obs. ramura din stânga).

3
Exerciţiu: desenaţi arborele de căutare pentru următoarea stare iniţială:

B. Căutare euristică

Vom îmbunătăţi metoda noastră prin introducerea unor elemente care imită intuiţia
umană. Vom spune că acolo unde oamenii aplică reguli logice, sistemele artificiale aplică
reguli euristice. Vom identifica acele caracteristici pe care le iau în considerare oamenii
atunci când aleg calea. Oamenii tind să aibă în vedere ţinta şi tind spre opţiunea care le
aduce mai aproape de aceasta, gândind înainte. Pentru a aplica o asemenea metodă
trebuie să învăţăm sistemul să poată măsura care din stări care din producţii este mai
aproape de ţintă. O asemenea măsură se numeşte euristică.
Pentru jocul nostru de puzzle o asemenea euristică ar putea consta în “evaluarea
costurilor”. Prin acesta vom înţelege în acest caz (şi numai în acest caz, pentru alte
probleme vom stabili alte criterii) suma mutărilor necesare, dacă presupunem că la un

4
moment dat avem un singur număr pe suprafaţa de joc, pentru ca acesta să ajungă în
poziţia lui finală. Astfel, o cifră aflată într-o poziţie adiacentă poziţiei finale va fi la
distanţa 1, iar o cifră aflată lângă poziţia finală, dar pe diagonală va avea distanţa=2 (1
verticală + 1 orizontală). Fie de exemplu starea următoare:

Pentru această stare costul proiectat este de 7 (2,5,8 la distanţa 1; 3,6 la distanţa 2
=> 3x1+2x2=7)
Să aplicăm această euristică în modul următor: pornind de la starea iniţială
efectuăm producţiile posibile şi pentru stările obţinute vom calcula costurile. Vom
continua producţiile pe acea ramură care are costul de producţie minim (care promite cel
mai mult). Dacă după o nouă producţie obţinem stări cu costuri mai mari decât costurile
unuia din stările iniţiale, vom reveni la starea cu costul mai mic indiferent dacă acesta
este pe o ramură mai spre rădăcină şi care la un moment dat a fost abandonat, după cum
se poate observa şi în exemplul următor unde am plecat pe prima ramură (din stânga) cu
cost (4), dar pentru că am obţinut o stare cu cost mai mare (5) am revenit pe cealaltă
ramură cu cost (4) (dreapta).

5
Exerciţiu: Să se traseze graful stărilor folosind căutarea euristică pentru
următoarele stări iniţiale:

a)

1 2 3
4 8
7 6 5

b)

1 2 3
5 7 6
4 8

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