|
La dispozi?ia celor care rezolv? probleme cu ajutorul calculatorului exist? mai multe metode . Dintre acestea cel mai des utilizate sunt:
- metoda Greedy;
- metoda Divide et impera;
- metoda Branch and Bound;
- metoda Backtracking;
Metoda Backtracking se aplic? problemelor în care solu?ia poate fi reprezentat? sub forma unui vector – x = (x1, x2, x3, …xk,… xn) € S, unde S este mul?imea solu?iilor problemei ?i S = S1 x S2 x… x Sn, ?i Si sunt mul?imi finite având s elemente si xi € si , (Ą)i = 1..n.
Pentru fiecare problem? se dau rela?ii între componentele vectorului x, care sunt numite condi?ii interne; solu?iile posibile care satisfac condi?iile interne se numesc solu?ii rezultat. Metoda de generare a tuturor solu?iilor posibile si apoi de determinare a solu?iilor rezultat prin verificarea îndeplinirii condi?iilor interne necesit? foarte mult timp.
Metoda backtracking evit? aceast? generare ?i este mai eficient?. Elementele vectorului x, primesc pe rând valori în ordinea cresc?toare a indicilor, x[k] va primi o valoare numai daca au fost atribuite valori elementelor x1.. x[k-1]. La atribuirea valorii lui x[k] se verifica îndeplinirea unor condi?ii de continuare referitoare la x1…x[k-1]. Daca aceste condi?ii nu sunt îndeplinite, la pasul k, acest lucru înseamn? ca orice valori i-am atribui lui x[k+1], x[k+1], .. x[n] nu se va ajunge la o solu?ie rezultat.
Metoda backtracking construie?te un vector solu?ie în mod progresiv începând cu prima component? a vectorului ?i mergând spre ultima cu eventuale reveniri asupra atribuirilor anterioare.
Metoda se aplica astfel :
1) se alege prima valoare sin S1 si I se atribuie lui x1 ;
2) se presupun generate elementele x1…x[k-1], cu valori din S1..S[k-1]; pentru generarea lui x[k] se alege primul element din S[k] disponibil si pentru valoarea aleasa se testeaz? îndeplinirea condi?iilor de continuare.
Pot ap?rea urm?toarele situa?ii :
a) x[k] îndepline?te condi?iile de continuare. Daca s-a ajuns la solu?ia final? (k = n) atunci se afi?eaz? solu?ia ob?inut?. Daca nu s-a ajuns la solu?ia final? se trece la generarea elementului urm?tor – x [k-1];
b) x[k] nu îndepline?te condi?iile de continuare. Se încearc? urm?toarea valoare disponibila din S[k]. Daca nu se g?se?te nici o valoare în S[k] care s? îndeplineasc? condi?iile de continuare, se revine la elementul x[k-1] ?i se reia algoritmul pentru o nou? valoare a acestuia. Algoritmul se încheie când au fost luate in considerare toate elementele lui S1.
|