Ciao a tutti ho dei grossi problemi nel capire la tecnica Backtracking. O meglio, il concetto è chiaro, ma non riesco a capire l'algorimo base, quello che vi posto. Qualcuno sarebbe così gentile, da spiegarmi la funzione di tutti questi while e magari commentarmi le righe di codice più importante? Grazie mille
PS= primo_punto_di_scelta scelta;
S= prima_scelta scelta;
backtrack= false;
do{

while( !backtrack ){
if( assegnabile(S,PS) ){
assegna(S,PS PS); );
if( PS== ultimo_punto_di_scelta }{
scriviSoluzione(); deassegna(S,PS);
if( S!= ultima_scelta) S= prossima_scelta ;
else backtrack=true;
}
else {
PS= prossimo_punto_di_scelta;
S=prima_scelta;
}
}
else if( S!= ultima_scelta ) S= prossima_scelta ;
else backtrack=true;
}//while( !backtrack )

fine=PS== primo_punto_di_scelta ;
while( backtrack && !fine }{
PS= precedente_punto_di_scelta;
S= ultima_scelta_assegnata_a PS;
deassegna(S,PS); );
if( S!= ultima_scelta ){
S= prossima_scelta ; backtrack=false;
}
else if( PS== primo_punto_di_scelta ) fine=true;
}
}while( !fine );