SoloCodigo

Programación Específica => Diseño de Algoritmos => Mensaje iniciado por: pandemolde en Miércoles 24 de Agosto de 2005, 11:00

Título: Backtracking
Publicado por: pandemolde en Miércoles 24 de Agosto de 2005, 11:00
Muy buenas. Después de estudiar la filosofía del algoritmo Backtracking, he realizado una aplicación para encontrar todos los caminos posibles entre dos nodos. El problema es que solo me encuentra un camino y se para. ¿Como lo hago para que siga calculando?. Adjunto el codigo de la función:

 void hallar_camino(int camino[50]){
 
  int aux=0;
  for(b=0; b<NUMNODOS;b++){
   a=camino[pos];
   
   if (matriz[a]==1 && visitado==0){
    pos++;
    camino[pos]=b;
    visitado=1;
    if(!es_final(B))
     hallar_camino(camino);
    else
     escribir_solucion();
   
    b=camino[pos];
    camino[pos]=0;
    pos--;
   }
  }
 }//fin hallar_camino

La llamada es: hallar_camino(camino);

Muchas gracias por todo y un saludo.
Título: Re: Backtracking
Publicado por: fuhrer en Viernes 26 de Agosto de 2005, 18:45
Hola que tal.

El problema que tienes es que tienes una condición en la cual verificas si es el final del camino o no, en caso de que no se final de camino, continuas buscando, y si has llegado al final, sólo imprimes resultados, lo que debes hacer es despues de imprimer resultados volver a llamar a buscar camino, con tu posición no visitada, y eso es todo.

Hasta luego.