: 가중치 그래프 G의 가중치가 작은 간선을 선택하여 구성된 신장 트리
그래프 전체에서 최소 비용을 갖는 간선 {u, v}
를 선택하여 이 간선을 최소 비용 신장 트리 T에 추가함
이 간선을 최소 비용 신장 트리 T에 추가하였을 때 사이클을 형성하지 않으면 T에 추가 아니면 무시하지 않으면 그 간선을 선택함
def prim(start, weight):
visit = [0]*(V+1)
q= [[weight, start]]
ans = 0
cnt = 0
while cnt < V:
k, v = heappop(q)
if visit[v]:
continue
visit[v] =1
ans +=1
cnt +=1
for u, w in G[v]:
heappush(q, [w,u])
return ans
남은 간선 중에서 무조건 최소 비용인 간선을 선택한 후 사이클을 형성하지 않으면 그 간선을 선택함
참고)
https://gmlwjd9405.github.io/2018/08/30/algorithm-prim-mst.html
https://velog.io/@jxlhe46/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-MST
https://techblog-history-younghunjo1.tistory.com/262