벨만-포드 최단경로 계산기
음수 가중치가 있어도 정확한 최단경로를 구하고, 회차마다 어느 간선의 거리가 줄었는지 보여 줍니다. 음수 순환이 있으면 검출해 어느 정점이 −∞로 발산하는지까지 가려냅니다.
한 줄에 «출발 도착 가중치» 하나씩. 가중치가 음수여도 됩니다
정점 5개 · 간선 10개
3회차 만에 확정
끝까지 돌면 4회차인데 1회차를 아꼈습니다
정점별 최단거리
| 정점 | 거리 | 경로 |
|---|---|---|
| A | 0 | A |
| B | 2 | A → C → D → B |
| C | 7 | A → C |
| D | 4 | A → C → D |
| E | -2 | A → C → D → B → E |
∞는 시작 정점에서 갈 길이 없다는 뜻이고, −∞는 음수 순환을 지나 끝없이 짧아진다는 뜻입니다.
회차별로 줄어든 간선
A→B ∞→6, A→C ∞→7, B→D ∞→11, B→E ∞→2, C→D 11→4, D→B 6→2
B→E 2→-2
한 회차를 다 돌았는데 줄어든 간선이 하나도 없으면 그 뒤로도 영원히 줄지 않으므로 거기서 멈춥니다. 간선을 적는 순서에 따라 필요한 회차가 달라집니다.
사용 방법
- 1간선을 한 줄에 «출발 도착 가중치» 하나씩 넣습니다. 가중치가 음수여도 됩니다.
- 2시작 정점과 간선 방향을 정합니다.
- 3회차별로 어느 간선이 줄었는지 따라가고, 음수 순환 경고가 뜨는지 확인합니다.
자주 묻는 질문
«가장 가까운 정점부터 확정»하지 않고 모든 간선을 정점 수 − 1번 훑으며 거리를 줄이기만 합니다. 그래서 O(V·E)로 느리지만, 음수 가중치가 있어도 정확하고 음수 순환까지 잡아냅니다. 다익스트라는 빠른 대신 음수 간선에서 답이 틀립니다.
최단경로는 같은 정점을 두 번 지나지 않으므로 간선을 많아야 V − 1개 쓰기 때문입니다. 한 회차마다 «간선 하나만큼 더 뻗은» 최단경로가 반드시 확정되므로 V − 1회차면 모두 완성됩니다. 다만 대개 그보다 일찍 끝나며, 한 회차에 줄어든 간선이 하나도 없으면 그 뒤로도 줄지 않으므로 멈춰도 됩니다.
V − 1회차를 다 돌고 한 번 더 훑었을 때도 줄어드는 간선이 있으면 음수 순환입니다. 한 바퀴 돌 때마다 총 길이가 짧아지는 고리가 있다는 뜻이라, 무한히 돌면 거리가 −∞로 발산합니다. 그때는 «최단경로»라는 것 자체가 정의되지 않습니다.
아닙니다. 그 순환에서 갈 수 없는 정점의 거리는 여전히 정확합니다. 이 도구는 음수 순환에서 도달할 수 있는 정점만 −∞로 표시하고 나머지는 값을 그대로 보여 줍니다. 시작 정점에서 음수 순환에 아예 닿을 수 없으면 경고조차 뜨지 않습니다.
최종 답에는 영향이 없지만 필요한 회차 수는 달라집니다. 경로를 따라가는 순서로 적으면 한 회차에 거리가 끝까지 퍼지고, 거꾸로 적으면 회차마다 한 칸씩만 퍼집니다. 회차별 표에서 이 차이를 직접 볼 수 있습니다.
전송되지 않습니다. 계산은 전부 브라우저 안에서 이뤄지고, 입력값은 이 브라우저의 localStorage에만 남습니다.
알아두면 좋은 점
- 무방향 그래프에 음수 간선이 있으면 그 간선 하나가 곧 음수 순환입니다. 왔다 갔다 하며 계속 줄일 수 있기 때문이며, 이 도구도 그렇게 판정합니다.
- 정점은 120개까지 다루고, 회차별 기록은 앞의 30회차까지만 그립니다.
- 최단경로가 여럿이면 그중 하나만 보여 줍니다. 거리는 어느 경로를 골라도 같습니다.
- 가중치가 음수가 아닌 무작위 그래프 300개에서 dev/dijkstra-path와 거리가 모두 같은지 대조해 맞췄습니다. 두 알고리즘은 논리가 전혀 달라 서로를 확인해 줍니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.