자료 구조와 알고리즘
다익스트라 알고리즘으로 올바른 최단 경로를 구하기 위한, 그래프에 관한 조건으로 올바른 것은?
- A그래프에 사이클(같은 정점으로 돌아오는 경로)이 없을 것
- B간선에 방향이 없을 것
- C간선의 가중치가 모두 0 이상일 것
정답과 해설 보기
정답: C. 간선의 가중치가 모두 0 이상일 것
다익스트라 알고리즘은 미확정 정점 중 거리가 가장 작은 것을 확정합니다. 이는 다른 정점을 거치면 거리가 늘어나는 일은 있어도 줄어드는 일은 없다는 전제에 기반합니다. 음의 가중치를 가진 간선이 있으면 나중에 다른 경로로 거리가 짧아지는 경우가 있으며, 예를 들어 S→A가 2, S→B가 3, B→A가 −2인 방향 그래프에서는 A를 2로 확정한 뒤에 S→B→A의 1이 발견됩니다. 음의 가중치가 있을 때는 벨먼-포드 알고리즘 등을 사용합니다. 사이클이 있어도, 간선에 방향이 있어도, 가중치가 0 이상이면 다익스트라 알고리즘을 사용할 수 있습니다.