Sunteți pe pagina 1din 58

UNIVERSITATEA BABE-BOLYAI

Facultatea de Matematic i Informatic

INTELIGEN
ARTIFICIAL
Rezolvarea problemelor de cutare
Strategii de cutare neinformat

Laura Dioan

Sumar
A. Scurt introducere n Inteligena Artificial (IA)
B. Rezolvarea problemelor prin cutare

Definirea problemelor de cutare


Strategii de cutare

C.

Strategii de cutare neinformate


Strategii de cutare informate
Strategii de cutare locale (Hill Climbing, Simulated Annealing, Tabu Search, Algoritmi
evolutivi, PSO, ACO)
Strategii de cutare adversial

Sisteme inteligente

Sisteme bazate pe reguli n medii certe


Sisteme bazate pe reguli n medii incerte (Bayes, factori de
certitudine, Fuzzy)
Sisteme care nva singure

Arbori de decizie
Reele neuronale artificiale
Maini cu suport vectorial
Algoritmi evolutivi

Sisteme hibride

Martie, 2014

Inteligen artificial - metode de cutare neinformat

Sumar

Probleme

Rezolvarea problemelor

Pai n rezolvarea problemelor

Rezolvarea problemelor prin cutare

Pai n rezolvarea problemelor prin cutare


Tipuri de strategii de cutare

Martie, 2014

Inteligen artificial - metode de cutare neinformat

Materiale de citit i legturi utile

capitolele I.1, I.2 i II.3 din S. Russell, P. Norvig, Artificial


Intelligence: A Modern Approach, Prentice Hall, 1995

capitolele 1 i 2 din C. Groan, A. Abraham, Intelligent


Systems: A Modern Approach, Springer, 2011

capitolele 2.1 2.4 din http://wwwg.eng.cam.ac.uk/mmg/teaching/artificialintelligence/

Martie, 2014

Inteligen artificial - metode de cutare neinformat

Probleme

Dou mari categorii de probleme:

Rezolvabile n mod determinist

Calculul sinusului unui unghi sau a rdcinii ptrate


dintr-un numr

Rezolvabile n mod stocastic

Martie, 2014

Probleme din lumea real proiectarea unui ABS


Presupun cutarea unei soluii metode ale IA

Inteligen artificial - metode de cutare neinformat

Probleme

Tipologie

Probleme de cutare/optimizare
intrri

Probleme de modelare

Planificare, proiectarea sateliilor

model

ieiri

Predicii, clasificri

intrri

model

ieiri

Probleme de simulare

Martie, 2014

Teoria jocurilor economice

intrri

Inteligen artificial - metode de cutare neinformat

model

ieiri

Rezolvarea problemelor

Const n identificarea unei soluii

n informatic (IA) proces de cutare


n inginerie i matematic proces de optimizare

Cum?

Martie, 2014

Reprezentarea soluiilor (pariale) puncte n spaiul


de cutare
Proiectarea unor operatori de cutare transform o
posibil soluie n alt soluie

Inteligen artificial - metode de cutare neinformat

Pai n rezolvarea problemelor

Definirea problemei

Analiza problemei

Alegerea unei tehnici de rezolvare

cutare
reprezentarea cunotinelor
abstractizare

Martie, 2014

Inteligen artificial - metode de cutare neinformat

Rezolvarea problemelor prin cutare

bazat pe urmrirea unor obiective

compus din aciuni care duc la


ndeplinirea unor obiective

fiecare aciune modific o anumit stare a


problemei

succesiune de aciuni care transform


starea iniial a problemei n stare final

Martie, 2014

Inteligen artificial - metode de cutare neinformat

Pai n rezolvarea problemelor prin cutare


Definirea problemei

Definirea problemei implic stabilirea:

unui spaiu de stri

toate configuraiile posibile, fr enumerarea obligatorie a tuturor configuraiilor

reprezentare

explicit construirea (n memorie) a tuturor strilor posibile


implicit utilizarea unor structuri de date i a unor funcii (operatori)

unei/unor stri iniiale

unei/unor stri finale - obiectiv

unui/unor drum(uri)

succesiuni de stri

unui set de reguli (aciuni)

funcii succesor (operatori) care precizeaz starea urmtoare a unei stri

funcii de cost care evalueaz

Martie, 2014

trecerea dintr-o stare n alta


un ntreg drum

funcii obiectiv care verific dac s-a ajuns ntr-o stare final

Inteligen artificial - metode de cutare neinformat

10

Pai n rezolvarea problemelor prin cutare


Definirea problemei

Exemple

Joc puzzle cu 8 piese

Spaiul strilor configuraii ale tablei de


joc cu 8 piese

Starea iniial o configuraie oarecare

Starea final o configuraie cu piesele


aranjate ntr-o anumit ordine

7 2 1
5 6
3 8 4

Martie, 2014

Reguli aciuni albe


Condiii: mutarea n interiorul tablei
Transformri: spaiul alb se mic n sus, n jos,
la stnga sau la dreapta

1 2 3
4 5 6
7 8

Soluia secvena optim de aciuni albe

Inteligen artificial - metode de cutare neinformat

11

Pai n rezolvarea problemelor prin cutare


Definirea problemei

Exemple

Joc cu n dame

Spaiul strilor configuraii ale tablei de joc


cu n regine

Starea iniial o configuraie fr regine

Starea final o configuraie cu n regine care nu se atac

h
1
2
3
4
5
6
7
8

Martie, 2014

1
2
3
4
5
6
7
8

Reguli amplasarea unei regine pe tabl


Condiii: regina amplasat nu este atacat de nici o regin
existent pe tabl
Transformri: amplasarea unei noi regine ntr-o csu de pe
tabla de joc
Soluia amplasarea optim a reginelor pe tabl

