문제

Bellman-Ford 알고리즘은 e (| e | am | v |)의 실행 시간이 있음을 알게되었으며 e는 가장자리 수와 v 정점 수입니다.그래프에 부정적인 가중 사이클이 없으므로

내 첫 번째 질문은 (| v | -1) 반복 (모든 반복이 E에서 모든 가장자리를 검사하는 것)이 특정 시작 노드가 지정된 모든 가능한 노드에 대한 최단 경로를 업데이트합니다.우리가 iterated (| v | -1) 시간이지만 모든 노드에 가장 짧은 경로로 끝나지 않아야합니다.

알고리즘의 정확성을 가정하면 실제로 그보다 더 잘 수행 할 수 있습니까?모든 가장자리가 특정 그래프에서 부정적으로 가중치가 아닌 것은 아닙니다.Bellman-Ford 알고리즘은 모든 가장자리를 통과하는 모든 반복으로 모든 반복이됩니다.

도움이 되었습니까?

해결책

소스에서 모든 버텍스로 가장 긴 경로는 그래프의 다른 모든 정점에서 포함됩니다. 다른 말로하면 - 당신은 반드시 무게를 증가시킬 것입니다 (이것은 음의주기가없는 사실 덕분에만이 사실 일 것입니다). 각 반복 에서이 경로의 다음 버텍스에서 가장 짧은 경로 가중치를 업데이트 할 때까지 | v | v -1 반복에 대한 업데이트가 해당 경로의 끝 부분에 도달해야합니다. 그런 다음 업데이트가 모든 최단 경로를 해당 길이까지 다루었으므로 좁은 값이없는 정점이 없습니다.

이 복잡성은 (적어도 BF 용), 연결된 정점의 긴 줄을 생각해보십시오. 가장 왼쪽을 소스로 선택하십시오 - 업데이트 프로세스는 한 번에 한 번 버튼을 한 번만 다른쪽으로 이동해야합니다. 이제는 그 모든 가장자리를 확인할 필요가 없으므로 매우 큰 무게 (n> | v | * 최대 무게)가있는 몇 가지 임의의 가장자리를 던지겠습니다. 알고리즘은 확실히 알 수 없으므로 이러한 가중치로 정점을 업데이트하는 과정을 거쳐야합니다 (여전히 초기 무한대보다 낫습니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top