07.06.2013 Views

smaranda.belciug@inf.ucv.ro Laborator 5 InteligenŃă Artificială ...

smaranda.belciug@inf.ucv.ro Laborator 5 InteligenŃă Artificială ...

smaranda.belciug@inf.ucv.ro Laborator 5 InteligenŃă Artificială ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<st<strong>ro</strong>ng>smaranda</st<strong>ro</strong>ng>.<st<strong>ro</strong>ng>belciug@inf</st<strong>ro</strong>ng>.<st<strong>ro</strong>ng>ucv</st<strong>ro</strong>ng>.<strong>ro</strong><br />

Metode folosite<br />

<strong>Laborator</strong> 5<br />

<strong>InteligenŃă</strong> <strong>Artificială</strong><br />

functia hill_climbing(p<strong>ro</strong>blema) intoarce o solutie<br />

Se pastreaza la fiecare reapelare: nodul curent si nodul urmator.<br />

curent = genereaza_nod(stare_initiala[p<strong>ro</strong>blema])<br />

Cat timp este posibil executa<br />

urmator = succesorul cel mai bun al nodului curent<br />

Daca eval(urmator) < eval(curent) atunci<br />

intoarce curent<br />

curent = urmator<br />

Sfarsit cat timp<br />

1. RezolvaŃi p<strong>ro</strong>blema damelor folosind algoritmul HillClimbing.<br />

functie initializare() intoarce configuratie<br />

M = {1, 2, 3, 4, 5, 6, 7, 8}<br />

i = 0<br />

Cat timp (lungime(M) > 0) executa<br />

g = (int)(lungime(M) * random(1))<br />

configuratie[i++] = M[g]<br />

Scoate elementul M[g] din multimea M<br />

lungime(M)--;<br />

Sfarsit cat timp<br />

intoarce configuratie<br />

functie evaluare(configuratie) intoarce numar_e<strong>ro</strong>ri<br />

e<strong>ro</strong>ri = 0;<br />

Pentru i = 1 pana la 8 executa<br />

Pentru j = 1 pana la 8 executa<br />

Daca (i ≠ j) atunci<br />

Daca (|configuratie[i] - configuratie[j]| == |i<br />

- j|) atunci<br />

e<strong>ro</strong>ri++<br />

Sfarsit daca<br />

Sfarsit daca<br />

Sfarsit pentru<br />

Sfarsit pentru<br />

Intoarce e<strong>ro</strong>ri<br />

functie perturbare(configuratie) intoarce configuratie<br />

x = (int)(lungime(configuratie) * random(1))<br />

y = (int)(lungime(configuratie) * random(1))<br />

Cat timp (x == y) executa<br />

y = (int)(lungime(configuratie) * random(1))<br />

Sfarsit cat timp<br />

temp = configuratie[x]<br />

configuratie[x] = configuratie[y]<br />

configuratie[y] = temp<br />

intoarce configuratie


<st<strong>ro</strong>ng>smaranda</st<strong>ro</strong>ng>.<st<strong>ro</strong>ng>belciug@inf</st<strong>ro</strong>ng>.<st<strong>ro</strong>ng>ucv</st<strong>ro</strong>ng>.<strong>ro</strong><br />

Algoritm<br />

1. configuratie = initializare();<br />

2. Executa<br />

2.1. eval_curent = evaluare(configuratie)<br />

2.2. configuratie1 = perturbare(configuratie)<br />

3. Cat timp (eval(configuratie1) < eval(configuratie))<br />

4. Afisare (configuratie)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!