999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

固定序Bellman?Ford算法的一個改進

2014-06-24 13:38:07韓偉一
哈爾濱工業大學學報 2014年11期
關鍵詞:水平實驗

韓偉一

(哈爾濱工業大學經濟與管理學院,150001哈爾濱)

固定序Bellman?Ford算法的一個改進

韓偉一

(哈爾濱工業大學經濟與管理學院,150001哈爾濱)

通過對固定序Bellman?Ford算法進行修正,獲得了一種求解邊數不大于k的最短路問題的新算法.相對于原始算法,修正后的算法通過改變點的標號過程,使得在第k次迭代后每一條路徑的邊數均不超過k.新算法被證明是正確的,它的計算復雜性為O(km).實驗表明,在大規模情形下,相對于修正的先進先出算法,該算法具有顯著的競爭優勢.

算法;Bellman?Ford算法;先進先出;固定序;最短路問題

自1958年以來,Bellman?Ford算法一直被公認為是求解負權最短路問題最好的強多項式算法,它的研究歷程可概括為3個發展階段[1-3]:第1階段,動態規劃模式階段,即原始的Bellman?Ford算法;第2階段,基本改進階段,在第1階段的每次迭代中所有點都要參與計算,而在第2階段中只有在上次迭代中距離標號改變的點才參與下一次迭代,從而使得計算效率顯著提高,迭代次數明顯減少[4-8];第3階段,加速技術階段,主要體現為上次迭代中距離標號改變的點并不全部參與下一輪迭代計算,因而還可進一步提高計算效率.第3階段的算法一般以第2階段的算法為基礎,因而第2階段的算法也稱為Bellman?Ford算法的基本改進算法.目前,主要有5類基本改進算法,即先進先出算法[4,8]、后進先出算法[8]、Yen算法[9]、快速算法[10]和固定序算法[1-2]等.第3階段的主要工作有1993年Goldberg等[11]提出的拓撲序技術,1981年Tarjan[12]提出的裝配子樹技術,以及1985年Glover等[13-14]提出的門檻技術等,1996年Cherkassky等[4,8]提出的父點技術等.需要指出的是,盡管第2、3階段的算法都具有很高的效率,但由于最短路徑中的邊數可能會多于k條,因而均不能解決邊數不大于k的最短路問題(或邊數≤k的最短路問題),為此文獻[2]對先進先出算法進行了修正.本文將對固定序算法進行修正,使得修正后的算法能夠解決有邊數限制的最短路問題,并將該算法與已有的先進先出算法進行比較,用實驗說明它在大規模情形下具有顯著的競爭優勢.

1 固定序算法及其修正

對于一個具有n個點、m條邊的有向圖G(V,E),n個點分別編號為1,2,…,n,且規定點1為源點,用w(i,j)表示有向邊(i,j)的權.定義d(i)為點i的距離標號,h為迭代次數.固定序算法如下:

Step 1 初始化.令d(1)=0,d(i)=+∞,2≤i≤n.把點1加入集合A.對h賦值為1.

Step 2 在第h次迭代中,按照編號順序對A中的各點i進行計算

如果d(j)變小,則當j?A時,把點j加入集合A.從集合A中去除點i.

Step 3 如果集合A為空集,則算法結束,d(i)就是從點1到點i的最短距離;當集合A非空且h=n-1時,可判定存在負循環,算法結束;當集合A非空且h<n-1時,執行Step 4.

Step 4 令h=h+1,轉到Step 2.

盡管固定序算法在求解負權最短路問題上具有較高的計算效率,但由于求得的是最短路徑,而最短路徑中可能會多于k條邊,因而它也無法直接求解邊數≤k的最短路問題,必須對它加以修正.

在對固定序算法修正以前,需要引入一些新的定義和符號:1)定義d0(i)為上次迭代完成后點i的距離標號;2)在修正的算法中,定義集合A為上輪迭代中距離標號變小的點的集合,定義集合B為本輪迭代中距離變小的點的集合.修正后的固定序算法如下:

Step 1 初始化.令d(1)=0,d(i)=+∞,2≤i≤n,把點1加入集合A.迭代次數h賦初值為1,則第0次迭代的距離標號分別為

