簡體   English   中英

如何找到連接所選頂點的最小連接器(頂點子集)

[英]How to find the minimum connectors to connect selected vertices (subset of vertices)

假設我有一個無向圖,有 10 個頂點和 24 條邊相互連接,例如,如果我給出這樣的輸入(這不是實際的,實際的是 10 * 10)

int graph[][] = new int[][]{{0, 0, 0, 0, 0, 0},
                            {0, 0, 2, 0, 6, 0},
                            {0, 2, 0, 3, 8, 5},
                            {0, 0, 3, 0, 0, 7},
                            {0, 6, 8, 0, 0, 9},
                            {0, 0, 5, 7, 9, 0}};

所以我想找到最小的連接器以連接特定的頂點,例如:頂點 0,2,4 目前我應用了 prims 算法,以便通過圖形的所有邊緣獲得最少的連接器,但由於我不希望所有邊緣都包含在我的 MST 中,我需要一些幫助來實現這一點。

  • 我無法刪除開始時不想要的邊緣,因為它會斷開圖形

請幫忙。

所以你有 6 個頂點和 7 個無向加權邊:

 1 ←→ 2 (w=2)
 1 ←→ 4 (w=6)
 2 ←→ 3 (w=3)
 2 ←→ 4 (w=8)
 2 ←→ 5 (w=5)
 3 ←→ 5 (w=7)
 4 ←→ 5 (w=9)

您需要連接頂點 0、2 和 4,因此您使用這 3 個頂點構建一個新圖,並找到它們之間的最短路徑

 0 ←→ 2 (no edge)
 0 ←→ 4 (no edge)
 2 ←→ 4 (w=8)

這當然是不可能的,因為沒有到頂點 0 的邊。

所以讓我們試試頂點 1、3 和 5:

 1 ←→ 3 (w=5, 1 ←→ 2 ←→ 3)
 1 ←→ 5 (w=7, 1 ←→ 2 ←→ 5)
 3 ←→ 5 (w=7, 3 ←→ 5)

現在對其應用最小生成樹 (MST):

 1 ←→ 3 ←→ 5 (w=12)

擴展回原始圖形:

 1 ←→ 2 ←→ 3 ←→ 5 (w=12)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM