QReferate - referate pentru educatia ta.
Cercetarile noastre - sursa ta de inspiratie! Te ajutam gratuit, documente cu imagini si grafice. Fiecare document sau comentariu il poti downloada rapid si il poti folosi pentru temele tale de acasa.



AdministratieAlimentatieArta culturaAsistenta socialaAstronomie
BiologieChimieComunicareConstructiiCosmetica
DesenDiverseDreptEconomieEngleza
FilozofieFizicaFrancezaGeografieGermana
InformaticaIstorieLatinaManagementMarketing
MatematicaMecanicaMedicinaPedagogiePsihologie
RomanaStiinte politiceTransporturiTurism
Esti aici: Qreferat » Documente informatica

Metoda Backtracking



Metoda Backtracking

Descrierea Metodei

Metoda BackTracking se aplica in probleme de cautare. Metoda este adecvata problemelor in care solutia se poate exprima ca un n-uplu (x1 x2 xn) , xi Si - finita , i = 1,n . Solutia trebuie sa satisfaca sau sa minimizeze / maximizeze o functie criteriu P(x1 x2 xn). Uneori se solicita toate solutiile.Daca |S1| = m1 , |S2| = m2 . . . |Sn| = mn , atunci numarul total de n-uple este m=m1 m2 mn. Metoda nu asigura ca nu se vor incerca toate cele m posibilitati , dar practic reduce mult numarul de n-uple care se incearca prin folosirea functiei criteriu. Ideea este de a folosi o forma partiala a functiei criteriu Pi(x1 x2 xi) care elimina familii intregi de n-uple. Daca de exemplu solutia partiala (x1 x2 xi) nu are nici o sansa de a conduce la o solutie completa , toate cele mi+1 mi+2 mn n-uple cu (x1 x2 xi) pe primele i pozitii se abandoneaza.




Spatiul solutiilor. Restrictii.

S1 S2 Sn se numeste spatiul solutiilor problemei, iar restrictiile de forma (x1,x2,,xn) S1 S2 Sn se numesc restrictii explicite ; restrictiile (x1, x2 ,,xn) satisfacind P se numesc restrictii implicite

Exemplu 1: Problema celor 8 dame pe tabla de sah : Data fiind S==multimea celor 8 dame si o tabla de sah ( 8 linii si 8 coloane) sa se plaseze cele 8 dame asfel incit sa nu existe doua dame pe aceeasi linie, coloana sau diagonala.

O solutie poate fi exprimata printr-un 8-uplu X=(x1,x2,.x8) unde xi = coloana pe care se plaseaza dama I ( linia pe care se plaseaza dama I este i )

- Deoarece Si = S, i=1, . ,8 rezulta ca spatiul de solutii S S S S are 88 8-uple;

de 8ori

- Restrictia explicita: 1 xi 8 , i=1, . ,8


- Restrictii implicite -o singura dama pe o coloana : xi xj , ( ) i j, i,j=1, . ,8

-o singura dama pe o diagonala : |i-j| |xi-xj| , ( ) i j, i,j=1, . ,8


Exemplu 2: Submultimi de suma data : Date fiind S=, wi 0 1 i n si M-o valoare M > 0, sa se determine toate submultimile S' S, S`= cu proprietatea x1+x2++xk=M


Cazul n=4 S= M=31 S=(11,13,24,7); solutii : X1=(11,13,7), X2=(24,7) sau exprimate prin indicii i ai elementelor wi I S, X1=(1,2,4), X2=(3,4)

Pentru cazul exprimarii solutiilor prin indicii i ai elementelor wi I S restrictiile sint urmatoarele:


- Restrictii explicite 1 xi n, , i=1, . ,n


- Restrictii implicite: xi xj si =M

xi<xi+1 pentru a evita generarea aceleasi multimi

ex.:=

O alta abordare: X=(x1,x2,..xn), xi = 0 sau 1; = M

Spatiul solutiilor este de dimensiune 2n.

Organizarea sub forma de arbore a spatiului solutiilor

Metoda backtracking rezolva o problema prin cautarea sistematica a solutiei in spatiul solutiilor. Conceptual , aceasta cautare foloseste o organizare a spatiului solutiilor sub forma unui arbore.


Exemplul 1 : Problema celor n-dame

folosim n=4

In acest arbore arcele de la nivel i la i+1 sint etichetate cu valori xi.

Spatiul solutiilor = secventele de etichete de la radacina la nodurile frunza.Nodurile sint etichetate in

sensul parcurgerii depth-first.


Exemplul 2: Submultimi de suma data (11,13,24,7) M=31







Traversare breadth-first.

Notiuni :

-starea problemei - fiecare nod intr-un arbore defineste o stare a problemei;

-spatiul starilor - toate drumurile de la radacina la noduri;

-stari solutie - acele stari (noduri) pentru care drum de la radacina la nod etichetat cu un n-uplu;

-stari raspuns - stari care satisfac conditiile implicite P;

-arborele spatiului starilor - spatiul starilor problemei organizat sub forma de arbore.

Arborii construiti astfel sint arbori statici si nu depind de instanta problemei. Exista arbori dinamici care depind de problema. Un exemplu ar fi cazul in care functie de valoarea lui x1 se decide daca la primul nivel este x1 sau x2 s.a.m.d.


Backtracking si Branch-and-Bound