Step 2 在第h次迭代中,按照編號順序對A中的各點i進行計算

如果d(j)<d0(j),且當點j?B時,把點j加入集合B.從集合A中去除點i.

Step 3 如果集合B為空集或h=k時,則算法結束,d(i)就是從點1到點i的最短距離;當集合B非空且h<k時,執行Step 4.

Step 4 清空集合A,并把集合B中的元素轉到集合A,再清空集合B,同時對任意的點i(1≤i≤n),令

再令h=h+1,轉到Step 2.

2 修正的先進先出算法

文獻[2]對基于先進先出序的Bellman?Ford算法進行了修正,使之能夠解決邊數不大于k的最短路問題,特稱為修正的先進先出算法.作為Bellman?Ford算法的一種基本改進算法,先進先出算法被公認為是解決負權最短路問題最快、最有影響力的算法,第3階段的加速算法都是以它為基礎進行改進的.在文獻[2]中,修正的先進先出算法不僅可以求解邊數≤k的最短路問題,而且顯示出了卓越的計算效率,相對于原始的Bellman?Ford算法效率可提高近30倍.需要指出的是,原始的Bellman?Ford算法可以求解邊數≤k的最短路問題,但第2、3階段的改進算法均不可以.

修正的先進先出算法仍然采用相應固定序算法的問題描述和符號,算法如下:

Step 1 初始化.令d(1)=0,d(i)=+∞,2≤i≤n,把點1加入集合A.迭代次數h賦初值為1,則第0次迭代的距離標號分別為

Step 2 在第h次迭代中,按照進入順序對A中的各點i進行計算

如果d(j)<d0(j),且當點j?B時,把點j加入集合B.從集合A中去除點i.

Step 3 如果集合B為空集或h=k時,則算法結束,d(i)就是從點1到點i的最短距離;當集合B非空且h<k時,執行Step 4.

Step 4 清空集合A,并把集合B中的元素轉到集合A,再清空集合B,同時對任意的點i(1≤i≤n),令

再令h=h+1,轉到Step 2.

需要指出的是,本文對文獻[2]中的修正的先進先出算法的表述錯誤進行了糾正,即把d(j)=修正為d(j)=

比較兩種修正算法,可以看出兩種算法僅僅在Step 2有微小的差別,也就是修正的先進先出算法參與計算的點按照先進先出的順序,而修正的固定序算法則按照事先給定的編號順序.兩個算法滿足如下定理.

定理1 對于同一個問題,修正的先進先出算法和修正的固定序算法不僅具有相同的迭代次數,而且每一次迭代使用的集合A和迭代后形成的集合B也是相同的.

證明 兩個算法僅僅在Step 2存在一定的差別,其他步驟都是一樣的.在Step 2中,修正的先進先出算法按照先進先出的順序對A中的點進行計算,而修正的固定序算法按照給定的順序對A中的點進行計算.如果每一次迭代使用的集合A是相同的,而且得到的計算結果也是相同的,那么兩個算法無疑具有同樣的迭代次數.

定理1間接說明,本文的算法確實可以求解邊數≤k的最短路問題.也進一步表明,修正的先進先出算法和修正的固定序算法應該具有同樣的計算復雜度.由文獻[2],有如下引理.

引理1 算法在k次迭代后,如果d(i)<+∞,那么可得到從點1到點i的邊數不大于k的一條最短路徑,這條路徑的長度恰為d(i).

證明 參見文獻[2]的定理1.

定理2 修正的先進先出算法和修正的固定序算法最壞情形下的計算復雜度為O(km).

證明 在每次迭代中,由于每一條邊參與Step 2的計算過程最多一次,因而每一次迭代的計算復雜度為O(m).根據引理1,對于求解邊數≤k的最短路問題,迭代次數不會超過k.因而,兩個算法最壞情形下的計算復雜度為O(km).

需要指出的是,文中提到的3個階段的Bellman?Ford算法最壞情形下的計算復雜性均為O(nm).

3 算法的實驗評估

