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

利用堆排序優化路徑搜索效率的分析

2013-04-21 05:42:46孫玉昕
武漢工程大學學報 2013年6期
關鍵詞:效率

孫玉昕,章 瑾

(武漢工程大學計算機與科學學院,湖北 武漢 430074)

0 引 言

路徑搜索的核心思想是利用計算機的處理能力,準確高效地在網絡中任意兩個或多個節點之間尋找出最佳路徑.路徑搜索算法在計算機工程中有著廣泛的應用價值,比如地理信息系統、位置服務、智能交通、智能機器人等領域[1].在工程實踐中,路徑搜索的時間效率和空間效率是判斷算法的優劣重要指標[2].啟發式搜索和盲目搜索相比,可省略大量無謂的搜索路徑,已能夠極大提高搜索效率,但當面臨百萬節點的復雜網絡拓撲時,啟發式搜索算法的搜索耗時將會呈指數級快速增長,無法滿足需求,因此考慮引入二叉堆進行進一步的算法優化,使得搜索速度進一步提升.

1 實驗部分

1.1 算法選擇

路徑搜索的核心算法就是最短路徑算法 ,它是計算機科學與地理信息科學等領域研究的熱點.目前已知的最短路徑算法主要有 Floyd (弗洛伊德)算法、矩陣算法和Dijkstra(迪杰斯特拉)算法.其中Dijkstra算法是最為經典的最短路徑算法,其主要特點是以起始點為中心逐層外推,直到推進至終點.Dijkstra算法能確保求出最短路徑的最優解,但由于它是逐層遍歷的方式導致其效率比較低,無法滿足工程實際的需求[3].

為了滿足效率和靈活性要求,基于人工智能的啟發式搜尋法(Heuristic Search Methods)的A*算法常被應用路徑搜索[4].所謂啟發式是在Dijkstra算法基礎上,引入啟發函數(Heuristic Function)來估算當前節點與目標節點的距離,通過啟發函數的估算值不斷動態調整搜索方向.與Dijkstra算法的盲目搜索過程,A*算法的啟發式搜索方法充分利用網絡拓撲圖給出的信息來動態地調整搜索方向,因此搜索效率更高[5-6].

A*算法的核心計算公式表示為

f(n)=g(n)+h(n)

其中f(n) 是途經節點n從初始點到目標節點的路徑距離的估價函數值,g(n) 是在狀態空間中從初始節點到n節點的實際路徑距離,h(n)是從n到目標節點的距離的啟發函數.f(n)值越小則表示該結點的路徑越短[7-9].

A*算法流程圖如圖1所示.運用A*算法進行路徑搜索計算.A*算法的時間復雜度是O(n2),n為網絡節點數量.因此,隨著網絡節點數和路徑長度的增加,A*算法的搜索耗時呈指數級的快速增長.在工程實際中,經常需要對大規模的節點進行搜索,當面臨百萬節點的復雜網絡拓撲時, A*算法的效率仍然無法滿足需求[5,7].

圖1 A*算法流程圖Fig.1 A* algorithm flowchart

1.2 優化分析

針對上述大規模網絡的路徑搜索需求,重點研究了應用A*算法進行路徑搜索時的效率優化問題.A*算法的數據結構的核心是兩個表:Open表(Open表中存放已計算出估計值的結點)與Closed表(Closed表存放已訪問過的結點),并且還沒有訪問過的A*結點.Open表是A*算法訪問最頻繁的表,因為需要從Open表中取出最小的估計值,作為本次訪問節點.

大量的操作是針對Openlist列表(Openlist表存放可能成為最短路徑的隊列)進行的,重復不斷的OpenList進行節點增加,刪除,查找,按f值排序等操作.可以說Open表的數據結構設計很大程度上決定了算法的效率.最易于實現Open表數據結構是鏈表結構,采用鏈表或者哈希表的數據結構來處理Openlist.這樣算法的過程比較清晰,設計難度也較低.但是當需要處理大規模的網絡時,OpenList的列表長度會增長到有數千個節點組成.在重復對大規模的節點進行排序,搜索,操作,計算量會非常大.其中最主要的是對Openlist的排序操作,如果使用常規的排序算法如冒泡法等,需要重復不斷的遍歷整個列表,算法復雜度是O(n2)[2].

