나는 Johnson Algorithm의 유용성을 이해하는 데 어려움이 있습니다. 나는이 분야에 대한 지식을 가진 누군가에게 질문이 정말로 바보 같아야한다고 생각하지만, 나는 그것을 이해할 수 없다. Wikipedia에 따르면 Johnson 알고리즘은 Bellman Ford Algorithm을 사용하여 가장자리의 가중치를 음이 아닌 가중치로 변환 한 다음 Dijkstra 알고리즘을 사용하여 최단 경로를 찾습니다. 그러나 Bellman Ford Algorithm은 최단 경로를 찾는 알고리즘이기도합니다. Bellman Ford Algorithm에서 얻은 최단 경로를 사용하지 않는 이유는 무엇입니까?최단 경로 : Bellman-Ford 대 Johnson
3
A
답변
7
Bellman-Ford 알고리즘은 단일 소스에서 모든 그래프 정점 ("단일 소스 최단 경로")까지의 최단 경로를 찾습니다. Johnson의 알고리즘은 모든 정점에서 다른 모든 정점 ("모든 쌍의 최단 경로")까지의 최단 경로를 찾습니다. 따라서 그래프의 가능한 모든 시작점에서 Bellman-Ford를 실행하는 것과 같습니다.
0
Bellman Ford 알고리즘은 단일 꼭지점 (소스)에서 다른 모든 꼭지점까지 최단 경로를 찾는 데 사용되지만, Johnson 알고리즘은 모든 쌍의 최단 경로를 찾는 데 사용됩니다. C에서 Johnson 알고리즘을 구현하려면 알립니다.
0
나는이 파티에 늦었다 고 알고있다. 그러나 나는 단지 나 자신에게 똑같은 것을 요구했기 때문에 질문에 비틀 거렸다.
더 나은 이해를 위해 Johnson의 알고리즘의 첫 번째 단계는 실제로 이 새로운 그래프을 생성한다는 것을 지적하고자합니다. 이 작업은 Bellman-Ford 알고리즘을 사용하여 원래의 그래프 (음의 모서리를 가질 수 있음)를 음의 모서리가없는 다른 (그러나 등가의) 그래프로 변환하여 수행합니다. 이 새로운 그래프는 이제 Dijkstra의 알고리즘과 함께 사용하는 것이 안전합니다. 그런 다음 Dijkstra 's 알고리즘을 사용하여 두 개의 다른 답변에 언급 된 "모든 쌍 최단 경로"를 효율적으로 계산합니다.
여기에 좋은 설명이 있습니다. http://www.geeksforgeeks.org/johnsons-algorithm/
관련 문제
- 1. Dag의 최단 경로
- 2. 최단 경로 프로그램
- 3. 지도의 최단 경로
- 4. 미로를 통과하는 최단 경로
- 5. 사용자 지정지도 최단 경로
- 6. 가중치가없는 최단 경로
- 7. 그래프에서 경로가 아닌 최단 경로
- 8. 색이있는 가장자리 그래프의 최단 경로
- 9. k 번째 최단 경로 찾기?
- 10. C# - 최단 경로 찾기 찾기
- 11. 플렉스 4, 회전 전환, 최단 경로 사용?
- 12. C++ win32 GUI 프로그래밍, 최단 경로?
- 13. 모든 경로와 그래프의 최단 경로 검색 - 프롤로그
- 14. JUNG API에서 최단 경로 알고리즘의 성능
- 15. 아날로그 시계에 대한 최단 경로 알고리즘
- 16. 최단 경로 트리의 총 비용을 최소화하는 방법
- 17. 알고리즘 : 모든 점 사이의 최단 경로
- 18. Bellman-Ford 최단 경로 알고리즘의 성능
- 19. 식료품 점을 통한 최단 경로 계산
- 20. 프롤로그에서 너비 우선 탐색으로 최단 경로 반환
- 21. JUNG의 트리 맵 (최단 경로 알고리즘 용)
- 22. DAG에서 노드를 통과하는 최단 경로 수를 계산합니다.
- 23. 두 노드 사이의 최단 경로 찾기 (정점)
- 24. 최단 경로 문제에 대한 그래픽 도구?
- 25. 새로운 FileInfo (경로) .Name 대 Path.GetFileName (경로)
- 26. Oracle에서 최단 경로를 찾으라는 질문
- 27. 모두 또는 아무것도 - 빠른 발견 적 최단 경로 알고리즘 (병렬?)
- 28. AI 검색 문제 : 장애물이있는 평면에서 2 점 사이의 최단 경로
- 29. 2 차원 모양으로 표현 된지도에서 최단 경로 검색
- 30. 시공간 트레이드 오프를 사용하는 최단 경로 알고리즘은 무엇입니까?