日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

创新实训团队记录:为BR-MTC问题设计一个近似算法

發布時間:2025/3/21 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 创新实训团队记录:为BR-MTC问题设计一个近似算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

創新實訓團隊記錄 : 為BR-MTC問題設計近似算法

  • 閱讀書籍和論文
  • 近似算法設計思路變化總結
    • 算法框架
    • 改變初始頂點集
    • 繼續添加路徑,作為新的初始頂點集
  • 程序驗證
    • 近似解與最優解存在差距&&優化后的近似解比優化前更逼近最優解
      • 構建最優解已知的圖
      • 比較最優解和近似解(優化前、后)
    • 優化效果在什么時候達到最好

閱讀書籍和論文

《computational complexity》

  • chapter 1、2 P versus NP(季煒丹)

《approximate algorithms》

  • chapter 1 Introduction 近似比、最大匹配和最小點覆蓋(季煒丹)
  • chapter 2 Set Cover 分層技術求解頂點覆蓋問題(劉忠航)
  • chapter 3 Steiner Tree and TSP 斯坦納樹和旅行商問題(孫凡雯)
  • chapter 4 Multiway Cut and k-Cut 最小割和K割問題(黃舒漪)
  • chapter 5 k-center k-中心問題(季煒丹)
  • chapter 6 Feedback Vertex Set 反饋頂點集問題(劉忠航)
  • chapter 7 Shortest Superstring 最短超串問題(孫凡雯)
  • chapter 8 Knapsack 背包問題的多項式時間近似解(黃舒漪)

“A 2+ε approximation algorithm for the k-MST problem”

近似算法設計思路變化總結

算法框架

  • 1). 輸入:輸入一個給定的加權無向圖 G=(V,E)G=(V,E)G=(V,E) ,在圖的結點中給定一個根結點r∈Vr \in VrV,并且給定一個最大的預算范圍B
  • 2). 初始化:Vnew=V_{new}=Vnew?= {rrr}, Enew=E_{new}=Enew?= { }為空;
  • 3). 重復下列操作,直到Vnew=VV_{new}=VVnew?=V:
    • a. 在集合E中選取權值最小的邊<u,v><u,v><u,v>,其中uuu為集合VnewV_{new}Vnew? 中的元素,而vvv不在集合VnewV_{new}Vnew? 當中,并且v∈Vv \in VvV(如果存在有多條滿足前述條件即具有相同權值的邊,則可任意選取其中之一);
    • b.將vvv加入集合VnewV_{new}Vnew?中,將<u,v><u,v><u,v>邊加入集合EnewE_{new}Enew?中;
    • c.將集合EnewE_{new}Enew?中的邊權值相加,未超過B則返回步驟a;超過B,則將新加入的邊移出集合EnewE_{new}Enew?中,跳出循環;
  • 4). 輸出:使用集合VnewV_{new}Vnew?EnewE_{new}Enew?來描述所得到的包含根節點r的子樹。

改變初始頂點集

優化步驟2). 初始化:Vnew=V_{new}=Vnew?= {rrr}, Enew=E_{new}={ }Enew?=為空
優化:分成兩步

  • 一、計算根節點rrr到其他所有節點的最短路徑,得到n?1n-1n?1條最短路徑,每一條最短路徑的頂點集和邊集用Vshortest,EshortestV_{shortest},E_{shortest}Vshortest?,Eshortest?;
  • 二、基于初態頂點集VshortestV_{shortest}Vshortest?、邊集EshortestE_{shortest}Eshortest?找子樹,對比子樹頂點數,選取最優子樹

一、計算根節點rrr到其他所有節點的最短路徑,得到n?1n-1n?1條最短路徑,每一條最短路徑的頂點集和邊集用Vshortest,EshortestV_{shortest},E_{shortest}Vshortest?,Eshortest?

  • 1). 將根節點rrr作為初始點,看作一個集合,其他n?1n-1n?1個點看作一個集合;
  • 2). 根據初始點,求出其它點到初始點的距離d[i]d[i]d[i](若相鄰,則d[i]d[i]d[i]為邊權值;若不相鄰,則d[i]d[i]d[i]∞\infty
  • 3). 選取最小的d[i]d[i]d[i]加入EshortestE_{shortest}Eshortest?(記為d[x]d[x]d[x]),并將此d[i]d[i]d[i]邊對應的點(記為xxx)加入集合VshortestV_{shortest}Vshortest?
  • 4). 再根據xxx,更新跟 xxx 相鄰點 yyyd[y]d[y]d[y]值:d[y]=mind[y]=mind[y]=min{d[y],d[x]+w[x][y]d[y],d[x]+w[x][y]d[y],d[x]+w[x][y]},即松弛操作;
  • 5). 重復3)、4),直到所有頂點都在集合VshortestV_{shortest}Vshortest?內,d[i]d[i]d[i]即為一條最短路徑;