A*算法并不需要Openlist完全有序,只需要找出f值最小的節點即可,而對其他節點的位置無要求.因此采用二叉堆可滿足算法對Openlist的操作需求.

首先二叉堆是完全二叉樹,并滿足堆的特性:父節點的鍵值總是小于其子節點的鍵值.最小鍵值的節點總在堆的頂端.因此在算法中查找f值最小的節點,堆頂端的節點就是需要的節點.用一維數組來表示二叉堆時,數組中第n(n>=1)節點,其子節點位于數組的2n和2n+1的位置,其父節點位于數組n/2的位置.如圖2所示(數組下標從1開始).

圖2 二叉堆的數組表示Fig.2 Binary heap array representation

顯然數組第1個節點就是堆頂節點,就是f值最小節點.利用二叉堆的特性,可直接獲取Open表中f值最小的節點.從openlist列表中取出f值最小的節點,需要將其從堆移除.在移除堆頂節點后,將堆的最后一個節點移動到頂點,再將新堆頂與其兩個子節點比較,如父節點比子節點大,就交換二者,直到父節點比兩個子節點的f值都低.

當向二叉堆增加節點時,可將新節點放在數組末尾.然后與其父節點比較,如果新節點的f值更低,就交換父子的位置.直到新節點不再比它的父節點低,或者這個節點已經到達頂端.在搜索過程中,節點的f值可能會改變,這時要重新對Openlist進行有序化處理:從發生改變的節點開始,將其與父節點比較,如果子節點的f值小于其父節點,就將他們交換.直到到達堆頂為止.

運用二叉堆可直接獲取Openlist的f值最小的節點,計算量與Openlist大小無關.向Openlist插入節點,刪除節點,排序操作的算法時間復雜度都是O(logn).n為Openlist的節點數.從理論分析可知,二叉堆對于大規模的A*路徑搜索是效率比較優化的算法.

2 結果與討論

應用A*算法進行最短路徑搜索,用于測試的路網模型是一個擁有100萬個節點(1000*1000)的超大型二維網格.為了網絡拓撲模型更加清晰化和結構化,網絡中的每個節點(處于邊緣的節點除外)都擁有8個不同方向的相鄰節點,節點分為兩類:可通行與不可通行.A*算法需要在網格中指定的起始節點和目標節點之間,快速搜索出一條由可通行的節點組成的而且是代價最小的通行路徑.在測試網絡中按照一定比例(30%)隨機地設置的不可通行節點,當路徑搜索遇到不可通行的節點時,是不能直接通行的,必須要繞過.

路徑代價如圖3中,節點與方向正對的四個相鄰節點之間的路徑代價為10,與斜向方向的相鄰節點的四個子節點的路徑代價為14.這樣的路網結構可以很好的模擬二維平面路網的拓撲結構和數學模型,同時盡量采用整形數值計算,降低運算難度,提高計算效率.

圖3 網絡結構模型Fig.3 Network structure model

A*算法中的關鍵估價函數值f(n)=g(n)+h(n),其中g(n)表示為從節點n到起始節點s的已知最短路徑長度.H(n)標準從節點n到目標節點o的路徑估計值.估價函數f(n) =g(n) +h(n)代表經過該節點的路徑的估計值,在A*算法運行中,f(n)值越小那么此節點的路徑越好.估價函數通過判斷父節點和子節點的相對位置來進行累加計算,從起始節點開始逐步外推,直到到達目標節點位置.

對二維網絡拓撲,圖中節點由坐標(X,Y)表示,那么節點A到目標節點B的啟發函數可以用兩點間最短路徑的方法來設計,即

