網路流問題-最小費用最大流__資料結構與演算法

來源:互聯網
上載者:User

      繼續沿著2017華為軟體精英挑戰賽,查閱了一些【最小費用最大流】相關的資料。今年的賽題歸結為:組合最佳化+最小費用最大流兩個子問題,給定的伺服器選址下求出最小費用最大流作為底層的演算法支撐會很好提升最終的結果,伺服器的選址這個組合最佳化問題有很多解決方案,我採用遺傳演算法有較好收斂(參考上一篇博文“遺傳演算法”)。

      先列出一堆不錯的博文:

          1.   http://www.360doc.com/content/13/1208/22/14357424_335569176.shtml,介紹SPFA(我用的dijkstar演算法)

          2.   http://blog.csdn.net/pi9nc/article/details/23339111 , 介紹Ford_Fulkerson演算法,EK演算法,DInic演算法 

      網上關於 “網路流問題-最小費用最大流” 的資料,基本都是應用於簡單的有向圖模型,今年的題目我認為必須要用到無向圖的“最小費用最大流”解決方案。

      下面是搜羅的有向圖裡面最小費用最大流的詳細講解,先看看以下關於有向圖的該問題解決思路:


      咋一看,上面的解法對“最小費用最大流”比較好,但是無向圖中已經存在反向邊,或者可以把無向圖的邊看成是方向相反的兩條有向邊,那麼在無向圖中 “添加反向的權重”應該怎麼處理呢。實際上和有向圖一樣,這時添加的反向邊不能和原來的邊疊加, 細細看這篇博文http://blog.csdn.net/fobdddf/article/details/19615651  ,裡面介紹詳細....

      上面的博文採用SPFA演算法解決最小費用問題(最短路徑問題),我嘗試一番後,配合遺傳演算法,在第一批次主辦方提供的測試案例上能得出最優解(每個用例在迭代1000代出來的結果就已經最優了),但是,注意這個但是,SPFA演算法的時間複雜度相較於dijkstar演算法大了老大一截,第二批次的測試案例跑起來就很吃力無法滿足時間要求。

後續考慮給圖分區,或者選用時間複雜度更低的最短路徑演算法。

       華為這次演算法大賽給的題目,看來不是讓我們找最優解,而是找一個時間複雜度可以接受的次優解演算法。

       博主在思考給圖分區的時候,採用dijkstar來做分區,找最短路徑的時候只找一個節點的最近的N個點內的點,也就是設定的N個點內沒找到想要的點就退出dijk,慢慢地,發現dijkstar還可以這麼用:1. dijkstar可以從源點找到匯點的最短路徑,也可以找從匯點出發距離最近的源點(邊依然指向匯點,而不是從匯點指出去),這樣可以大大減少dijk被調用的次數,因為從匯點出發只要找到最近的源點dijk就退出了,即只需調用(未飽和)匯點個數次dijk, 如果從源點出發要調用所有源點個數次dijk, 本次賽題平均匯點個數遠遠小於平均源點個數(實測結果); 2. 從匯點找最近源點的路徑,使用流的效果等同於SPFA撤回反向邊的效果(實測結果)。參賽群裡一些童鞋說遺傳迭代次數少, 估計是這底層支撐演算法沒實現好,我在初級用例上迭代1代時間在30ms左右(種群40個體數),在中級用例上迭代1代時間在150~200ms,進階用例就不大好使了。博主採用啟發學習法搜尋的迭代最佳化(類比退火調出來的結果比迭代最佳化差點點,不知道為啥)+遺傳的組合,只有初級和部分中級用例能跑進遺傳,其他只能在迭代最佳化裡晃悠出一個解。由於是迭代最佳化,為了避免解在困在局部最優裡,啟發學習法策略中考慮的鄰域函數找到的嘗試解要有一定隨機性,不能往特定方向搜尋,這種隨機性不同於遺傳演算法的基因隨機變異,只是局部範圍的隨機,只是領域內部的隨機部分嘗試,也就是給出一個領域後,就隨機地嘗試領域裡一定百分比的待求解,這樣能大大增加搜尋區間範圍並且降低困在局部最優的幾率。

     

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.