由于修正的先進先出算法、修正的固定序算法兩種算法具有相同的、最壞情形的計算復雜度,因而只能通過實驗來比較兩個算法的計算效率.本文將進行兩個實驗:1)設定最短路徑中的邊數上限k為n/4,對兩種算法在多種稀疏程度、多個規模水平下進行評估,以測試稀疏程度和計算規模兩個因素對兩個算法的影響,這里n為有向圖的點數;2)給定計算規模,針對不同的k對兩種算法進行評估,以測試不同k對算法的影響.實驗所用有向圖的權重服從均勻分布,可取1~100 000之間的任一整數.每種圖實驗10 000個例子.實驗用的計算機為聯想ThinkPad筆記本,CPU為Intel i5-2410M 2.30 GHz,內存為2.0 G.算法的比較都使用相同的例子.算法程序均采用結構化語言Delphi7.0.

3.1 稀疏程度和計算規模的影響實驗

本文用邊數與點數之比來表示圖的稀疏程度.在每種圖中,設計了10、50、200和1 000等4種稀疏情形進行評估,主要原因是它們代表了4種典型的稀疏程度,即:1)當稀疏程度≤10時,一般認為是超稀疏的;2)當稀疏程度≤log n時,一般認為是稀疏的,按照本文的實驗規模,50接近于這個水平;3)當稀疏程度接近于n 時,一般認為是超稠密的,按照本文的實驗規模,1 000接近于超稠密水平,而200可認為是稠密的水平.之所以不選擇更大的稀疏程度進行實驗,根本原因是:如果稠密程度>2 000時,無法在>100 000個點的規模水平下開展實驗,將發生內存溢出,不能形成完整的實驗結果以進行對比分析.

本文同時選擇了12類規模水平進行試驗評估,其中小規模水平(點數<10 000的圖)4種、中規模水平(點數介于10 000~100 000的圖)4種、大規模水平(點數>100 000的圖)4種.k取值為n/4.之所以設定最短路徑中的邊數上限k為n/4,主要是保證盡可能多的迭代次數.相關評估結果如表1~12所示.

表1 2 000個點下的平均計算時間ms

表2 4 000個點下的平均計算時間ms

表3 6 000個點下的平均計算時間ms

表4 8 000個點下的平均計算時間ms

表5 20 000個點下的平均計算時間ms

表6 40 000個點下的平均計算時間ms

表7 60 000個點下的平均計算時間ms

表8 80 000個點下的平均計算時間ms

表9 120 000個點下的平均計算時間ms

表10 140 000個點下的平均計算時間ms

表11 160 000個點下的平均計算時間ms

表12 180 000個點下的平均計算時間ms

根據表1~12的實驗數據,可得如下結論:

1)相對于修正的先進先出算法,在既定的規模水平下,隨著稀疏程度的增加,修正的固定序算法的競爭優勢將越來越不顯著甚至喪失.如在6 000個點的規模水平下,修正的固定序算法在稀疏程度為10時具有更快的計算效率,但當稀疏程度增加為1 000時卻喪失了競爭優勢.

2)相對于修正的先進先出算法,在既定的稀疏程度下,隨著規模水平的增大,修正的固定序算法的競爭優勢將越來越顯著.如在稀疏程度為10的情形下,當規模水平為2 000個點時,修正的固定序算法比修正的先進先出算法計算效率平均慢60.7%,而當規模水平為180 000個點時,修正的固定序算法反而比修正的先進先出算法計算效率平均快75.6%.

3)相對于修正的先進先出算法,當規模水平足夠大時,在所有的稀疏程度下,修正的固定序算法將具備完全的競爭優勢.如當規模水平<10 000個點時,修正的固定序算法在4種稀疏程度情形下均處于劣勢,而當規模水平>80 000個點時,這個算法在所有情形下均贏得了優勢.

3.2 k的影響實驗

首先選擇20 000個點和160 000個點兩個規模水平,k分別取值為5、10、15和n/4進行實驗,如表13~15所示.鑒于k為5、稀疏程度為10時,計算結果出現異常,又增加了兩個規模水平(即60 000個點和100 000個點)進行實驗,以給出穩定的規律,如表16所示.

根據表13~16,可得如下結論:

