2012-05-26 2 views
1

다음은 CS 알고리즘 강사의 Kruskal 's Minimum Spanning Tree 알고리즘에 대한 의사 코드입니다. MST 알고리즘이 비 결정적인지 알고 싶습니다. 동일한 가중치를 가진 두 개의 에지가 주어지면 알고리즘이 T에 더할 때 어떤 엣지가 사이클을 형성하지 않으면 어떻게 알고리즘을 결정할 것인가? 그렇다면 임의의 경우에 정확한 에지가 T에 추가되는 결과를 결정할 수 없습니까?Kruskal의 MST 알고리즘이 비 결정적입니까?

Given an undirected connected graph G=(V,E)  
    T=Ø //Empty set, i.e. empty 
    E'=E 
    while E'≠Ø do 
    begin 
     pick an edge e in E' with minumum weight 
     if adding e to T does not form a cycle then 
      T = T∪{e} //Set union, add e to T 
     E' = E'\{e} //Set difference, remove e from E' 
    end 

고마워요!

답변

2
가 임의 인 경우 확실히 다음 하나 를 정확한 어떤 결과를 확인할 수 없습니다 T.에 추가 할 때 어느 날은 사이클을 형성하는 경우 는 같은 무게로 두 가장자리를 감안할 때, 어떻게 알고리즘은 그들 사이 를 결정하는 것입니다

가장자리가 T?

이것은 구현됩니다.

Kruskal 알고리즘은 연결된 가중 그래프 (트리가 아님)의 가능한 여러 MST 중 하나를 찾습니다. 이는 반복 할 때마다 여러가 지 (동일한 가중치로 가장자리에서 가장자리를 선택하는 것)가 있기 때문입니다. 이것은 비 결정적 비트입니다. 물론 알고리즘을 구현할 때 선택을하게됩니다 (즉, 명령을 내리십시오). 그러나 다른 구현은 다른 순서를 매우 잘 부과 할 수 있습니다. 따라서 알고리즘의 두 가지 구현을 통해 동일한 문제를 올바르게 해결할 수 있지만 다른 결과가 나타날 수 있습니다.

3

선택의 여지가있는 경우 결정적 선택 함수를 선택하면 Kruskal 알고리즘이 결정적입니다. 그렇지 않으면 비 결정적입니다. 무작위로 선택한 경우 몇 가지 가능성이있는 경우 MST에서 끝나는 가장자리를 알 수 없습니다.

관련 문제