backtracking-prezentare ppt

9
Backtracking

Upload: dan-zagnat

Post on 04-Dec-2015

9 views

Category:

Documents


4 download

DESCRIPTION

O scurta prezentare despre metoda Backtracking-ului de rezolvare a problemelor la informatica.

TRANSCRIPT

Page 1: Backtracking-prezentare PPT

Backtracking

Page 2: Backtracking-prezentare PPT

Ce este backtracking-ul?

Backtracking este numele unui algoritm general de descoperire a tuturor soluțiilor unei probleme de calcul, algoritm ce se bazează pe construirea incrementală de soluții-candidat, abandonând fiecare candidat parțial imediat ce devine clar că acesta nu are șanse să devină o soluție validă.

Termenul „backtrack” a fost inventat de matematicianul american D. H. Lehmer în anii 1950.

Page 3: Backtracking-prezentare PPT

Exemple în viața reală

Imaginaţi-vă că astăzi este ziua vostră şi aveţi invitaţi. Aranjaţi o masă frumoasă, apoi vă gândiţi cum să vă aşezaţi invitaţii la masă. Aţi vrea să ştiţi toate posibilităţile de aşezare a invitaţilor la masă, dar realizaţi în acelaşi timp că trebuie să ţineţi seama şi de preferinţele lor. Printre invitaţi există anumite simpatii dar şi unele antipatii, de care doriţi neapărat să ţineţi seama, pentru ca petrecerea să fie o bucurie pentru toţi.

Page 4: Backtracking-prezentare PPT

Să ne gândim cum procedaţi pentru a identifica toate posibilităţile de a plasa invitaţii la masă. Începeţi prin a scrie nişte cartonaşe cu numele invitaţilor. Alegeţi un invitat. Pentru a-l alege pe al doilea, selectaţi din mulţimea cartonaşelor rămase un alt invitat. Dacă ştiţi că cele două persoane nu se agreează, renuntaţi la cartonaşul lui şi alegeţi altul şi aşa mai departe.

Page 5: Backtracking-prezentare PPT

Se poate întâmpla ca la un moment dat, când vreţi să alegeţi cartonaşul unui invitat să constataţi că nici unul dintre invitaţii rămaşi nu se potriveşte cu ultima persoană slectată până acum. Cum procedaţi? Schimbaţi ultimul invitat plasat cu un invitat dintre cei rămaşi şi încercaţi din nou, dacă nici aşa nu reuşiti, schimbaţi penultimul invitat cu alcineva şi încercaţi din nou şi aşa mai departe până când reuşiţi să plasati toţi invitaţii. Înseamnă că aţi obţinut o soluţie.

Page 6: Backtracking-prezentare PPT

Pentru a obţine toate celelalte soluţii, nu vă rămâne decât să o luaţi de la început. Aveţi cam mult de muncit, iar dacă numărul invitaţilor este mare...operaţiunea devine foarte anevoioasă. Iată de ce aveţi nevoie de un calculator şi cunoştinţe de programare .

Page 7: Backtracking-prezentare PPT

Exemplu graficPermutări

Page 8: Backtracking-prezentare PPT

Problemă rezolvată (Permutări) 

var st:array[1..25] of integer;

i,n,p:integer;

procedure init;

 begin

write('N=');

readln(n);

for i:=1 to 25 do

st[i]:=0;

end;

function valid(p:integer):boolean;

 begin

valid:=true;

for i:=1 to p-1 do

if st[i]=st[p] then valid:=false;

end;

procedure tipar(p:integer);

var i:integer;

 begin

for i:=1 to p do writeln(st[i],' ');

end;

procedure back(p:integer);

 begin p:=1; {plecam de la primul nivel }

st[p]:=0; {initializam nivelul cu 0}

while p>0 do {cat timp stiva nu este vida}

 begin

if st[p]<n then {mai exista valori neincercate pe nivelul p}

 begin

st[p]:=st[p]+1; {st[p]<-<o noua valoare din multimea valorilor posibile>}

 if valid(p) then

if p=n then tipar(p) {solutia este finala}

 else begin p:=p+1;{trecem la nivelul urmator}

st[p]:=0; {initializam valoarea de pe nivel cu 0}

end;

end;

else

p:=p-1; {pas inapoi}

 end;

end;

begin

 

init;back(1);

end.

 

Page 9: Backtracking-prezentare PPT

Aplicații

Backtrackingul este util la rezolvarea unor probleme de satisfacere a constrângerilor, cum ar fi cuvintele încrucișate, jocuri de sudoku și alte probleme similare. Ea stă la baza unei serii de limbaje de programare logică, cum ar fi Icon, Planner și Prolog.

Algoritmul este mai efectiv decât cel al căutării și parcurgerii brute deoarece acesta poate înlătura multipli candidați în același timp. Cu toate acestea, acest algoritm rămâne a fi cea mai costisitoare metodă din punct de vedere al timpului de execuţie. Dar, la momentul actual este cea mai efectivă metodă pe care o avem.