Administratie | Alimentatie | Arta cultura | Asistenta sociala | Astronomie |
Biologie | Chimie | Comunicare | Constructii | Cosmetica |
Desen | Diverse | Drept | Economie | Engleza |
Filozofie | Fizica | Franceza | Geografie | Germana |
Informatica | Istorie | Latina | Management | Marketing |
Matematica | Mecanica | Medicina | Pedagogie | Psihologie |
Romana | Stiinte politice | Transporturi | Turism |
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.
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.
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.
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:
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)
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
}
}
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.
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 } |
Documente similare:
|
ComentariiCaracterizari
|
Cauta document |