Inteligen artificial - metode de cutare neinformat

12

Pai n rezolvarea problemelor prin cutare


Analiza problemei

Se poate descompune problema?

Sub-problemele sunt independente sau nu?

Universul strilor posibile este predictibil?

Se dorete obinerea oricrei soluii sau a unei soluii optime?

Soluia dorit const ntr-o singur stare sau ntr-o succesiune


de stri?

Sunt necesare multiple cunotine pentru a limita cutarea sau


chiar pentru a identifica soluia?

Problema este conversaional sau solitar?

Martie, 2014

Este sau nu nevoie de interaciune uman pentru rezolvarea ei?

Inteligen artificial - metode de cutare neinformat

13

Pai n rezolvarea problemelor prin cutare


Alegerea unei tehnici de rezolvare

Rezolvarea prin utilizarea regulilor (n combinaie cu o


strategie de control) de deplasare n spaiul problemei
pn la gsirea unui drum ntre starea iniial i cea
final

Rezolvare prin cutare

Martie, 2014

Examinarea sistematic a strilor posibile n vederea


identificrii
unui drum de la o stare iniial la o stare final
unei stri optime
Spaiul strilor = toate strile posibile + operatorii care
definesc legturile ntre stri

Inteligen artificial - metode de cutare neinformat

14

Pai n rezolvarea problemelor prin cutare


Alegerea unei tehnici de rezolvare

Rezolvare prin cutare

Strategii de cutare multiple cum alegem o


strategie?

Martie, 2014

Complexitatea computaional (temporal i spaial)

Completitudine algoritmul se sfrete ntotdeauna i gsete o


soluie (dac ea exist)
Optimalitate algoritmul gsete soluia optim (costul optim al
drumului de la starea iniial la starea final)

Inteligen artificial - metode de cutare neinformat

15

Pai n rezolvarea problemelor prin cutare


Alegerea unei tehnici de rezolvare

Rezolvare prin cutare


Strategii de cutare multiple cum alegem
o strategie?

Martie, 2014

Complexitatea computaional (temporal i spaial)


Performana strategiei depinde de:
Timpul necesar rulrii
Factori interni
Spaiul (memoria) necesar rulrii
Mrimea intrrilor algoritmului
Factori externi
Viteza calculatorului
Calitatea compilatorului
Se msoar cu ajutorul complexitii Eficien computaional
Spaial memoria necesar identificrii soluiei
S(n) cantitatea de memorie utilizat de cel mai bun algoritm A
care rezolvp o problem de decizie f cu n date de intrare
Temporal timpul necesar identificrii soluiei
T(n) timpul de rulare (numrul de pai) al celui mai bun
algoritm A care rezolv o problem de decizie f cu n date de
intrare

Inteligen artificial - metode de cutare neinformat

16

Pai n rezolvarea problemelor prin cutare


Alegerea unei tehnici de rezolvare

Rezolvarea problemelor prin cutare poate consta n:

Construirea progresiv a soluiei

Identificarea soluiei poteniale optime

Martie, 2014

Inteligen artificial - metode de cutare neinformat

17

Pai n rezolvarea problemelor prin cutare


Alegerea unei tehnici de rezolvare

Rezolvarea problemelor prin cutare poate consta n:

Construirea progresiv a soluiei

Componentele problemei

Spaiul de cutare

Martie, 2014

Stare iniial
Operatori (funcii succesor)
Stare final
Soluia = un drum (de cost optim) de la starea iniial la starea final
Mulimea tuturor strilor n care se poate ajunge din starea iniial prin aplicarea
operatorilor
stare = o component a soluiei

Exemple
Problema comisului voiajor
Algoritmi
Ideea de baz: se ncepe cu o component a soluiei i se adaug noi
componente pn se ajunge la o soluie complet
Recursivi se re-aplic pn la ndeplinirea unei condiii
Istoricul cutrii (drumul parcurs de la starea iniial la starea final) este
reinut n liste de tip LIFO sau FIFO
Avantaje
Nu necesit cunotine (informaii inteligente)

Inteligen artificial - metode de cutare neinformat

18

Pai n rezolvarea problemelor prin cutare


Alegerea unei tehnici de rezolvare

Rezolvarea problemelor prin cutare poate consta n:

Identificarea soluiei poteniale optime

Componentele problemei
Condiii (constrngeri) pe care trebuie s le satisfac (parial sau
total) soluia
Funcie de evaluare a unei soluii poteniale identificareaa optimului

Spaiul de cutare

Exemple

Ideea de baz: se ncepe cu o stare care nu respect anumite constrngeri pentru


a fi soluie optim i se efectueaz modificri pentru a elimina aceste violri
Iterativi se memoreaz o singur stare i se ncearc mbuntirea ei
Istoricul cutrii nu este reinut

Avantaje

Martie, 2014

Problema celor 8 regine

Algoritmi

mulimea tuturor soluiilor poteniale complete


Stare = o soluie complet

Simplu de implementat
Necesit puin memorie
Poate gsi soluii rezonabile n spaii de cutare (continue) foarte mari pentru care
ali algoritmi sistematici nu pot fi aplicai

Inteligen artificial - metode de cutare neinformat

19

Pai n rezolvarea problemelor prin cutare


Alegerea unei tehnici de rezolvare

Rezolvarea problemelor prin cutare presupune

Martie, 2014

algoritmi cu o complexitate ridicat (probleme NP-complete)

cutarea ntr-un spaiu exponenial

Inteligen artificial - metode de cutare neinformat

20

Pai n rezolvarea problemelor prin cutare