但考慮到計算機在處理開平方根運算會增大計算量,采用另外一個近似的公式取代

H(n)=abs(Xn-Xo)+abs(Yn-Yo)

其中,Xn,Yn為節點n的橫向和縱向坐標值;Xo,Yo為目標節點o的橫向和縱向坐標值.

abs()為絕對值函數.圖4為路網搜索的過程實例,圖中每個像素點代表路網拓撲中一個節點,白色點為可通行節點,黑色點為不可通行節點.深灰色點為搜索過的節點(Close表),白色點組成的線條即為所需的最短路徑結果.

圖4 網絡搜索過程Fig.4 Road network search process

通過常規的鏈表數據結構實現的Openlist和采用二叉堆進行優化后的Openlist的算法進行多次對比分析,結果如表1和圖5所示.

表1 引入二叉堆算法后實際耗時對比Table 1 Introduction of binary heap algorithms compare the actual time-consuming

圖5 引入二叉堆算法后實際耗時對比Fig.5 Introducing binary heap algorithm actually consuming comparison chart注:

3 結 語

從兩種算法的計算量和耗時對比可知,常規算法在進行長路徑、大搜索空間的搜索時,計算時間迅速增加,而二叉堆算法則表現出良好的時間線性,沒有出現搜索時間爆炸式增長的情況.而針對數千個路徑節點,在需要搜索幾百萬的海量節點空間的情況下,應用二叉堆數據結構的A*算法具有良好的時間線性度,具備工程應用價值.

致謝

論文在資料收集和實驗數據采集過程中,得到黃珂副教授的大力支持,在此謹向她表示衷心的感謝.

參考文獻:

[1] 陳偉亞,劉芳芳.地理信息系統在水污染控制規劃中的應用[J].武漢工程大學學報,2013,35(1):21-25.

CHEN Wei-ya, LIU Fang-fang. Applieation of geo-graphic information system teehnology in planing of water pollution control[J]. Jouranal of wuhan insti-tute of teehnology, 2013,35(1):21-25.(in Chinese)

[2] 柳林,張繼賢,唐新明,等.LBS體系結構及關鍵技術的研究[J].測繪科學,2007,32(5): 144-146.

LIU Lin, ZhANG Ji-xian, TANG Xin-ming, at al. LBS architecture and Research of key technologies[J]. Science of Surveying and Mapping,2007,32 (5):144-146 .(in Chinese)

[3] 顧運筠.最短路徑搜索算法的幾種優化改進[J].計算機應用與軟件,2008,25(4):246-247.

GU Yun-jun. Shortest path search algorithm several optimized and improved[J]. Computer Applications and Software,2008,25(4): 246 -247.(in Chinese)

[4] 劉浩,鮑遠律.A*算法在矢量地圖最優路徑搜索中的應用[J]. 計算機仿真,2008,25(4):253-257.

LIU Hao, BAO Yuan-lv.The application of the A*algorithm searching the optimal vector path map[J]. Computer Simulation, 2008,25(4): 253-257.(in Chinese)

[5] 陳和平,張前哨.A*算法在游戲地圖尋徑中的應用與實現[J].計算機應用與軟件,2005,22(12):118-120.

CHEN He-ping, Zhang Qian-shao. Application and Implementation of the A*algorithm pathfinding in game maps[J]. Computer Applications and Software, 2005, 22(12):118-120.(in Chinese)

[6] 史輝,曹聞,朱述龍,等.A*算法的改進及其在路徑規劃中的應用[J].測繪與空間地理信息,2009,32(6): 208-211.

SHI Hui, CAO Wen, ZHU Shu-long, et al. A*algorithm and its application in path planning[J]. Geomatics & Spatial Information,2009,32 (6): 208-211.(in Chinese)

[7] 朱福喜,傅建明.人工智能原理[M]. 武漢:武漢大學出版社,2002.

ZHU Fu-xi, FU Jian-ming. Principle of artificial intelligence[M]. Wuhan: Wuhan University press, 2002.(in Chinese)

