21-02-27 알고리즘 기초강의
서로소 집합과 크루스칼 알고리즘
- 크루스칼 알고리즘
- 해답의 집합을 공집합으로 두고, V의 서로소 집합을 생성한다. E를 비내림차순으로 정렬한다.
- 정렬된 E 집합에서 간선 e = (i, j)를 선택하고 두 정점 i, j가 속한 집합 p, q를 찾아서 p, q가 같으면 e를 버리고 다르면 F에 e를 포함시킨 후에 p, q를 합친다.
- |F| = n - 1이면 종료, 아니면 2단계를 반복한다.
- 사이클 탐지는 어떻게 할까?
→ 교집합이 공집합인 두 집합 A, B, 즉 서로소 집합을 만든다
→ 두 개의 원소가 같은 집합에 속하는지 판단하는 알고리즘: Union-Find 알고리즘
파이썬으로 Union-Find
1 | class DisjointSet: |
크루스칼 알고리즘
1 | def kruskal (n, E): |