나는 wikipeida을 읽고 다음과 같이 크루스 칼의 의사 코드 발견 : 나는 FIND_SET()
가 무엇을 확인 조용히 아니에요, 그리고 위키 백과는 다음과 설명이크루스 칼의 알고리즘 설명
KRUSKAL(G):
foreach v ∈ G.V:
MAKE_SET(v)
G.E = sort(G.E)
i = 0
while (i != |V|-1):
pick the next (u, v) edge from sorted list of edges G.E
if (FIND_SET(u) != FIND_SET(v)):
UNION(u, v)
i = i + 1
을 :
하는 경우를 가장자리는 두 개의 서로 다른 나무를 연결 한 다음 두 개의 나무를 하나의 나무로 결합하여 숲에 추가합니다.
두 개의 다른 트리가 연결되어 있는지 확인합니다.하지만 실제로이 의미는 무엇입니까?
FIND_SET(u) != FIND_SET(v)
는 U 및 V가 똑같은 접속되지 않도록 : 비교되도록
"주제에서 벗어남"... 어떻게 주제에서 벗어 났습니까?! (@ Close-voter) –
코드를 오인하고 있습니다. 'i = i + 1'이 어디로 가야하는지 다시 살펴보십시오. –
'if (FIND_SET (u)! = FIND_SET (v))'를'if (! inSameSet (u, v)) '로 대체하면 코드가 더 쉽게 명확해질 것이라고 생각합니다. – goat