2011-03-01 17 views
14

Estoy tratando de encontrar una ruta entre dos nodos en un gráfico, donde los bordes son sin ponderar.¿Cómo obtener la ruta entre 2 nodos usando la búsqueda de primer orden?

Estoy utilizando un Breadth First Search, que se detiene cuando encuentra el destino, con el fin de encontrar la existencia de una ruta, pero no estoy seguro de cómo obtener la ruta en sí.

Intenté mirar la lista de nodos visitados, pero esto no pareció ayudar. Vi a alguien responder esta pregunta usando prolog, pero soy un programador de C++.

También miré en Dijkstras algorithm, pero esto parece más de matar, ya que una simple búsqueda en Breadth-first me consiguió casi todo el camino.

¿Cómo obtener la ruta entre 2 nodos utilizando la búsqueda de primer orden?

Respuesta

22

En su estructura de nodo, agrega una variable llamada parentNode que es la principal de ese nodo en la ruta. Al final, puede recuperar la ruta al atravesar desde el nodo objetivo hacia atrás.

+6

Creo que este enfoque funcionaría para árboles, pero no para gráficos, donde un nodo podría tener múltiples padres. En este caso, es posible que necesitemos mantener una lista a medida que se construye la ruta. –

Cuestiones relacionadas