1)由表15可以看出,修正的固定序算法在大規模情形下具有壓倒性的競爭優勢,16種情形下僅當k為5、稀疏程度為10時弱于修正的先進先出算法.

2)由表15還可以看出,在給定的規模水平和稀疏程度情形下,當k取適當值時對修正的固定序算法非常有利,但當k進一步變大或變小時這種有利現象將減弱或消失.如在規模水平為160 000個點、稀疏程度為10的情形下,k為10時最為有利.

3)由表16可以看出,當k和稀疏程度同時較小時,修正的先進先出算法具有絕對的競爭優勢,并隨著規模的增大優勢愈加突出.需要指出的是,在表16中出現了一個反常值,即計算時間值0.78,但從兩個算法的計算時間比來看,規律是十分明顯的.

表13 20 000個點、不同k下的平均計算時間ms

表14 160 000個點、不同k下的平均計算時間ms

表15 修正的先進先出算法與修正的固定序算法計算時間之比

表16 k為5、稀疏程度為10、不同規模水平下的平均計算時間ms

由上述兩個實驗可以看出,盡管兩個算法具有同樣的計算復雜性,但是在不同參數、稀疏程度和規模水平下卻體現了不同的計算效率.因為兩個算法在Step 2中分別采取了不同的數據結構,其中修正的先進先出算法采用了優先隊列來存儲參與迭代的點,而修正的固定序算法則是逐一判斷各點是否可參與迭代.后者相對簡單,易于實現,又能在大規模情形下體現出明顯的競爭優勢,因而具有一定的理論和實踐價值.

4 結 論

1)本文通過對固定序Bellman?Ford算法進行修正,獲得了一種求解邊數≤k的最短路問題的新算法——修正的固定序算法.

2)在大規模情形下,相對于文獻[2]提出的修正的先進先出算法,修正的固定序算法相對簡單、易于實現,實驗表明它具有顯著的競爭優勢,僅僅在少數情形下處于落后狀態.

[1]韓偉一,王錚.負權最短路問題的新算法[J].運籌學學報,2007,11(1):111-120.

[2]韓偉一.經典Bellman-Ford算法的改進及其實驗評估[J].哈爾濱工業大學學報,2012,44(7):74-77.

[3]BELLMAN R E.On a routing problem[J].Quarterly of Applied Mathematics,1958,16(1):87-90.

[4]CHERKASSKY B V,GEORGIADIS L,GOLDBERG A V,etal.Shortest?pathfeasibilityalgorithm:an experimentalevaluation[J].ACMJournalof Experimental Algorithmics,2009,14(2):1-37.

[5]HUNG M S,DIVOKY J J.A computational study of efficient shortest path algorithms[J].Computer&Operations Research,1988,15(6):567-576.

[6]LEWANDDOWSKI S.Shortest paths and negative cycle detection in graphs with negative weights[R].Stuttgart:Technical Report,Stuttgart University,2010.

[7]CHERKASSKY B V,GOLDBERG A V.Negative?cycle detection algorithm[J].Mathematical Programming,1999,85(2):277-311.

[8]CHERKASSKY B V,GOLDBERG A V.Shortest paths algorithms:theory and experimental evaluation[J]. Mathematical Programming,1996,73(2):129-174.

[9]YEN J Y.An algorithm for finding shortest routes from all source nodes to a given destination in general networks[J].Quarterly of Applied Mathematics,1970,27:526-530.

[10]段凡丁.關于最短路徑的SPFA快速算法[J].西南交通大學學報,1994,29(2):202-212.

[11]GOLDBERG A V,RADZIK T.A heuristic improvement of the Bellman-Ford algorithm[J].Applied Mathematics Letters,1993,6(3):3-6.

[12]TARJAN R E.Shortest paths[R].Murray Hill,NJ:AT&T Bell Laboratories,1981.

[13]GLOVER F,KLINGMAN D D,PHILLIPS N V.A new polynomially boundedshortestpathalgorithm[J]. Operations Research,1985,33(1):65-73.

[14]GLOVER F,KLINGMAN D D,PHILLIPS N V,et al. Newpolynomialshortestpathalgorithmsandits computational attributes[J].ManagementScience,1985,31(9):1106-1128.

