• Sábado 20 de Abril de 2024, 01:39

Autor Tema:  Backtracking  (Leído 1760 veces)

pandemolde

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Backtracking
« en: Miércoles 24 de Agosto de 2005, 11:00 »
0
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.

fuhrer

  • Miembro MUY activo
  • ***
  • Mensajes: 329
  • Nacionalidad: mx
    • Ver Perfil
    • http://admin.busquenoseninternet.com
Re: Backtracking
« Respuesta #1 en: Viernes 26 de Agosto de 2005, 18:45 »
0
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.