크루스칼 알고리즘
그래프 내 모든 정점을 포함하고 사이클을 생성하지 않으며 선을 연결했을 때 가중치 합이 최소가 되는 상황을 구할 때 사용
- 그리디의 일종 → 가중치가 작은 것부터 먼저 선택
신장트리에서 가중치 합이 최소인 트리
유니온 파인드(Union&Find)
유니온: 서로 다른 두 집합 병합
파인드: 집합 원소가 어디 집합에 속해 있는지 찾기
const parentNode = Array.from({length: n}, (_, idx) => idx); // 부모 정점 배열(처음에 본인으로 초기화)
const Find = (x) => {
if(x===parentNode[x]) return x; // 부모 정점 찾은 경우 리턴
else return parentNode[x] = Find(parentNode[x]);
}
const Union = (x, y) => {
const fx = Find(x);
const fy = Find(y);
if(fx !== fy) parentNode[fy] = fx;
}