諸位看官,這是我第一次在整篇文章的所有圖片里面加水印。小弟寫博客的時間不長,就有兩篇博客被盜用並未注明原文網址。這一方面使我痛心不已,另一方面迫使我不得不重新考慮一下版權保護問題。小弟不是吝嗇鬼,如果影響閱讀或者是確實需要我的圖片的,請私信我,我將免費為有需求的看官提供圖片。謝謝了!
上圖中已經詳細的給出了最小樹形圖的全部步驟,現在給出如何解決Step2中更新“以前指向該環中的任意節點的路徑”的辦法。 假定環路中存在一點v,環中有一條邊e1指向該點。環外有一條邊e2指向該點。則e2更新后,新邊的權重e2_new=e2_old-e1(環外邊權重減環內邊權重)。
其次治理V4-V5-V6環:
第一步:縮環為點,如下圖右側的大圓點(縮環為點后a7,a8,a10邊被取消,其余所有邊保留)
第二步:對於所有從大圓點出去的邊,其權重保持不變;對於所有指向大圓點的邊,更新其權值。
W[a3]_New = W[a3]_Old - W[a8] =5-3=2
W[a6]_New = W[a6]_Old - W[a7] =9-4=5
W[a11]_New = W[a11]_Old - W[a10] =9-5=4
W[a15]_New = W[a15]_Old - W[a10] =8-5=3
邊緣權重更新后的圖如下圖所示:

對於新到的圖,按照Step1中的描述,重新尋找除V1以外,指向其他節點的最小邊。其結果如下圖所示:

指向V2V3節點的最小邊為a13,指向V7節點的最小邊為a14;指向V4V5V6節點的最小邊為a3。原論文中證明,a3,a14,a13一定是以V1為根的最小樹形圖的邊集的子集,現在對V2V3節點和V4V5V6節點做展開操作。我們回到原圖中(權重全部恢復到原圖的權重),並標記a3,a14,a13這三條邊,如下圖:

不難發現如果從根節點V1發出的信息想要順暢的流到V4,則只能選擇a7;同理,如果從V1出發的信息流想要順暢的流到V6,則只能選擇經V4到V6的a10。因此,a7,a10在邊集內。同理如果從V1發出的信息想要流向V2,則只能選擇經V3到V2方向的a5。此時所有的節點都有邊相連。新從根節點V1,可以順有向邊的方向到任意節點,如下圖:

上圖即是以 V1 為根節點的最小樹形圖。
