그래프 알고리즘-1
다익스트라 최단 경로 알고리즘을 알아보자
- 그래프는 정점(vertex)의 집합과 정점들을 잇는 에지(edge)의 집합으로 구성된다
- G = <V, E>
- 만약 에지에 방향이 있다면 방향 그래프, 없으면 무방향 그래프, 에지에 가중치가 있으면 가중 그래프, 없으면 비가중 그래프
그래프는 객체(정점)과 객체 사이의 관계(에지)를 표현 할 수 있다.
다익스트라 최단 경로 알고리즘
보통 g=<v,e> 주어지고 시작 정점과 목적 정점이 주어지고 최소 비용 경로를 구하라고 한다.
다익스트라 알고리즘은 음수 가중치가 없는 그래프에서 동작하는 최단 경로 탐색 알고리즘으로 프림 MST알고리즘을 약간 변경한 형태
- 프림 알고리즘은 경계로부터 최소 거리를 정점의 거리 값으로 설정하지만, 다익스트라 알고리즘은 시작 정점으로부터 각 정점까지의 전체 거리를 사용한다.
- 다익스트라 알고리즘은 목적 정점이 나타나면 종료하지만 프림 알고리즘은 모든 정점을 방문해야 종료됨
알고리즘 동작
- 모든 정점의 거리 값을 무한대로 초기화. 시작정점은 자기자신까지의 거리이므로 0으로 설정, 그리고 모든 거리 값을 최소 힙H에 추가
- 최소 힙H로 부터 정점을 하나 꺼낸다. 이 정점을 U라고 하면, 정점 U는 시작 정점에서 가장 가까운 정점, 만약 U가 목적 정점이면 최단 경로를 찾은 것이므로 알고리즘을 종료
- U와 인접한 모든 정점V에 대해, 만약 V의 거리 값이 (U의 거리 값 + (U,V) 에지 가중치) 보다 크면 V까지 다다르는 더 짧은 경로를 찾은 것으로 볼 수 있다. ⇒ V의 거리 값을 (U의 거리 값 + (U,V) 에지 가중치) 값으로 설정
- 방문하지 않은 정점이 남아 있다면 2단계로 이동
예제
1 |
|