Tengo que encontrar un ciclo negativo en un gráfico ponderado dirigido. Sé cómo funciona el algoritmo Bellman Ford, y que me dice si hay un ciclo negativo alcanzable. Pero no lo nombra explícitamente.
¿Cómo puedo obtener la ruta real del ciclo?
Después de aplicar el algoritmo estándar, ya hicimos iteraciones y no debería ser posible ninguna mejora adicional. Si aún podemos reducir la distancia a un nodo, existe un ciclo negativo.
Mi idea es: dado que conocemos el borde que aún puede mejorar el camino y conocemos el predecesor de cada nodo, podemos rastrear nuestro camino desde ese borde hasta que lo encontremos nuevamente. Ahora deberíamos tener nuestro ciclo.
Lamentablemente, no encontré ningún documento que me diga si esto es correcto. Entonces, ¿realmente funciona así?
Editar: este ejemplo demuestra que mi idea es incorrecta. Dado el siguiente gráfico, ejecutamos Bellman-Ford desde el nodo .
Procesamos aristas en el orden . Después de n - 1 iteraciones obtenemos distancias de nodo: 1 : - 5 2 : - 30 3 : - 15
y tabla padre:
tiene padre 3 2 tiene padre 3 3 tiene padre 2
¿Cómo podemos resolver este problema?