[8] 龔劬.圖論與網絡最優化算法[M].重慶:重慶大學出版社,2009.

GONG Qu. Graph theory and network optimization algorithms[M]. Chongqing: Chongqing University Press,2009.(in Chinese)

[9] 魯統偉,林芹,李熹,等.記憶運動方向的機器人避障算法[J].武漢工程大學學報,2013,35(4):66-71.

LU Tong-wei, LIN Qin, LI Xi, et al. Obestacle avoidance algorithm of robot based on recording moue direction. Jouranal of Wuhan instute of technology,2013,35(4):66-71.(in Chinese)

猜你喜歡
效率
你在咖啡館學習會更有創意和效率嗎?
提升朗讀教學效率的幾點思考
甘肅教育(2020年14期)2020-09-11 07:57:42
注意實驗拓展,提高復習效率
效率的價值
商周刊(2017年9期)2017-08-22 02:57:49
引入“倒逼機制”提高治霾效率
遼寧經濟(2017年6期)2017-07-12 09:27:16
質量與效率的爭論
中國衛生(2016年9期)2016-11-12 13:27:54
跟蹤導練(一)2
提高食品行業清潔操作的效率
OptiMOSTM 300V提高硬開關應用的效率,支持新型設計
“錢”、“事”脫節效率低
中國衛生(2014年11期)2014-11-12 13:11:32
主站蜘蛛池模板: 另类重口100页在线播放| 99er精品视频| 十八禁美女裸体网站| 亚洲精品无码专区在线观看| 亚洲首页在线观看| 婷婷激情亚洲| 四虎精品黑人视频| 婷婷色中文| 亚洲欧洲综合| 国产精品一区二区不卡的视频| 麻豆精品久久久久久久99蜜桃| h视频在线观看网站| jizz国产在线| 制服无码网站| 欧美成人怡春院在线激情| 中文字幕在线一区二区在线| 成人在线亚洲| 直接黄91麻豆网站| 欧美A级V片在线观看| 国产成人免费观看在线视频| 综合成人国产| 欧美天堂久久| 亚洲69视频| 国产亚洲欧美日本一二三本道| 国产AV毛片| 欧美成人精品在线| 最新国产精品第1页| 国产青青操| 九九热视频精品在线| 日本黄色不卡视频| 国产美女主播一级成人毛片| 国产凹凸视频在线观看| 国产精品尤物在线| 一区二区三区国产精品视频| 人妻精品久久无码区| 日本欧美午夜| 99中文字幕亚洲一区二区| 91成人在线观看| 高清无码一本到东京热| 伊人色在线视频| 亚洲福利一区二区三区| 91无码网站| a毛片在线播放| 国产在线一区视频| 第一区免费在线观看| 伊人激情久久综合中文字幕| 中文字幕在线看| 久久婷婷综合色一区二区| 午夜成人在线视频| 精品欧美一区二区三区久久久| 国产免费怡红院视频| 久久人人97超碰人人澡爱香蕉| 中国一级毛片免费观看| 不卡无码网| 91年精品国产福利线观看久久 | 激情综合婷婷丁香五月尤物| 久久人搡人人玩人妻精品一| 日本免费新一区视频| 国产黑丝一区| 国产精品亚洲专区一区| 亚洲中文字幕无码mv| 亚洲综合色在线| 国产福利拍拍拍| 欧美不卡视频一区发布| 国产福利拍拍拍| 在线视频一区二区三区不卡| 99久久国产精品无码| 久一在线视频| 国产无套粉嫩白浆| 久久人体视频| 国模极品一区二区三区| 一级毛片在线免费视频| 久久中文字幕2021精品| 亚洲国产精品不卡在线| 久久中文字幕2021精品| 人妻一本久道久久综合久久鬼色| 国产激情无码一区二区三区免费| 亚洲成人www| 亚洲色图欧美| 99热这里只有精品在线观看| 色婷婷在线影院| 国产黄在线免费观看|