직접 가중 그래프에서 음의주기를 찾아야합니다. Bellman Ford 알고리즘의 작동 방식을 알고 있으며 도달 가능한 음수 사이클이 있는지 알려줍니다. 그러나 명시 적으로 이름을 지정하지는 않습니다.
사이클 의 실제 경로 을 어떻게 얻을 수 있습니까?
표준 알고리즘을 적용한 후에는 이미 반복을 수행했으며 더 이상 개선 할 수 없습니다. 여전히 노드까지의 거리를 낮출 수 있다면 음수 사이클이 존재합니다.
내 생각은 : 우리는 여전히 경로를 향상시킬 수있는 가장자리를 알고 각 노드의 선행 작업을 알고 있기 때문에 다시 만날 때까지 그 가장자리에서 되돌아 갈 수 있습니다. 이제 우리는주기를 가져야합니다.
슬프게도, 이것이 올바른지 알려주는 논문을 찾지 못했습니다. 그래서 실제로 그렇게 작동합니까?
편집 : 이 예제는 내 생각이 잘못되었음을 증명합니다. 다음 그래프가 주어지면 노드 에서 Bellman-Ford를 실행합니다 .
우리는 순서 로 가장자리를 처리합니다 . n - 1 반복 후에 노드 거리를 얻습니다 : 1 : − 5 2 : − 30 3 : − 15
그리고 부모 테이블 :
이 상위 3 (2) 이 상위 3 (3) 부모가 2
이제 번째 반복을 수행하면 edge a를 사용하여 노드 1 의 거리를 계속 향상시킬 수 있습니다 . 따라서 우리는 음의주기가 존재하고 a 가 그 주기임을 알고 있습니다.
그러나, 부모 테이블을 통해 우리의 방법 등을 추적하여, 우리는 또 다른 부정적인주기에 박히 결코 만족하지 을 다시.
이 문제를 어떻게 해결할 수 있습니까?