최소의 총 가중치를 갖는 spanning tree를 찾는 방법 중 prim's algorithim과 kruskal's algrithm에 대해 알아보겠다.
spanning tree에 대한 글은 아래 참고
2022.07.01 - [자료구조] - [자료구조] spanning tree (sub graph)
- Prim's algorithm
1. undirected graph에서 하나의 시작 노드를 정한다.
2. 모든 인접한 노드중에서 가장 작은 가중치를 가진 edge를 선택한다.
3. 선택된 노드를 포함해서 모든 인접한 노드로 위의 과정을 계속 반복한다.
4. 그래프의 모든 노드가 포함되면 종료한다.
노드 G를 시작점으로 잡고 Prim's algorithm을 실행하면 다음과 같은 결과가 나온다.
선택이 가능한 인접한 edge는 분홍색 하이라이터로 표시하고 선택된 노드와 edge는 빨간펜으로 표시했다.
Prim's algorithm 실행 결과, 선택된 edge는 달라도 되지만 선택된 edge의 총 합은 같아야 한다.
- Kruskal's algorithm (greedy algorithm)
1. undirected graph의 모든 노드중에서 가장 작은 가중치를 가진 edge를 선택한다.
2. 모든 노드로 계속 위의 과정을 반복한다.
3. 그래프의 모든 노드가 포함되면 종료한다.
Kruskal's algorithm을 실행하면 다음과 같은 결과가 나온다.
선택된 edge는 빨간펜으로 표시했다.
Kruskal's algorithm 실행 결과, 선택된 edge는 달라도 되지만 선택된 edge의 총 합은 같아야 한다.
[자료구조] 쿼드트리 (QuadTree) (0) | 2022.07.12 |
---|---|
[자료구조] Dijkstra's algorithm (0) | 2022.07.11 |
[자료구조] 백준 1927번: 최소 힙 (0) | 2022.07.04 |
[자료구조] spanning tree (sub graph) (0) | 2022.07.01 |
[자료구조] 그래프(graph) 기본 개념/용어 정리 (0) | 2022.06.28 |
댓글 영역