Sunteți pe pagina 1din 1

BACKTRACKING

-se utilizeaza in probleme ale caror solutii sunt vectori. Ex: x-vector solutie cu n
componente.
Metoda evita generarea tuturor solutiilor posibile, prin constructia unei solutii progresiv
astIel:
-daca x|k| a primit valoare, se veriIica daca x|1|,x|2|....x|k| este secventa dintr.o solutie
posibila.
Acest lucru se Iace veriIicand conditiile interne ale problemei.

-daca x|k| a primit valoare si s.au veriIicat conditiile interne ale problemei,atunci se trece
la componenta urmatoare x|k1|;

-daca pentru x|k| s-au probat toate valorile din multime, atunci se revine la x|k-1| si se
modiIica valoarea acestei componente.

-daca x|n| a primit valoare, s-a generat o solutie si se tipareste aceasta.

-algoritmul se incheie cand pentru x|1| s-au probat toate valorile.

x|k| apartine multimii 1,2,.....,sk] }
Conditiile interne ale problemei se veriIica printr-o Iunctie cond( ) :
int cond ( int k) , care returneaza 1, daca conditiile sunt indeplinite
0, altIel.
Initializarea vectorului solutie se Iace in Iunctia void init ( ) si x|k| se initializeaza cu
minim -1, unde minim este cea mai mica valoare pe care o poate primi x|k|.
Tiparirea solutiilor se Iace cu Iunctia void tipar ( ).
MODELARE.
void BKT( )
int i,k;
init ( ); //initializarea vectorului solutie

k1; //initializarea primei componente.
while (k~0)
iI( kn1) tipar ( );
k--; //s-a gasit o solutie. Se revine la componenta x|n|.
else
iI( x|k|sk])
x|k|; // se trece la valoarea urmatoare;
iI ( cond(k)) k; //se trece la componenta urmatoare.
}
else init1( x|k|); // se initializeaza componenta x|k|;
k--; // se revine la componenta anterioara
}

}
}

S-ar putea să vă placă și