알고리즘 & 코딩 테스트

[알고리즘] 프림 알고리즘(Prim's Algorithm)

archiveloper 2024. 6. 10. 16:55

 Prim's Algorithm?

 그리디 알고리즘의 한 종류로, 임의의 점 하나를 선택 후 간선을 추가시켜 트리를 완성해 가는 알고리즘이다.

 동작 방식

 프림 알고리즘은 인접한 정점들 중 가장 최소 비용으로 연결할 수 있는 정점을 연결함.

임의의 점(p)를 선택 후, 해당 위치의 비용을 0으로 설정.
정점 p는 방문 표시 설정
for(점 p가 아닌 각 점(v)에 대해서) {
    if(간선 (p, v)가 존재하면) {
        두 정점을 연결하는 비용을 갱신
    } else {
        비용을 무한대로 설정
    }
}

while(p를 제외한 모든 정점을 방문할 때까지) {
    for(정점 p를 제외한 나머지 각각의 정점 w에 대해서) {
        w에 연결하기 위한 최소 비용으로 갱신
        정점 w 방문 표시
    }
}

 시간 복잡도

 정점의 개수가 n개라 가정하면, 

 while루프 * 각 정점에 대해서 최소값을 찾기 위해 반복문을 실행 

(n-1) * O(n) = O(n^2)

 

 수행 결과

 정점 1개로 시작하여 하나의 신장 트리가 완성됨.

300x250