Oh My Algorithm
Algorithm Guidecomplexity: O(E log V)

프림 (Prim MST)

한 노드에서 시작해 트리에 연결된 가장 싼 간선을 하나씩 더해 가며 최소 신장 트리를 키웁니다. 우선순위 큐로 후보 간선을 관리하며, 크루스칼과 다른 순서로 자라지만 동일한 MST에 도달합니다.

01 알고리즘 작동 원리 탐색

Interactive Step-by-Step
TAP OR HOVER
Prim MST
시작A
간선
MST 합0
상태대기
1234567Akey=0Bkey=∞Ckey=∞Dkey=∞Ekey=∞

Prim 시작. 시작 노드 A의 key를 0, 나머지는 ∞로 둡니다. 트리를 A부터 한 노드씩 키워 갑니다.

Logic Node1 / 7

02 파이썬 구현 코드

프림 (Prim MST)의 핵심 로직을 담은 표준 구현 예시입니다. 가급적 간결하고 읽기 쉬운 코드로 작성되었습니다.

core_implementation.py
import heapq

def prim(graph, start):
    visited = {start}
    pq = [(w, start, v) for v, w in graph[start]]
    heapq.heapify(pq)
    mst, total = [], 0
    while pq:
        w, u, v = heapq.heappop(pq)
        if v in visited:
            continue
        visited.add(v)
        mst.append((u, v))
        total += w
        for nxt, w2 in graph[v]:
            if nxt not in visited:
                heapq.heappush(pq, (w2, v, nxt))
    return mst, total
Guide Progress0%