도구스개발

벨만-포드 최단경로 계산기

음수 가중치가 있어도 정확한 최단경로를 구하고, 회차마다 어느 간선의 거리가 줄었는지 보여 줍니다. 음수 순환이 있으면 검출해 어느 정점이 −∞로 발산하는지까지 가려냅니다.

한 줄에 «출발 도착 가중치» 하나씩. 가중치가 음수여도 됩니다

정점 5개 · 간선 10개

3회차 만에 확정

끝까지 돌면 4회차인데 1회차를 아꼈습니다

정점별 최단거리

정점거리경로
A0A
B2A → C → D → B
C7A → C
D4A → C → D
E-2A → C → D → B → E

∞는 시작 정점에서 갈 길이 없다는 뜻이고, −∞는 음수 순환을 지나 끝없이 짧아진다는 뜻입니다.

회차별로 줄어든 간선

1회차6개 갱신

A→B ∞→6, A→C ∞→7, B→D ∞→11, B→E ∞→2, C→D 11→4, D→B 6→2

2회차1개 갱신

B→E 2→-2

3회차줄어든 간선 없음 → 여기서 멈춥니다

한 회차를 다 돌았는데 줄어든 간선이 하나도 없으면 그 뒤로도 영원히 줄지 않으므로 거기서 멈춥니다. 간선을 적는 순서에 따라 필요한 회차가 달라집니다.

벨만-포드는 «가장 가까운 것부터 확정»하지 않고 모든 간선을 정점 수 − 1번 훑으며 거리를 줄이기만 합니다. 최단경로는 같은 정점을 두 번 지나지 않아 간선을 많아야 V − 1개 쓰는데, 한 회차마다 «간선 하나만큼 더 뻗은» 최단경로가 확정되기 때문입니다.
다익스트라보다 느린 대신 옳습니다. 다익스트라는 빠르지만 음수 간선이 있으면 답이 틀리고 음수 순환을 알아채지도 못합니다. 벨만-포드는 O(V·E)로 느린 대신 음수 간선에서도 정확하고, V − 1회차 뒤에 한 번 더 훑어 여전히 줄어드는 간선이 있으면 음수 순환이라고 판정합니다.

사용 방법

  1. 1간선을 한 줄에 «출발 도착 가중치» 하나씩 넣습니다. 가중치가 음수여도 됩니다.
  2. 2시작 정점과 간선 방향을 정합니다.
  3. 3회차별로 어느 간선이 줄었는지 따라가고, 음수 순환 경고가 뜨는지 확인합니다.

자주 묻는 질문

«가장 가까운 정점부터 확정»하지 않고 모든 간선을 정점 수 − 1번 훑으며 거리를 줄이기만 합니다. 그래서 O(V·E)로 느리지만, 음수 가중치가 있어도 정확하고 음수 순환까지 잡아냅니다. 다익스트라는 빠른 대신 음수 간선에서 답이 틀립니다.

최단경로는 같은 정점을 두 번 지나지 않으므로 간선을 많아야 V − 1개 쓰기 때문입니다. 한 회차마다 «간선 하나만큼 더 뻗은» 최단경로가 반드시 확정되므로 V − 1회차면 모두 완성됩니다. 다만 대개 그보다 일찍 끝나며, 한 회차에 줄어든 간선이 하나도 없으면 그 뒤로도 줄지 않으므로 멈춰도 됩니다.

V − 1회차를 다 돌고 한 번 더 훑었을 때도 줄어드는 간선이 있으면 음수 순환입니다. 한 바퀴 돌 때마다 총 길이가 짧아지는 고리가 있다는 뜻이라, 무한히 돌면 거리가 −∞로 발산합니다. 그때는 «최단경로»라는 것 자체가 정의되지 않습니다.

아닙니다. 그 순환에서 갈 수 없는 정점의 거리는 여전히 정확합니다. 이 도구는 음수 순환에서 도달할 수 있는 정점만 −∞로 표시하고 나머지는 값을 그대로 보여 줍니다. 시작 정점에서 음수 순환에 아예 닿을 수 없으면 경고조차 뜨지 않습니다.

최종 답에는 영향이 없지만 필요한 회차 수는 달라집니다. 경로를 따라가는 순서로 적으면 한 회차에 거리가 끝까지 퍼지고, 거꾸로 적으면 회차마다 한 칸씩만 퍼집니다. 회차별 표에서 이 차이를 직접 볼 수 있습니다.

전송되지 않습니다. 계산은 전부 브라우저 안에서 이뤄지고, 입력값은 이 브라우저의 localStorage에만 남습니다.

알아두면 좋은 점

  • 무방향 그래프에 음수 간선이 있으면 그 간선 하나가 곧 음수 순환입니다. 왔다 갔다 하며 계속 줄일 수 있기 때문이며, 이 도구도 그렇게 판정합니다.
  • 정점은 120개까지 다루고, 회차별 기록은 앞의 30회차까지만 그립니다.
  • 최단경로가 여럿이면 그중 하나만 보여 줍니다. 거리는 어느 경로를 골라도 같습니다.
  • 가중치가 음수가 아닌 무작위 그래프 300개에서 dev/dijkstra-path와 거리가 모두 같은지 대조해 맞췄습니다. 두 알고리즘은 논리가 전혀 달라 서로를 확인해 줍니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.