algoritmo de búsqueda en profundidad

el algoritmo de profundidad primero implementado en la biblioteca boost visita cada vértice solo una vez.

¿Hay alguna solución para desactivar esta opción? Quiero que los vértices se puedan visitar siempre que haya una rama en cualquier vértice.

cualquier sugerencia...

EDIT: El gráfico es acíclico.

preguntado el 08 de enero de 11 a las 20:01

¿Puede dar un ejemplo? es decir, una situación en la que se visitaría un vértice más de una vez? -

Esto podría repetirse indefinidamente si el gráfico tiene ciclos. ¿Puede ser más específico sobre su condición de terminación? -

3 Respuestas

Si desea enumerar todas las rutas en un gráfico acíclico, no creo que pueda modificar fácilmente la búsqueda en profundidad para hacer eso. Existen algoritmos diseñados específicamente para este propósito, en particular: Rubin, F .; , "Enumeración de todas las rutas simples en un gráfico", Circuitos y sistemas, IEEE Transactions on, vol.25, no.8, pp. 641-642, agosto de 1978.

Si conoce el algoritmo Floyd-Warshall, puede modificarlo fácilmente para calcular una lista de rutas en cada elemento de la matriz, en lugar de la distancia mínima, que hará el trabajo. El artículo anterior utiliza algunas operaciones de bits para que esto se ejecute un poco más rápido.

Respondido el 09 de enero de 11 a las 22:01

queremos que los vértices se puedan visitar siempre que haya una rama en cualquier vértice.

¿Qué propones que haga un iterador cuando llega a una rama en un vértice?

La búsqueda en profundidad es solo una respuesta a esta pregunta. Aquí son algunos otros.

Pero tienes que elegir algo. No se trata de apagar DFS.

Respondido el 08 de enero de 11 a las 23:01

Creo que eso es imposible por diseño. Porque si tu gráfica contiene ciclos (y los tienes ahí, cuando dices, que el vértice se puede visitar más de una vez), el algoritmo terminará en un bucle sin fin.

Respondido el 08 de enero de 11 a las 23:01

El gráfico es acíclico. El propósito es calcular el número de caminos. - sa11

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.