최소 신장 트리(Minimum Spanning Tree)
2024-01-07 23:57:35
모든 노드를 연결할 때 사용된 에지들의 가중치의 합을 최소로 하는 트리이다. 사이클이 포함되지 않아야 하는 그래프에서 사용할 수 있고, N개의 노드에 대해서 항상 N-1개의 노드를 사용한다. 그래프는 에지리스트로 구현된다. 그리고, 노드끼리 연결됨을 판단해야 하므로 유니온 파인드 알고리즘을 사용한다. 에지리스트를 가중치를 기준으로 정렬한다. 구현 방법 중 하나로는 에지 가중치를 기준으로 우선순위 큐로 구현한다. 사용한 노드가 N-1개가 될 때까지 반복하면서 에지를 pop해 선택하고, 두 노드가 연결되어 있는 지 find 함수로 판단하고 연결되지 않았으면 연결(union 함수)하고 사용한 노드로 개수를 센다. 그리고 사용된 에지들에 대해서 가중치의 합 또한 사용되므로 따로 변수에 합해 가면서 저장한다. 여..