我認為判斷prim算法唯一性有兩個方面:
1.假設目前已經生成的集合為P,現在需要把集合P外的距P最近的點a加到集合P中。在這個過程中,如果a與集合P中的b、c都構成了最短距離,則此時把a加入到P中有兩種方式即:與b相連和與c相連,這就完完全全成為了兩棵不同的最小生成樹。
2.假設目前已經生成的集合為P,現在需要把集合P外的距P最近的點a加到集合P中。在這個過程中,如果a、b分別與集合P中的x、y都構成了最短距離,則此時同樣有兩種方式即:加入a和加入b。但是,這兩種方式不一定形成不同的樹。
為此,我們需要加入另外的條件,當a、b分別與P中的x、y構成最短距離,不妨先把a加入其中形成P',如果此時b到P'中y的距離和b到P中y的距離相等且還是最短距離,則還是同一棵樹。否則,構成了兩棵不同的最小生成樹。