Alegerea unei tehnici de rezolvare

Tipologia strategiilor de cutare

n funcie de modul de generare a soluiei

Cutare constructiv

Cutare perturbativ

Cutare sistematic

Traversarea complet a spaiului

Ideintificarea soluiei dac ea exist algoritmi complei

Cutare local

Traversarea spaiului de cutare dintr-un punct n alt punct vecin algoritmi incomplei
O stare a spaiului poate fi vizitat de mai multe ori

n funcie de elementele de certitudine ale cutrii

O soluie candidat este modificat n vederea obinerii unei noi soluii candidat
Ex. SAT - Propositional Satisability Problem

n funcie de modul de traversare a spaiului de cutare

Construirea progresiv a soluiei


Ex. TSP

Cutare determinist
Algoritmi de identificare exact a soluiei
Cutare stocastic
Algoritmi de aproximare a soluiei

n funcie de stilul de explorare a spaiului de cutare

Martie, 2014

Cutare secvenial
Cutare paralel

Inteligen artificial - metode de cutare neinformat

21

Pai n rezolvarea problemelor prin cutare


Alegerea unei tehnici de rezolvare
Tipologia strategiilor de cutare

n funcie de scopul urmrit

Cutare uni-obiectiv

Cutare multi-obiectiv

Cutare uni-modal

Cutare multi-modal

Exist mai multe soluii optime

Cutare de-a lungul unui numr finit de pai


Cutare iterativ

Algoritmii converg ctre soluie

Cutare euristic

Algoritmii ofer o aproximare a soluiei

n funcie de mecanismul cutrii

Exist o singur soluie optim

n funcie de tipul de algoritm folosit

Soluia trebuie s satisfac mai multe condiii (obiective)

n funcie de numrul de soluii optime

Soluia trebuie s satisfac o signur condiie/constrngere

Cutare tradiional
Cutare modern

n funcie de locul n care se desfoar cutarea n spaiul de cutare

Cutare local
Cutare global

Martie, 2014

Inteligen artificial - metode de cutare neinformat

22

Pai n rezolvarea problemelor prin cutare


Alegerea unei tehnici de rezolvare
Tipologia strategiilor de cutare
n funcie de tipul (linearitatea) constrngerilor

Cutare liniar
Cutare neliniar

Clasic (determinist)

Direct bazat doar pe evaluarea funciei obiectiv


Indirect bazat i pe derivata (I si/sau II) a funciei obiectiv

Enumerativ

n funcie de modul de stabilire a soluiei

n funcie de tipul spaiului de cutare

Complet spaiu finit (dac soluia exist, ea poate fi gsit)


Incomplet spaiu infinit

Stocastic

Ne-informat soluia se tie doar cnd ea coincide cu starea final


Informat se lucreaz cu o funcie de evaluare a unei soluii pariale

Bazat pe elemente aleatoare

n funcie de agenii implicai n cutare

Cutare realizat de un singur agent fr piedici n atingerea obiectivelor


Cutare adversial adversarul aduce o incertitudine n realizarea obiectivelor

Martie, 2014

Inteligen artificial - metode de cutare neinformat

23

Pai n rezolvarea problemelor prin cutare


Alegerea unei tehnici de rezolvare
Exemplu
Tipologia strategiilor de cutare

n funcie de modul de generare a soluiei

n funcie de modul de traversare a spaiului de cutare

Cutare sistematic
Cutare local

n funcie de elementele de certitudine ale cutrii

Cutare constructiv
Cutare perturbativ

Cutare determinist
Cutare stocastic

n funcie de stilul de explorare a spaiului de cutare

Martie, 2014

Cutare secvenial
Cutare paralel

Inteligen artificial - metode de cutare neinformat

24

Pai n rezolvarea problemelor prin cutare


Alegerea unei tehnici de rezolvare
Exemplu
Problema capra, varza i lupul

Se dau:

o capr, o varz i un lup pe malul unui ru


o barc cu barcagiu

Se cere

S se traverseze toi pasagerii pe malul cellalt al rului


cu urmtoarele condiii
n barc exist doar 2 locuri
nu pot rmne pe acelai mal
capra i varza
lupul i capra

Martie, 2014

Inteligen artificial - metode de cutare neinformat

25

Pai n rezolvarea problemelor prin cutare


Alegerea unei tehnici de rezolvare
B
C
V
L

C
B
L
V

L
V

C
B
L

B
L
V

B
C
L

V
C

C
V

Martie, 2014

B
V
C

B
C

B
L
C

B
C
V

V
L

B
V
L

Inteligen artificial - metode de cutare neinformat

26

Strategii de cutare
Elemente fundamentale

Tipuri abstracte de date (TAD)

TAD list structur liniar


TAD arbore structur arborescent
(ierarhic)
TAD graf structur de graf

TAD

Domeniu i operaii
Reprezentare

Martie, 2014

Inteligen artificial - metode de cutare neinformat

27

Strategii de cutare
Elemente fundamentale TAD List

Domeniu

D = {l | l = (el1, el2, ), unde eli, i=1,2,3, sunt de acelai tip TE (tip element) i fiecare element eli,
i=1,2,3, are o poziie unic n l de tip TP (TipPoziie)}

Operaii

Reprezentare

Creare(l)
Prim(l)
Ultim(l)
Urmtor(l,p)
Anterior(l,p)
Valid(l,p)
getElement(l,p)
getPoziie(l,e)
Modific(l,p,e)
AdugareLanceput(l,e)

AdugareLaSfrit(l,e)
AdugareDup(l,p,e)
Adugarenainte(l,p,e)
Eliminare(l,p)
Cutare(l,e)
Vid(l)
Dimensiune(l)
Distrugere(l)
getIterator(l)