Exista doua strategii de generare a nodurilor corespunzatoare starilor problemei : depth-first si breadth-first.

Nodurile se clasifica in:

-nod viu -nod generat pentru care nu s-au generat descendenti;

-E-noduri -noduri in expandare - noduri vii pentru care procesul de generare al

descendentilor este in curs;

-noduri moarte -nod generat care nu are descendenti (si nici nu va avea) sau pentru care toti descendentii s-au generat.

In strategia depth-first, pentru E-nodul curent se identifica un descendent C care devine noul E-nod si procesul se aplica recursiv.

In strategia breadth-first, pentru E-nodul curent se genereaza toti descendentii si se trec in lista de noduri vii sau moarte.

In ambele strategii in orice moment se aplica functia criteriu (restrictiile implicite), numita si functia de marginire care seteaza un nod ca nod mort fara a-i mai genera descendentii.


Prima tehnica este numita backtracking


A doua tehnica este numita Branch-and-Bound



Exemplu pentru tehnica backtracking: Problema celor 4 dame:




































































































































Ordinea de generare este:


Modelul metodei


Fie (x1,x2,xi) un drum de la radacina la un nod intr-un arbore spatiu de stari.

Fie T(x1,x2,..xi) multimea tuturor valorilor posibile pentru xi+1 astfel incit

(x1,x2,..xi,xi+1) este de asemenea un drum de la radacina la un nod.

Fie Bi+1(x1,x2,..xi+1) functia (predicatul) de marginire derivat din P - functia criteriu

Bi+1(x1,x2,..xi+1) = false daca xi+1 este nod mort, de blocaj;

true daca xi+1 se extinde;


Backtrack-iterativ (n)

Solutile sint generate in x[1,2,n];

// T(x1,..xk-1)=

// Bk(x1, xk) - functie (predicat) de marginire;


else

k=k-1 ;

}



backtrack-recursiv (k)

// Solutile sint generate in x[1,2,n];

//T(x1,..xk-1)=

//Bk(x1, xk) - functie (predicat) de marginire;


for (each xk a.i. xk= y I T(x1.xk-1)

and Bk(x1..xk-1,xk)=true



Observatii


1.Eficienta algoritmului depinde de

- timpul pentru generarea urmatorului xk;

- numarul de elemente din T(x1..xk-1)

- functia de marginire B;

- numarul total de noduri.


2.Pentru multe probleme, multimile Si, se pot lucra in orice ordine, iar elementele din T(x1,xk-1) la fel.

Folosind aceasta observatie se pot stabili anumite euristici - strategii de organizare a elementelor lui Si cu scopul de a reduce nivelul de backtraking.


3.Ordinul de complexitate este O(2n) sau O(n!)

Metoda insa rezolva , de obicei, mult mai rapid problemele fara insa a se sti exact cit de repede.

Uneori se poate incerca o estimare a timpului backtrcking si aceasta pornind de la o estimare a numarului de noduri.


Estimarea numarului de noduri se poate face prin urmatoarea procedura generala:


estimate ( )


if(|Tk|=0) break;

r=r |Tk| ;

nr=nr+r ;

xk=random-choose(Tk);

k=k+1;

}

return (nr)


Studii de caz

Problema celor 8 dame

Daca se considera 2 elemente pe aceeasi diagonala (i,j) ,(k,l)

i-j=k-l sau i+j=k+l

j-l=i-k j-l=k-i

adica se poate folosi conditia |j-l|=|k-i|.


Construim functia place(k) care returneaza true daca dama cu numarul de ordine k poate fi plasata pe coloana data de x[k].


Operatiile care se fac sint:

- se testeaza daca x[k] x[i] i=1,2, . ,k-1

- se testeaza daca nu alta dama in aceeasi diagonala.



Functia place lucreaza in O(k-1)



place(k)


return true




n_queen (n)


}

else

k=k-1; // x[k] > n backtrack

}

}

Submultimi de suma data

Fie n numere pozitive S = wi> wi wj i j si M>

Sa se determine toate submultimile S` S cu =M

Folosim notatia solutiei sub forma X= xi=0 sau 1

wi=M

Arborele spatiului starilor va fi de forma:


Consideram w1,w2.wn in ordine crescatoare (fara a fi o restrictie generala)

Functia de marginire

Bk(x1,x2,.xk) = true if ( + M and wi + wk+1 M)

wi-cresc.

= false - altfel



SumSubset(s,k,r)


}

return



Observatie:


Functia intra in executie ,avind asigurate conditiile Bk-1=true : s+wk M si s+r M.

Initial w1 M si 0+ M corespunzind apelului SumSubset (0,1,)

Aceste conditii sunt asigurate la apelul recursiv.


Nu se verifica explicit k>n deoarece initial s = 0 < M si s+r M. Rezulta r 0 deci k nu poate depasi n. De asemenea in linia XXX deoarece s+wk < M si s+r M rezulta r wk, deci k+1 n.


Nu se poate descarca referatul
Acest document nu se poate descarca

E posibil sa te intereseze alte documente despre:


Copyright © 2024 - Toate drepturile rezervate QReferat.com Folositi documentele afisate ca sursa de inspiratie. Va recomandam sa nu copiati textul, ci sa compuneti propriul document pe baza informatiilor de pe site.
{ Home } { Contact } { Termeni si conditii }