Skip to content

문제 6 · 다익스트라 알고리즘으로 최단 경로 찾기

문제 6 [4점]

7개의 정점vertex v1, v2, ..., v7을 가진 임의의 유향 가중치 그래프directed weighted graph를 그리고(1점), 시작점 v3로부터 다익스트라 알고리즘Dijkstra's algorithm을 적용하여 최소 경로shortest path를 찾는 과정을 보이시오(3점).

풀이 및 해설

예시 그래프(방향 간선, 가중치 ≥ 0)

간선가중치간선가중치
v3v22v1v56
v3v45v5v62
v2v14v4v67
v2v41v5v78
v4v53v6v74

다익스트라 알고리즘

v3 의 거리를 0, 나머지를 로 두고, 아직 확정되지 않은 정점 중 거리가 가장 작은 것을 골라 확정한 뒤, 그 정점에서 나가는 간선으로 이웃의 거리를 완화(relax)한다.

확정 순서확정 정점확정 거리완화 결과(갱신된 거리)
1v30v2=2, v4=5
2v22v1=6, v4=3(5→3)
3v43v5=6, v6=10
4v56v6=8(10→8), v7=14
5v16v5 완화 시도 12>6 → 변화 없음
6v68v7=12(14→12)
7v712

최단 거리와 경로(v3 기준)

d(v3)=0, d(v2)=2, d(v4)=3, d(v1)=6, d(v5)=6, d(v6)=8, d(v7)=12
  • v3v2 (2)
  • v3v2v4 (3)
  • v3v2v1 (6)
  • v3v2v4v5 (6)
  • v3v2v4v5v6 (8)
  • v3v2v4v5v6v7 (12)

👉 실습(C++)에서 확인하기

PDF