크루스칼 알고리즘과 Prim's 알고리즘으로 해결할 수 있다. 이걸 MST (Minimal Spanning Tree) 알고리즘이라고 한다.
난 Prim's 알고리즘으로 해결했다.
다익스트라 알고리즘과 유사하지만 '정점으로 가는 최단거리'를 계속 갱신해 줄 필요가 없다.
그리고 다익스트라 알고리즘은 정점을 연결하는 간선의 방향이 존재하는데, MST는 그저 '연결되었는가?' 이다.
pq : 현재 위치에서 갈 수 있는, 혹은 지금까지 갈 수 있었던 정점들을 거리순으로 정렬해 놓는 우선순위 큐
dist : 스패닝 트리를 만드는 최소비용을 누적해나갈 변수
1. 큐에서 하나 빼고 이미 갔던 곳인지 검사한다. 이미 갔던 곳이라면 반복.
2. 이전 위치로부터 현재 위치로 가는 거리를 dist에 추가함.
3. 현재 위치에서 갈 수 있는 정점들을 pq에 담는다.
이걸 우선순위 큐를 비울 때까지 반복.
반응형
'Algorithm' 카테고리의 다른 글
DFS, BFS, 다익스트라, 플로이드 와샬, 프림 알고리즘 이야기 (0) | 2016.10.15 |
---|---|
[Algorithm][다익스트라][boj]1753 최단경로 (0) | 2016.10.09 |
[backjoon oj][Dynamic] 11726 - 2 X N 타일링 (0) | 2016.10.05 |