최소 신장 트리란 그래프에서 모든 노드를 연결 할 때 사용된 에지들의 가중치의 합을 최소로 하는 트리이다.
- 사이클이 포함되면 가중치의 합이 최소가 될 수 없으므로 사이클을 포함하지 않는다.
- N개의 노드가 있으면 최소 신장 트리를 구성하는 에지의 개수는 항상 N - 1개다.
최소 신장 트리의 핵심 이론
1. 에지 리스트로 그래프를 구현하고 유니온 파인드 배열 초기화 하기
- 노드가 아닌 에지 중심으로 저장
- 인접 리스트가 아닌 에지 리스트의 형태로 저장
2. 그래프 데이터를 가중치 기준으로 정렬하기
- 에지 리스트에 담긴 그래프 데이터를 가중치 기준으로 오름차순 정렬
3. 가중치가 낮은 에지부터 연결 시도하기
- 가중치가 낮은 에지부터 순서대로 선택해 연결을 시도한다.
- 사이클 형성 유무를 find 연산을 이용해 확인 → 사이클이 형성되지 않을 때만 union연산을 이용해 두 노드를 연결
4. 과정 3 반복하기
- 전체 노드의 개수가 N개이면 연결한 에지의 개수가 N-1이 될 때까지 과정 3을 반복
5. 총 에지 비용 출력하기
에지의 개수가 N-1이 되면 알고리즘을 종료하고, 완성된 최소 신장 트리의 총 에지 비용을 출력한다.