Cómo encontrar las rutas que cubren todos los vértices dados (también se conocen el vértice inicial y final) en un gráfico cuyos bordes tienen peso y dirección

El problema en sí no está formulado claramente. ¿Qué tipo de gráfico? ¿Es un gráfico dirigido simple (dígrafo)? Multigrafo dirigido? ¿Qué tipo de “dirección”? Eso podría significar otra noción como bidireccionada (donde los bordes tienen direcciones en ambos lados de los bordes), que es mucho más complicado. Defina a qué se refiere como “portada”.

Sugiero averiguar qué términos desde un punto de vista teórico de grafos se formula el problema. Dependiendo de eso, marcará una diferencia en la dificultad para adaptar este problema a una solución (en muchos casos no será algo en tiempo polinómico ya que en la mayoría de estos casos el número de caminos puede ser exponencial (como encontrar el más largo ruta o incluso una ruta hamiltoniana es NP-hard para la mayoría de las clases de gráficos)). Le será más fácil encontrar una respuesta ya que el problema que ha descrito está incompleto. Por ejemplo, si su gráfico es un gráfico acíclico dirigido, este problema es más fácil de implementar para una solución (ver Gráficos dirigidos).

Le remitiré a esta respuesta en StackExchange, ya que puede darle algunas ideas: Encuentre todas las rutas entre dos nodos gráficos

¡Espero que esto ayude!

Entiendo su problema como encontrar una ruta arbitraria (posiblemente visitar un vértice más de una vez, se llama una teoría de caminar en el gráfico) que visita cada vértice al menos una vez, y no es necesariamente el más corto.

Una forma de hacerlo es primero descomponer el gráfico en Strongly_connected_component. Por ejemplo:

(imagen de wikipedia, CC-BY-SA 3.0)

Si existe dicha caminata, el gráfico SCC debe formar una cadena . Es decir, debe estar conectado y tener un grado máximo 1.

Entonces podemos comenzar desde la parte superior de SCC. Elija cualquier permutación de los vértices dentro de ese SCC y visítelos uno por uno. Por definición de SCC se garantiza que dicha ruta existe. Después de visitar todos los vértices en el SCC superior, pase al siguiente SCC y haga lo mismo.

Creo que estás preguntando sobre el problema del camino hamiltoniano. Desafortunadamente, el problema es NP-completo, por lo que casi seguro que no existe una solución eficiente que funcione para cualquier gráfico.

Si tiene un tipo especial de gráfico que le interesa, entonces podría hacerlo mejor.