Documente Academic
Documente Profesional
Documente Cultură
Backtracking Curs
Backtracking Curs
DESCRIERE I APLICABILITATE
Backtracking este o metod de rezolvare a unor probleme care ndeplinesc urmtoarele condiii simultan:
Soluia lor poate fi pus sub forma unui vector V , cu V[i] Ai, i = 1..n;
Mulimile Ai, i=1..n sunt mulimi finite, iar elementele lor se consider a fi ntr-o relaie de ordine bine
stabilit;
Nu se dispune de o alt metod de rezolvare mai rapid.
OBSERVAII:
Nu pentru toate problemele n este cunoscut de la nceput;
V[i], i=1..n pot fi la rndul lor vectori;
n multe probleme Ai, i=1..n coincid.
EXEMPLU:
Generarea permutrilor mulimii {1, 2, , N}.
CAZ PARTICULAR: N=3
Soluia este: {1, 2, 3}, {1, 3, 2}, {2, 1, 3}, {2, 3, 1}, {3, 1, 2}, {3, 2, 1}
A1 = A2 = A3 = {1, 2, 3}
1
CONCRET:
Iniial:
Se alege primul element V[1] care aparine lui A1;
La pasul k:
Presupunnd generate elementele V[1], V[2], , V[k-1], V[i] Ai, se caut[ un element pentru V[k]
Se alege (dac exist) un element din Ak. ( V[k]++; )
Exist dou posibiliti.
Observaie:
Tehnica Backtracking are ca rezultat obinerea tuturor soluiilor problemei.
n cazul n care se cere o singur soluie se poate fora oprirea, atunci cnd a fost gsit prima soluie.
OBSERVAII:
Vectorul soluie va avea lungimea constant N (3)
Pentru fiecare component a vectorului vom testa elementele 1, 2, .. , N (1, 2, 3). n acest caz
mulimile A1, A2, .. AN sunt identice.
Funcia de tiere trebuie s decid dac elementele V[1], V[2], , V[k-1] sunt diferite de V[k]
Funcia de tiprire va afia elementele V[1], V[2], , V[N].