(編輯 張 紅)

An improvement on fixed order Bellman?Ford algorithm

HAN Weiyi

(School of Economic and Management,Harbin Institute of Technology,150001 Harbin,China)

In the paper,Bellman?Ford algorithm with fixed order is modified in order to solve the shortest path problem with not more than k edges.After the k?th iteration,each path must own no more than k edges by modifying the labeling process of the origin algorithm.The modified algorithm proves true and its worst?case complexity is O(km).In contrast to the modified Bellman?Ford algorithm with FIFO order,experiments show that the algorithm has the significant competitive advantage in the large?scale case.

algorithm;Bellman?Ford algorithm;FIFO order;fixed order;the shortest path problem

TP301.6

:A

:0367-6234(2014)11-0058-06

2004-03-02.

國家自然科學基金(71101037);中央高校基本科研業務費專項資金(HIT.HSS.201406).

韓偉一(1974—),男,講師,碩士生導師.

韓偉一,wyhan@hit.edu.cn.

猜你喜歡
水平實驗
記一次有趣的實驗
張水平作品
微型實驗里看“燃燒”
作家葛水平
火花(2019年12期)2019-12-26 01:00:28
做個怪怪長實驗
加強上下聯動 提升人大履職水平
人大建設(2019年12期)2019-05-21 02:55:32
NO與NO2相互轉化實驗的改進
實踐十號上的19項實驗
太空探索(2016年5期)2016-07-12 15:17:55
老虎獻臀
《實驗流體力學》征稿簡則
主站蜘蛛池模板: 亚洲欧美国产五月天综合| 99精品在线看| 亚洲人在线| 欧美中日韩在线| 丝袜亚洲综合| 亚洲天天更新| 青青热久麻豆精品视频在线观看| 在线观看免费国产| 无码视频国产精品一区二区| 国产精品自拍合集| 日本人又色又爽的视频| 国产精品尹人在线观看| 人妻无码中文字幕一区二区三区| 亚洲男人在线| 无码有码中文字幕| 色欲色欲久久综合网| 国产黄色爱视频| 又黄又湿又爽的视频| 日韩av无码精品专区| 刘亦菲一区二区在线观看| 青青青视频蜜桃一区二区| 在线观看精品国产入口| 色婷婷久久| 久久91精品牛牛| 国产成人做受免费视频| 国产女人18水真多毛片18精品| 欧美日本在线一区二区三区| 亚洲综合色在线| 亚洲成综合人影院在院播放| 亚洲AⅤ无码国产精品| 69综合网| 99在线免费播放| 伊人五月丁香综合AⅤ| 在线精品亚洲一区二区古装| 国产青榴视频| 久久人体视频| 精品无码人妻一区二区| 免费看a级毛片| 国产精品成人一区二区| 欧美在线网| 国产精选自拍| 亚洲成人免费看| 亚洲久悠悠色悠在线播放| 91精品国产一区自在线拍| 中国一级毛片免费观看| 在线观看无码av五月花| 爽爽影院十八禁在线观看| 韩国福利一区| 国产一级毛片在线| 色135综合网| 99re在线免费视频| 试看120秒男女啪啪免费| 高清不卡一区二区三区香蕉| 99久久精品美女高潮喷水| 精品久久蜜桃| 国产日韩欧美在线视频免费观看| 99精品一区二区免费视频| 免费日韩在线视频| 成人毛片在线播放| 五月婷婷伊人网| 日韩精品亚洲人旧成在线| V一区无码内射国产| 国产精品林美惠子在线播放| 五月天综合婷婷| 日韩经典精品无码一区二区| 午夜精品久久久久久久99热下载| 亚洲精品第1页| 国产精品9| 国产成人久久综合777777麻豆| 天天躁夜夜躁狠狠躁躁88| 国产女人水多毛片18| AV片亚洲国产男人的天堂| 国产日韩欧美视频| 成人a免费α片在线视频网站| 这里只有精品在线播放| 在线观看免费AV网| 久久精品国产国语对白| 97色伦色在线综合视频| 亚洲丝袜中文字幕| 亚洲欧美日韩色图| 国产成人精品综合| 久久伊人久久亚洲综合|