二、基于初始頂點集VshortestV_{shortest}Vshortest?找子樹,對比子樹頂點數,選取最優子樹

  • 1). 對于每一條最短路徑得到的初始頂點集VshortestV_{shortest}Vshortest?和初始邊集EshortestE_{shortest}Eshortest?,我們進行之前找子樹的操作,共n?1n-1n?1次循環,得到n?1n-1n?1棵子樹;
  • 2). 比較n?1n-1n?1棵子樹的頂點數,選擇最多頂點數的子樹,作為我們的輸出結果

繼續添加路徑,作為新的初始頂點集

我們認為對于步驟2),仍可以繼續優化。
目前我們已經有n?1n-1n?1條最短路徑作為n?1n-1n?1個初始頂點集,基于不同的頂點集得到不同的子樹,得到n?1n-1n?1棵子樹,選擇n?1n-1n?1棵子樹中頂點數最多的作為輸出結果;我們可以添加其他的路徑作為新的初始頂點集,如果基于這種頂點集得到的子樹頂點數更多,我們就達到了優化效果。
至于,選擇添加怎樣的路徑作為新的初始頂點集,我們提供了一種思路。

  • 我們選擇某些“具有代表性”的點,構成集合VrepresentV_{represent}Vrepresent?;如何選擇:
    • 1). 我們設置參數:大邊值bigdisbigdisbigdis,邊數numnumnum,小邊值smalldissmalldissmalldis
    • 2). 先遍歷所有邊找到weight≥bigdisweight≥bigdisweightbigdis的邊;放在集合EbigE_{big}Ebig?
    • 3). 遍歷集合EbigE_{big}Ebig?中所有邊的左右端點,放在集合VbigV_{big}Vbig?
    • 4). 遍歷集合VbigV_{big}Vbig?中所有點的所有“覆蓋”的邊,如果對于集合中的一個點vvv,所有“覆蓋”的邊中weight≤smalldisweight≤smalldisweightsmalldis的邊數超過numnumnum,那么我們將這個點vvv加入集合VrepresentV_{represent}Vrepresent?
  • 將根節點rrr加入集合VrepresentV_{represent}Vrepresent?,計算集合VrepresentV_{represent}Vrepresent?內所有頂點的steiner tree,形成初始頂點集VrepresentV_{represent}Vrepresent?和初始邊集ErepresentE_{represent}Erepresent?


程序驗證

近似解與最優解存在差距&&優化后的近似解比優化前更逼近最優解

BR-MTC問題,顯然,當 BBB等于圖 GGG 最小生成樹的權重之和時,該最小生成樹是該問題的解。而當預算BBB 是作為問題輸入給定的一個新參數,這使問題具有了 NPNPNP 性。當P≠NPP \neq NPP?=NP 成立時,對于該類問題,不存在多項式時間內求得精確解的算法。
但是我們需要用程序驗證,最優解和近似解的差距,于是我們在這里考慮逆向思維。我們通過構造出最優解已知的圖,基于這樣的圖運行近似算法。

構建最優解已知的圖

  • 1). 給定參數V、EV、EVE,最大權值maxCostmaxCostmaxCost,障礙分支個數hhh
  • 2). 計算出一個障礙分支所需要的點數v1v1v1和邊數e1e1e1,(我們定義下圖為障礙分支),藍色部分為(v2,e2)(v2,e2)(v2,e2)
  • 3). 根據剩余的頂點數v’=V?v1v’=V-v1v=V?v1e’=E?e1e’=E-e1e=E?e1,隨機生成圖G=(v’,e’)G=(v’,e’)G=(v,e),并求出圖GGG的最小生成樹,最小生成樹的耗費加上障礙分支(藍色部分)的耗費(即e2e2e2)為障礙圖的預算;
  • 4). 最小生成樹上加入障礙分支,得到障礙圖G’=(v’+v1?h,e’+e1?h)G’=(v’+v1*h,e’+e1*h)G=(v+v1?h,e+e1?h),輸出障礙圖G’G’G,預算B’B’B
  • 5). 此時,最優解就是v’+v2?hv’+v2*hv+v2?h

比較最優解和近似解(優化前、后)

從下圖可以看出:

  • 1). 紅色線與綠、藍色線存在差距,即最優解與近似解存在差距;
  • 2). 綠色線是優化后的近似解,永遠在藍色線上方,甚至有時候與紅色線重合;即優化后得到的近似解比優化前得到的近似解更加接近最優解;

以上兩點都符合我們的預期。

以下是舉幾個例子:


優化效果在什么時候達到最好

給定頂點500-1500,間隔100,預算為400,500,600,700;縱坐標是優化前后的頂點數差值,即優化效果的直觀體現

  • 1). 當頂點數為800時,預算400的紅色線優化效果較好;
  • 2). 當頂點數為1200時,預算600的綠色線優化效果較好;
  • 3). 當頂點數為1400時,預算700的黃色線優化效果較好;

可以看出,預算與頂點數的比值在50%左右,優化效果最好

總結

以上是生活随笔為你收集整理的创新实训团队记录:为BR-MTC问题设计一个近似算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。