Vectorial
Liste (simplu sau dublu) nlnuite, etc

Cazuri particulare

Stiv LIFO

Coad FIFO

Coad cu prioriti

Martie, 2014

Inteligen artificial - metode de cutare neinformat

28

Strategii de cutare
Elemente fundamentale TAD List

Domeniu

D = {l | l = (el1, el2, ), unde eli, i=1,2,3, sunt de acelai tip TE (tip element) i fiecare element eli,
i=1,2,3, are o poziie unic n l de tip TP (TipPoziie)}

Operaii

Reprezentare

Creare(l)
Prim(l)
Ultim(l)
Urmtor(l,p)
Anterior(l,p)
Valid(l,p)
getElement(l,p)
getPoziie(l,e)
Modific(l,p,e)
AdugareLanceput(l,e)

AdugareLaSfrit(l,e)
AdugareDup(l,p,e)
Adugarenainte(l,p,e)
Eliminare(l,p)
Cutare(l,e)
Vid(l)
Dimensiune(l)
Distrugere(l)
getIterator(l)

Vectorial
Liste (simplu sau dublu) nlnuite, etc

Cazuri particulare

Stiv LIFO

Coad FIFO

Coad cu prioriti

Martie, 2014

Inteligen artificial - metode de cutare neinformat

29

Strategii de cutare
Elemente fundamentale TAD List

Domeniu

D = {l | l = (el1, el2, ), unde eli, i=1,2,3, sunt de acelai tip TE (tip element) i fiecare element eli,
i=1,2,3, are o poziie unic n l de tip TP (TipPoziie)}

Operaii

Reprezentare

Creare(l)
Prim(l)
Ultim(l)
Urmtor(l,p)
Anterior(l,p)
Valid(l,p)
getElement(l,p)
getPoziie(l,e)
Modific(l,p,e)
AdugareLanceput(l,e)

AdugareLaSfrit(l,e)
AdugareDup(l,p,e)
Adugarenainte(l,p,e)
Eliminare(l,p)
Cutare(l,e)
Vid(l)
Dimensiune(l)
Distrugere(l)
getIterator(l)

Vectorial
Liste (simplu sau dublu) nlnuite, etc

Cazuri particulare

Stiv LIFO

Coad FIFO

Coad cu prioriti

Martie, 2014

Inteligen artificial - metode de cutare neinformat

30

Strategii de cutare
Elemente fundamentale TAD Graf

Domeniu container de noduri si legturi ntre noduri

Operaii

creare
creareNod
traversare
getIterator
distrugere

Reprezentare

D = {nod1,nod2,...,nodn, leg1, leg2, ...,legm, unde nodi, cu i=1,2,...,n sunt noduri, iar legi, cu i=1,2,...,m sunt
muchii ntre noduri}

Lista muchilor
Lista de adiacen (Tradiional i Modern)
Matricea de adiacen (Tradiional i Modern)
Matricea de inciden

Cazuri particulare

Grafuri
Grafuri
Grafuri
Grafuri
Grafuri

Martie, 2014

orientate i neorientate
simple sau multiple
conexe sau nu
complete sau nu
cu sau fr cicluri (aciclice pduri, arbori)

Inteligen artificial - metode de cutare neinformat

31

Strategii de cutare
Elemente fundamentale TAD Arbore

Domeniu container de noduri si legturi ntre noduri

Operaii

creare
creareFrunz
adugareSubarbore
getInfoRdcin
getSubarbore
traversare
getIterator
distrugere

Reprezentare

D = {nod1,nod2,...,nodn, leg1, leg2, ...,legm, unde nodi, cu i=1,2,...,n sunt noduri, iar
legi, cu i=1,2,...,m sunt muchii ntre noduri astfel nct s nu se formeze cicluri}

Vectorial
Liste nlnuite ale descendenilor

Cazuri particulare

Arbori binari (de cutare)


Arbori n-ari

Martie, 2014

Inteligen artificial - metode de cutare neinformat

32

Strategii de cutare
Elemente fundamentale parcurgerea grafelor

Drumuri

drum (path)

trail

nodul iniial = nodul final

circuit

fr restricii

drum nchis

muchiile nu se pot repeta

walk

nodurile nu se pot repeta

un trail nchis

ciclu

Martie, 2014

un path nchis
Inteligen artificial - metode de cutare neinformat

33

Strategii de cutare neinformate (SCnI)

Caracteristici

nu se bazeaz pe informaii specifice problemei


sunt generale
strategii oarbe
strategii de tipul forei brute

Topologie

n funcie de ordinea expandrii strilor n spaiul de cutare:

SCnI n structuri liniare


cutare liniar
cutare binar

SCnI n structuri ne-liniare

cutare n lime (breadth-first)


cutare de cost uniform (branch and bound)
cutare n adncime (depth-first)
cutare n adncime limitat (limited depth-first)
cutare n adncime iterativ (iterative deepening depth-first)
cutare bidirecional

Martie, 2014

Inteligen artificial - metode de cutare neinformat

34

SCnI n structuri liniare


Cutare liniar

Aspecte teoretice

Exemplu

Se verific fiecare element al unei liste pn la identificarea celui dorit


Lista de elemente poate fi ordonat sau nu

Lista = ( 2, 3, 1, ,7, 5)
Elem = 7

Algoritm
bool LS(elem, list){
found = false;
i = 1;
while ((!found) && (i <= list.length)){
if (elem = list[i])
found = true;
else
i++;
} //while
return found;
}

Martie, 2014

Inteligen artificial - metode de cutare neinformat

35

SCnI n structuri liniare


