[Java] backtrack

valesyle92
salve a tutti, volevo chiedere ma la tecnica del backtracking in java si utilizza sfruttando la ricorsione e creando un metodo che restituisce un valore boolean? grazie

Risposte
hamming_burst
"valesyle92":
salve a tutti, volevo chiedere ma la tecnica del backtracking in java

che sia Java od un vetusto Pascal, non cambierebbe. E' una tecnica algoritmica ed è astratta ad un linguaggio in particolare.

"valesyle92":
si utilizza sfruttando la ricorsione e creando un metodo che restituisce un valore boolean? grazie

esiste anche la versione iterativa, dipende dal problema e dal modello di soluzione adottato. Es. stampare le combinazioni semplici di n elementi presi a k a k, dalla versione iterativa a quella ricorsiva c'è un gap di efficienza. Al contrario: Inviluppo convesso ed algoritmo di Graham.
Diciamo che la versione ricorsiva è più naturale con il backtracking, con la versione iterativa si devono creare algoritmi modellati a dovere.

valesyle92
grazie molte per aver risposto, solo che non ho capito l'ultimo punto di questo procedimento :
Si ha un certo problema da risolvere, dove un certo numero di variabili (o celle di un array) devono assumere determinati valori compatibili tra loro.
-Si imposta un caso base all'interno di un metodo, in modo da far sì che quando le mie variabili hanno assunto tutte una determinati valori compatibili tra loro, io esco dal mio metodo.
-Si fa assumere alla prima delle mie variabili (o celle) il prossimo valore possibile, partendo dal primo.
-Si prova ad estendere il problema alla prossima variabile effettuando una o più chiamate ricorsive del metodo.
-Se raggiungo un vicolo cieco scarto il valore dell'ultima variabile, torno indietro di un passo e provo a far assumere alla variabile precedente il prossimo valore . cosa che a me personalmente risulta difficile da implementare in java....cioe' per tornare indietro il segnale puo' essere un valore boolean? se e' false allora torno indietro ? se è true vado avanti? si fa sempre cosi?

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.