給定一個無向和連通圖G,找到直徑最小的生成樹。最小直徑生成樹算法
1
A
回答
3
singhsumit將相關論文鏈接到Hassin and Tamir,標題爲「關於最小直徑生成樹問題」,但他的答案目前已被刪除。本文的主要思想是在無向圖中找到最小直徑生成樹可以通過找到圖的「絕對1中心」並返回根植於其中的最短路徑樹來實現。
絕對1中心是指頂點或邊緣上的點,從該點到最遠頂點的距離最小。這可以通過Kariv和Hakimi(網絡定位問題的一種算法方法,I:p-中心)算法或早期的Hakimi,Schmeichel和Pierce算法(網絡中的p-中心)找到,我將試圖從運行時間和幾十年的事後重建。 (愚蠢的薪水牆。)
使用Floyd-Warshall或Johnson的算法計算所有對距離。對於每個邊u-v,按如下方式在該邊上找到1中心的最佳候選。
設邊u-v上的點由從0(u本身)到len(u-v)(v本身)範圍內的μ索引。從指數μ處的點到頂點w的距離爲
min(μ+ d(u,w),len(u-v)-μ+ d(v,w))。
作爲μ的函數,這個量在
增加後減少,在最大μ=(LEN(U - V)+ d(V,W) - d( u,w))/ 2。
按此argmax對頂點排序。對於數組中的每個分區,將其分爲左側子數組和右側子數組,計算引起相同argmax分區的μ的時間間隔[a,b]。將此區間與[0,len(u - v)]相交;如果十字路口是空的,然後繼續前進。否則,從由u索引的點開始的左子陣列中找出最大距離L,並從由u索引的點開始的右子陣列中的最大距離R索引b。 (計算這些最大值的成本可以分攤到每個分區的O(1),通過從左到右和從右到左的掃描開始。)最佳選擇是[a,b]中的μ使最大值(L - (μ - a),R +(b - μ))最小化。
相關問題
- 1. 約束度+有界直徑最小生成樹的算法?
- 2. 最快最小生成樹算法
- 3. 最小生成樹使用Kruskal算法
- 4. 遞歸最小生成樹算法
- 5. Sollin的最小生成樹算法
- 6. 最小生成樹和最短路徑
- 7. 最小生成樹:Kruskal&Prim
- 8. 動態最小生成樹
- 9. 通用最小生成樹
- 10. Prim算法得到圖的最小生成樹
- 11. Prim's和Boruvka的最小生成樹算法
- 12. Boruvka算法針對有向圖的最小生成樹
- 13. 這個最小生成樹算法是否正確?
- 14. 查找所選頂點的最小生成樹的算法
- 15. 最短路徑和最小生成樹的組合
- 16. krukshal的算法或Prims算法哪個更適合尋找最小生成樹?
- 17. 找到'最小生成路徑'的算法?
- 18. 最小瓶頸生成樹與最小生成樹有什麼不同?
- 19. 最小產品生成樹是否與最小生成樹不同?
- 20. 遺傳算法:最小生成數?
- 21. 設計一個圖,其中最短路徑樹比最小生成樹長
- 22. 最小路徑算法
- 23. 生成樹DFS算法不創建樹
- 24. 使用Kruskal算法計算最小生成樹時出現錯誤的答案
- 25. 什麼是計算直線最小斯坦納樹的最佳算法?
- 26. R:深度最小生成樹
- 27. 如何檢查最小生成樹
- 28. Networkx最小生成樹 - 精度問題?
- 29. Java最小生成樹問題
- 30. 多重最小生成樹圖
什麼意思是「計算導致相同argmax分區的μ的區間[a,b]。」 ? – galath 2017-03-12 10:18:59
@galath如果從邊緣中間到頂點的距離在μ= 0,0.2,0.5,0.7,0.9,1處具有argmaxes,則取決於分區[0,0.2,0.5]的[a,b]間隔[ 0.7,0.9,1]是區間[0.5,0.7]。 – 2017-03-12 13:28:44