Cutare liniar

Analiza cutrii

Complexitate temporal

Complexitate spaial

Completitudine

Optimalitate

da
da

Simplitate, complexitate temporal bun pentru structuri mici


Structura nu trebuie sortat n prealabil

Dezavantaje

S(n) = n

Avantaje

Cel mai bun caz: elem = list[1] => O(1)


Cel mai slab caz: elem list => T(n) = n +1 => O(n)
Cazul mediu: T(n) = (1 + 2 + + n + (n+1))/(n+1) => O(n)

complexitate temporal foarte mare pentru structuri mari

Aplicaii

Cutri n baze de date reale

Martie, 2014

Inteligen artificial - metode de cutare neinformat

36

SCnI n structuri liniare


Cutare binar

Aspecte teoretice

Localizarea unui element ntr-o list ordonat


Strategie de tipul Divide et Conquer

Exemplu

List = ( 2, 3, 5, 6, 8, 9, 13,16, 18), Elem = 6

List
List
List
List

=
=
=
=

(
(
(
(

2, 3, 5, 6, 8, 9, 13,16, 18)
2, 3, 5, 6)
5, 6 )
6)

Algoritm
bool BS(elem, list){
found = false;
left = 1;
right = list.length;
while((left < right) && (!found)){
middle = left + (right - left)/2;
if (element == list[middle])
found = true;
else
if (element < list[middle])
right = middle 1;
else
left = middle + 1;
} //while
return found;
}

Martie, 2014

Inteligen artificial - metode de cutare neinformat

37

SCnI n structuri liniare


Cutare binar

Analiza cutrii

Complexitate temporal T(n) = 1, pt n = 1 i T(n) = T(n/2) + 1, altfel


Pp. c n = 2k => k = log2n
Pp. c 2k< n < 2k+1 => k < log2n < k + 1
T(n)
= T(n/2) + 1
T(n/2)
= T(n/22) + 1

T(n/2k-1) = T(n/2k) + 1
-----------------------------T(n) = k + 1 = log2n + 1

Avantaje

Complexitate temporal redus fa de cutarea liniar

Dezavantaje

Complexitate spaial S(n) = n


Completitudine da
Optimalitate da

Lucrul cu vectori (trebuie accesate elemente indexate) sortai

Aplicaii

Martie, 2014

Jocul ghicirii unui numr


Cutare ntr-o carte de telefon/dicionar

Inteligen artificial - metode de cutare neinformat

38

SC n structuri arborescente

Noiuni necesare

f(n) funcie de evaluare pentru estimarea costului soluiei prin nodul (starea) n

h(n) funcie euristic pentru estimarea costului drumului de la nodul n la nodul


obiectiv

g(n) funcie de cost pentru estimarea costului drumului de la nodul de start


pn la nodul n

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

actual

start

estimat

n
g(n)

obiectiv
h(n)

f(n)
Martie, 2014

Inteligen artificial - metode de cutare neinformat

39

SCnI n structuri arborescente


cutare n lime (breadth-first search BFS)

Aspecte teoretice

Toate nodurile aflate la adncimea d se expandeaz naintea nodurile aflate la adncimea d+1
Toate nodurile fii obinute prin expandarea nodului curent se adaug ntr-o list de tip FIFO (coad)
A

Exemplu
B

Ordinea vizitrii: A, B, C, D, E, F, G, H, I, J, K
E

Algoritm

bool BFS(elem, list){


Vizitate deja
found = false;
visited = ;

toVisit = {start};
//FIFO list
A
while((toVisit != ) && (!found)){
node = pop(toVisit);
A, B
visited = visited U {node};
if (node == elem)
A, B, C
found = true;
A, B, C, D
else{
aux = ;
for all (unvisited) children of node do{ A, B, C, D, E
aux = aux U {child};
A, B, C, D, E, F
}
A, B, C, D, E, F, G
}
toVisit = toVisit U aux;
A, B, C, D, E, F, G, H
} //while
return found;
A, B, C, D, E, F, G, H, I
}
A, B, C, D, E, F, G, H, I, J

Martie, 2014

A, B, C, D, E, F, G, H, I, J, K

Inteligen artificial - metode de cutare neinformat

De vizitat
A
B, C, D
C, D, E, F
D, E, F, G
E, F, G, H, ,I, J

F, G, H, I, J
G, H, I, J
H, I, J
I, J
J, K
K

40

SCnI n structuri arborescente


cutare n lime (breadth-first search BFS)

Analiza cutrii:

Complexitate temporal:

Complexitate spaial

Completitudine

Optimalitate

Avantaje

b factor de ramificare (nr de noduri fii ale unui nod)


d - lungimea (adncimea) soluiei
T(n) = 1 + b + b2 + + bd => O(bd)
S(n) = T(n)

Dac soluia exist, atunci BFS o gsete


nu

Gsirea drumului de lungime minim pn la nodul obiectiv (soluia cea mai puin adnc)

Dezavantaje

Generarea i stocarea unui arbore a crui mrime crete exponenial cu adncimea nodului obiectiv
Complexitate temporal i spaial exponenial
A
Experimentul Russel&Norvig????
Funcional doar pentru spaii de cutare mici
B

Aplicaii

Identificarea tuturor componentelor conexe ntr-un graf


Identificarea celui mai scurt drum ntr-un graf

Optimizri in reele de transport algoritmul Ford-Fulkerson

Serializarea/deserializarea unui arbore binar (vs. serializarea n


mod sortat) permite reconstrucia eficient a arborelui

Copierea colecilor (garbage collection) algoritmul Cheney

Martie, 2014

F
Vizitate deja

De vizitat

A, E, F

B, A

E, F, C

B, A, E

F, C

B, A, E, F

B, A, E, F, C

Inteligen artificial - metode de cutare neinformat

41

SCnI n structuri arborescente


cutare de cost uniform (uniform cost search UCS)

Aspecte teoretice

BFS + procedur special de expandare a nodurilor (bazat pe costurile asociate legturilor dintre noduri)
Toate nodurile de la adncimea d sunt expandate naintea nodurilor de la adncimea d+1
Toate nodurile fii obinute prin expandarea nodului curent se adaug ntr-o list ORDONAT de tip FIFO

Se expandeaz mai nti nodurile de cost minim


Odat obinut un drum pn la nodul int, acesta devine candidat la drumul de cost optim

Algoritmul Branch and bound

Exemplu

Ordinea vizitrii nodurilor: A, C, B, D, G, E, F, I, H, J, K

10

15

5
G

bool UCS(elem, list){

found = false;
visited = ;
toVisit = {start};
//FIFO sorted list
while((toVisit != ) && (!found)){
node = pop(toVisit);
visited = visited U {node};
if (node== elem)
found = true;
else
aux = ;
for all (unvisited) children of node do{
aux = aux U {child};
} // for
toVisit = toVisit U aux;
TotalCostSort(toVisit);

} //while
return found;
Martie, 2014

Algoritm

3
I

visited

toVisit

C(3), B(7), D(9)

A, C

B(7), D(9), G(3+7)

A, C, B

D(9), G(10), E(7+10), F(7+15)

A, C, B, D

G(10), I(9+3), J(9+4) ,H(9+5), E(17), F(22)

A, C, B, D, G

I(12), J(13) ,H(14), E(17), F(22)

A, C, B, D, G, I

J(13) ,H(14), E(17), F(22), K(9+3+7)

A, C, B, D, G, I, J

H(14), E(17), F(22), K(19)

A, C, B, D, G, I, J, H

E(17), F(22), K(19)

A, C, B, D, G, I, J, H, E

F(22), K(19)

A, C, B, D, G, I, J, H, E, F

K(19)

A, C, B, D, G, I, J, H, E, F, K

Inteligen artificial - metode de cutare neinformat

42

SCnI n structuri arborescente


cutare de cost uniform (uniform cost search UCS)

Analiza complexitii

Complexitate temporal:

Complexitate spaial

A
5

Gsirea drumului de cost minim pn la nodul obiectiv E

Complexitate temporal i spaial exponenial

Aplicaii

Martie, 2014

10

Dezavantaje

Da

Avantaje

Da dac soluia exist, atunci UCS o gsete

Optimalitate

S(n) = T(n)

Completitudine

b factor de ramificare (nr de noduri fii ale unui nod)


d - lungimea (adncimea) soluiei
T(n) = 1 + b + b2 + + bd => O(bd)

Cel mai scurt drum algoritmul Dijkstra

C
3

D
5

Vizitate deja

De vizitat

A(0)

A(0)

B(5), C(10)

A(0), B(5)

F(8), C(10), E(14)

A(0), B(5), F(8)

C(9), E(10)

A(0), B(5), F(8), C(9)

E(10), H(14)

A(0), B(5), F(8), C(9), E(10)

H(14)

Inteligen artificial - metode de cutare neinformat

43

SCnI n structuri arborescente


cutare n adncime (depth-first search DFS)

Aspecte teoretice

Expandarea intr-un nod fiu i naintarea n adncime pn cnd

Este gsit un nod int (obiectiv) sau


Nodul atins nu mai are fii

Cu revenirea n cel mai recent nod care mai poate fi explorat


Toate nodurile fii obinute prin expandarea nodului curent se adaug
ntr-o list de tip LIFO (stiv)

Similar cu BFS, dar nodurile se plaseaz ntr-o stiv (n loc de coad)

Exemplu

Ordinea vizitrii nodurilor: A, B, E, F, C, G, D, H, I, K, J

Algoritm

bool DFS(elem, list){


Vizitate deja
found = false;

visited = ;
A
toVisit = {start};
//LIFO list
while((toVisit != ) && (!found)){
A, B
node = pop(toVisit);
A, B, E
visited = visited U {node};
if (node== elem)
A, B, E, F
found = true;
A, B, E, F, C
else{
A, B, E, F, C, G
aux = ;
for all (unvisited) children of node do{
A, B, E, F, C, G, D
aux = aux U {child};
A, B, E, F, C, G, D, H
}
toVisit = aux U toVisit;
A, B, E, F, C, G, D, H, I
}
A, B, E, F, C, G, D, H, I, K
} //while
Martie, 2014
A, B, E, F, C, G, D, H, I, K, J
Inteligen artificial - metode de cutare neinformat
return found;
}

De vizitat
A

B, C, D
E, F, C, D
F, C, D
C, D
G, D
D
H, I, J
I, J
K, J
J

44

SCnI n structuri arborescente


cutare n adncime (depth-first search DFS)

Analiza complexitii

Complexitate temporal:

Complexitate spaial

Completitudine

S(n) = b * dmax

Nu algoritmul nu se termin pt drumurile infinite (neexistnd suficient memeorie pt reinerea


nodurilor deja vizitate)

Optimalitate

b factor de ramificare (nr de noduri fii ale unui nod)


dmax - lungimea (adncimea) maxim a unui arbore explorat
T(n) = 1 + b + b2 + + bdmax => O(bdmax)

Nu cutarea n adncime poate gsi un drum soluie mai lung dect drumul optim

Avantaje

Gsirea drumului de lungime minim pn la nodul obiectiv cu consum minim de memorie

versiunea recursiv

Dezavantaje

Se poate bloca pe anumite drumuri greite (nenorocoase)


fr a putea reveni
A

Ciclu infinit
Gsirea unei soluii mai lungi dect soluia optim

Aplicaii

Problema labirintului (maze)

Identificarea componentelor conexe

Sortare topologic
Testarea planaritii
Martie, 2014

L
M

Inteligen artificial - metode de cutare neinformat

45

SCnI n structuri arborescente


cutare n adncime (depth-first search DFS)
bool DFS_edges(elem, list){
discovered = ;
back = ;
toDiscover = ;
//LIFO
for (all neighbours of start) do
toDiscover = toDiscover U {(start, neighbour)}
found = false;
visited = {start};
while((toDiscover != ) && (!found)){
edge = pop(toDiscover);
if (edge.out ! visited){
discovered = discovered U {edge};
visited = visited U {edge.out}
if (edge.out == end)
found = true;
else{
aux = ;
for all neighbours of edge.out do{
aux = aux U {(edge.out, neighbour)};
}
toDiscover = aux U toDiscover;
}
else
back = back U {edge}
} //while
return found;
}

Martie, 2014

Muchii vizitate
deja

Muchii de vizitat

napoi

Noduri vizitate

AB, AF

AB

AB

BC, BK, AF

A, B

BC

AB, BC

CD, BK, AF

A, B, C

CD

AB. BC, CD

DE, BK, AF

A, B, C, D

DE

AB, BC, CD, DE

EF, EH, BK, AF

A, B, C, D, E

EF

AB, BC, CD, DE,


EF

FI, FG, EH, BK, AF

A, B, C, D, E, F

FI

AB, BC, CD, DE,


EF, FI

FG, EH, BK, AF

A, B, C, D, E, F, I

FG

AB, BC, CD, DE,


EF, FI, FG

GA, EH, BK, AF

A, B, C, D, E, F, I,
G

GA

AB, BC, CD, DE,


EF, FI, FG

EH, BK, AF

GA

A, B, C, D, E, F, I,
G

EH

AB, BC, CD, DE,


EF, FI, FG

HJ, HN, BK, AF

GA

A, B, C, D, E, F, I,
G, H

HJ

AB, BC, CD, DE,


EF, FI, FG, HJ

HN, BK, AF

GA

A, B, C, D, E, F, I,
G, H, J

HN

AB, BC, CD, DE,


EF, FI, FG, HI, HN

BK, AF

GA

A, B, C, D, E, F, I,
G, H, N

Muchia

Inteligen artificial - metode de cutare neinformat

46

SCnI n structuri arborescente


cutare n adncime limitat (depth-limited search DLS)

Aspecte teoretice

Exemplu

DFS + adncime maxim care limiteaz cutarea (dlim)


Se soluioneaz problemele de completitudine ale cutrii n adncime (DFS)

dlim = 2
Ordinea vizitrii nodurilor: A, B, E, F, C, G, D, H, I, J

Algoritm

bool DLS(elem, list, dlim){


found = false;
visited = ;
toVisit = {start}; //LIFO list
Vizitate deja
while((toVisit != ) && (!found)){

node = pop(toVisit);
visited = visited U {node};
A
if (node.depth <= dlim){
A, B
if (node == elem)
found = true;
A, B, E
else{
A, B, E, F
aux = ;
A, B, E, F, C
for all (unvisited) children of node do{
aux = aux U {child};
A, B, E, F, C, G
}
A, B, E, F, C, G, D
toVisit = aux U toVisit;
}//if found
A, B, E, F, C, G, D, H
}//if dlim
A, B, E, F, C, G, D, H, I
} //while
A, B, E, F, C, G, D, H, I, K, J
return found;
}
Martie, 2014
Inteligen artificial - metode de cutare neinformat

De vizitat
A
B, C, D
E, F, C, D
F, C, D
C, D

G, D
D
H, I, J
I, J
J

47

SCnI n structuri arborescente


cutare n adncime limitat (depth-limited search DLS)

Analiza complexitii

Complexitate temporal:

Complexitate spaial

Se soluioneaz problemele de completitudine ale cutrii n adncime (DFS)

Dezavantaje

Nu cutarea n adncime poate gsi un drum soluie mai lung dect drumul optim

Avantaje

Da, dar dlim > d, unde d = lungimea (adncimea) soluiei optime

Optimalitate

S(n) = b * dlim

Completitudine

b factor de ramificare (nr de noduri fii ale unui nod)


dlim limita lungimii (adncimii) permis pentru un arbore explorat
T(n) = 1 + b + b2 + + bdlim => O(bdlim)

Cum se alege o limit dlim bun?

Aplicaii

Determinarea podurilor ntr-un graf

Martie, 2014

Inteligen artificial - metode de cutare neinformat

48

SCnI n structuri arborescente cutare n adncime


iterativ (iterative deepening depth search IDDS)

Aspecte teoretice

U DLS(dlim), unde dlim = 1, 2, 3, ..., dmax


Se soluioneaz problema stabilirii limitei dlim optime din DLS
De obicei, se aplic acolo unde:

spaiul de cutare este mare i


se cunoate lungimea (adncimea) soluiei

Exemplu

lim_d=0
dlim
=0
lim_d=1
dlim
=1

dlim
=2
lim_d=2

Algoritm
bool IDS(elem, list){
found = false;
dlim = 0;
while ((!found) && (dlim < dmax)){
found = DLS(elem, list, dlim);
dlim++;

}
return found;

Martie, 2014

Inteligen artificial - metode de cutare neinformat

49

SCnI n structuri arborescente cutare n


adncime iterativ (iterative deepening depth search IDDS)

Analiza complexitii

Complexitate temporal:

Nodurile
Nodurile
...
Nodurile
Nodurile

situate la adncimea dmax (n numr de bdmax) se expandeaz o singur dat=> 1 * bdmax


situate la adncimea dmax-1 (n numr de bdmax-1) se expandeaz de 2 ori => 2 * (bdmax - 1)
situate la adncimea 1 (n numr de b) se expandeaz de dmax ori => dmax * b1
situate la adncimea 0 (n numr de 1 - rdcina) se expandeaz de dmax+1 ori => (dmax+1)*b0

d max

T (n) (i 1)b d max 1 O(b d max )


i 0

Complexitate spaial

Completitudine

Optimalitate

Da

Necesit memorie liniar


Asigur atingerea nodului int urmnd un drum de lungime minim
Mai rapid dect BFS i DFS

Dezavantaje

Da

Avantaje

S(n) = b * dmax

Necesit cunoaterea adncimii soluiei

Aplicaii

Jocul Tic tac toe

Martie, 2014

Inteligen artificial - metode de cutare neinformat

50

SCnI n structuri arborescente cutare n


adncime iterativ (iterative deepening depth search IDDS)

Martie, 2014

Inteligen artificial - metode de cutare neinformat

51

SCnI n structuri arborescente


cutare bidirecional (bi-directional search BDS)

Aspecte teoretice

2 cutri simultane

nainte (forward): de la rdcin spre frunze


napoi (backward): de la frunze spre rdcin

care se opresc atunci cnd ajung la un nod comun


ntr-o direcie pot fi folosite oricare dintre streategiile de cutare
anterioare
necesit

stabilirea succesorilor, respectiv a predecesorilor unui nod


stabilirea locului de ntlnire

Exemplu

Algoritm

n funcie de strategia de cutare folosit

Martie, 2014

Inteligen artificial - metode de cutare neinformat

52

SCnI n structuri arborescente


cutare bidirecional (bi-directional search BDS)

Analiza complexitii

Complexitate temporal

b factor de ramificare (nr de noduri fii ale unui nod)


d - lungimea (adncimea) soluiei
O(bd/2) + O(bd/2) => O(bd/2)

S(n) = T(n)

da

da

Complexitate spaial

Completitudine

Optimalitate

Avantaje

Dezavantaje

Complexitate spaial i temporal redus

Dificulti n formularea problemei astfel nct fiecare stare s poat fi inversat


Parcurgere dinspre cap spre coad
Parcurgere dinspre coad spre cap
Implementare dificil
Trebuie determinai succesorii i predecesorii tuturor strilor
Trebuie cunoscut starea final (obiectiv)

Aplicaii

Problema partiionrii
Cel mai scurt drum

Martie, 2014

Inteligen artificial - metode de cutare neinformat

53

SCnI n structuri arborescente


fr euristici

FIFO

BFS

SCnI

cu euristici

SCI

LIFO

DFS
Se impune o anumit
limit adncimii

FIFO cu
prioriti

UCS

SC

DLS
Se crete gradual limita
adncimii

IDDS
Martie, 2014

Inteligen artificial - metode de cutare neinformat

54

SCnI n structuri arborescente


Compararea performanelor

Metoda de
cutare

Complexitate
temporal

Complexitate
spaial

Completitudin
e

Optimalitate

BFS

O(bd)

O(bd)

Da

Da

UCS

O(bd)

O(bd)

Da

Da

DFS

O(bdmax)

O(b*dmax)

Nu

Nu

DLS

O(bdlim)

O(b*dlim)

Da
dac dlim > d

Nu

IDS

O(bd)

O(b*d)

Da

Da

BDS

O(bd/2)

O(bd/2)

Da

Da

Martie, 2014

Inteligen artificial - metode de cutare neinformat

55

Cursul urmtor
A. Scurt introducere n Inteligena Artificial (IA)
B. Rezolvarea problemelor prin cutare

Definirea problemelor de cutare


Strategii de cutare

C.

Strategii de
Strategii de
Strategii de
PSO, ACO)
Strategii de

cutare neinformate
cutare informate
cutare locale (Hill Climbing, Simulated Annealing, Tabu Search, Algoritmi evolutivi,
cutare adversial

Sisteme inteligente

Sisteme bazate pe reguli n medii certe


Sisteme bazate pe reguli n medii incerte (Bayes, factori de
certitudine, Fuzzy)
Sisteme care nva singure

Arbori de decizie
Reele neuronale artificiale
Maini cu suport vectorial
Algoritmi evolutivi

Sisteme hibride

Martie, 2014

Inteligen artificial - metode de cutare neinformat

56

Cursul urmtor
Materiale de citit i legturi utile

capitolul II.4 din S. Russell, P. Norvig, Artificial


Intelligence: A Modern Approach, Prentice Hall,
1995

capitolul 3 i 4 din C. Groan, A. Abraham,


Intelligent Systems: A Modern Approach,
Springer, 2011

capitolul 2.5 din http://wwwg.eng.cam.ac.uk/mmg/teaching/artificialintelligen


ce/

Martie, 2014

Inteligen artificial - metode de cutare neinformat

57

Informaiile prezentate au fost colectate din diferite surse


bibliografice, precum i din cursurile de inteligen artificial inute n
anii anteriori de ctre:

Conf. Dr. Mihai Oltean www.cs.ubbcluj.ro/~moltean

Lect. Dr. Crina Groan - www.cs.ubbcluj.ro/~cgrosan

Prof. Dr. Horia F. Pop - www.cs.ubbcluj.ro/~hfpop

Martie, 2014

Inteligen artificial - metode de cutare neinformat

58

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