青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

獨立博客: 哲學與程序

哲學與程序

最短路徑系列【最短路徑、哈密頓路等】

本文轉載本人獨立博客:http://zhexue.sinaapp.com/?p=13

最短路徑問題,一個經典算法問題。本文粗略總結了一種常見的最短路徑算法,以及幾個最短路徑變種問題的解法,其中包括哈密頓路。對于有向圖或者無向圖,假設有V個節點,E條邊,G[Vi,Vj]表示圖中點Vi到Vj邊的權值。dist[i]表示:點s到點i的最短路徑。

一、單源最短路徑

給定圖G,求點對s->t之間的最短路徑,該問題使用經典的dijkstra算法即可解決,時間復雜度O(V^2)?;舅枷耄簝蓚€集合S,T,S表示已經訪問的點集合,T表示未訪問的點集合,S初始為空,T包括所有點;每次從T集合中選取從s到該點距離最小的點cur,然后將點cur加入到S中(保證從s到S集合中的點之間的路徑長度最小),并且基于cur點為跳板,做松弛操作,更新s到T集合中其他點的距離,松弛操作即,如果dist[j] > dist[cur] + G[cur,j],更新dist[j] = dist[cur]+G[cur,j],其中j屬于T集合;當cur==t時算法結束。

dijkstra代碼下載

二、有負權邊的圖的單源最短路徑

對于(一)中的dijkstra算法,是否可以用于求解帶負權邊的單源最短路徑問題呢?用三元組(x,y,w)表示一條邊權為w的從點x到點y的有向邊。先舉例看看,假設圖中包含3個節點,包含3條邊:(1,2,-3)、(2,3,1)、(3,1,1),從圖可以看出為一個環1->2->3->1,且環的邊權總權值為-3+1+1=-1,那么通過一直循環,那么圖中任意兩點之間的最短路徑都為-oo大,因此不能通過dijkstra來求解最短路徑,因為出現負環之后破壞了“從s到集合S中點之間路徑長度最小”這點,通過負環的循環,s到S中點之間的路徑長度還可以變小。

對付有負權邊的單源最短路徑問題,可以采用bellman-ford算法、SPFA算法。

Bellman-ford算法思想:dist[s] = 0,其他點i ,dist[i]=oo。進行V-1次循環,每一次循環:對圖每一條邊E(i,j)兩邊的點做松弛操作,如果dist[j] > dist[i] + G[i,j],更新dist[j] = dist[i]+G[i,j]。完成V-1次循環后,進行判斷:如果存在一條邊E(i,j),如果dist[i]+G[i,j] < dist[j],那么圖中存在負權環。如果不存在負權環,則dist[t]為從s到t的最短路徑。算法復雜度O(VE)。

Bellman-ford算法代碼下載

SPFA算法思想:維護一個隊列Q,隊列初始只有s點,一個標記數組flag,flag[i]=1表示節點i在隊列中,否則表示不在隊列中,一個cnt數組,cnt[i]標記點i進入隊列的次數。求隊首元素cur,對于邊E(cur,j),進行松弛操作:如果dist[j] > dist[cur] + G[cur,j],更新dist[j] = dist[cur]+G[cur,j],如果j不在隊列中,則將j加入隊尾,同時判斷j進入隊列次數是否大于V-1,如果大于V-1,說明存在負權環,算法結束,否則一直進行,直到隊列為空為止。算法復雜度O(2E)。

SPFA算法代碼以及論文下載

三、大規模的圖,頂點多的稀疏圖

Dijkstra算法復雜度為O(V^2),如果圖的規模太大,那么無疑難以勝任。其實,對與規模大的圖,可以使用min-heap優化,復雜度O((V+E)logV)。思想:維護一個最小堆,用于優化Dijkstrak中從T選取從s到T中路徑最短的點,該點即堆頂元素。這個方法即A*搜索。

Dijkstra+heap代碼下載

四、全源最短路徑問題

全源最短路徑即求出圖中任意點對之間的最短路徑。方法(1):枚舉任意點對,采用dijkstra算法求解即可,復雜度O(V^4)。方法(2):以每一個點為松弛操作的中間點,枚舉其他兩點,進行松弛操作,即可得到全源最短路徑,這便是鼎鼎大名的floyd算法,其狀態轉移方程如下: G[i,j]=min{G[i,k]+G[k,j],G[i,j]},時間復雜度O(V^3)。

floyd算法代碼下載

 

五、最短哈密頓路徑

從s出發到達t,且經過圖中每個點至少一次的最短路徑長度。這個問題是一個NPC問題,沒有高效的解法。假設有N個點,那么N位bit來標記那些點已經訪問過,哪些沒有訪問過。設f[I][J]表示,從s出發達到J,且經過了I中對應位標記為1的所有點的最短路徑。有方程如下:

f[I1][J1] = min{F[I][J] + G[J][j],  枚舉I,J,j,其中(I&(1<<j)) == 0 &&  (I|(1<<j) )== I1 &&  (I&(1<<J)) != 0}

初始只f[(1<<s)][s] = 0, 從改點出發,利用上述方程推出所有的中間變量,包括結果f[(1<<V)-1][t]。下面代碼用于求解小規模圖的哈密頓路。

代碼下載

六、第K短路徑問題

求s到t的第k短路徑,如果k=1,直接采用dijkstra算法即可求解。如果k=2的話,首先采用dijkstra算法求解最短路徑,然后枚舉刪除最短路徑上邊,再次進行dijkstra算法,求解最短路徑即為第k短路徑。

理論一:A*算法求解到的路徑是最短的。

根據理論一就可以用A*路徑求得最短路徑,比dijkstra盲目式算法效率高。

假設用A*算法求得最短路徑時,即第一次搜索到目標節點后不停止。繼續啟發式搜索下去,那么根據理論一可以得到第二次搜索到目標節點的路徑是第二短路徑。依次類推得到第k短路徑。

那么A*算法的h’(x)怎么設計呢?

已知h’(x)與h(x)越接近,時間效率越好,h(x)為x到目標節點的實際最短路長。既然這樣那么直接取最好值,先用dijkstra算法算出各點到目標節點的最短路徑作為估價值h’(x),使效率到達極大。

第K短路徑代碼下載

posted on 2011-12-27 18:24 哲學與程序 閱讀(2842) 評論(0)  編輯 收藏 引用

導航

公告

歡迎訪問 http://zhexue.sinaapp.com

常用鏈接

隨筆分類(37)

隨筆檔案(41)

Algorithm

最新隨筆

搜索

最新評論

獨立博客: 哲學與程序
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产主播一区二区三区| 激情婷婷欧美| 国产精品一区二区在线观看| 亚洲国产裸拍裸体视频在线观看乱了中文| 国产精品国产成人国产三级| 91久久精品国产91性色tv| 久久久在线视频| 欧美一区二粉嫩精品国产一线天| 欧美国产日韩精品免费观看| 亚洲风情亚aⅴ在线发布| 久久久久国产成人精品亚洲午夜| 亚洲免费黄色| 欧美日韩免费一区二区三区| 99re66热这里只有精品3直播| 久久久亚洲国产美女国产盗摄| 一区二区三区四区蜜桃| 欧美色123| 午夜欧美理论片| 性一交一乱一区二区洋洋av| 国产午夜亚洲精品不卡| 卡通动漫国产精品| 久久综合伊人77777蜜臀| 亚洲高清一区二| 亚洲激情成人| 欧美日韩第一页| 欧美亚洲日本网站| 欧美综合国产| 亚洲韩国青草视频| 日韩一级不卡| 国产人成精品一区二区三| 欧美成人免费观看| 欧美性片在线观看| 亚洲欧美综合精品久久成人| 亚洲最新在线视频| 国产欧美精品日韩| 久久免费国产精品| 免费在线一区二区| 中国成人亚色综合网站| 亚洲综合清纯丝袜自拍| 极品少妇一区二区| 亚洲激情在线播放| 国产精品色婷婷久久58| 麻豆freexxxx性91精品| 欧美极品欧美精品欧美视频| 亚洲欧美乱综合| 久久精品理论片| 久久女同互慰一区二区三区| 麻豆精品精品国产自在97香蕉| 欧美亚洲午夜视频在线观看| 久久久久久黄| 欧美精品一区二区三区很污很色的| 国产精品久久97| 久久国产加勒比精品无码| 老司机精品久久| 亚洲欧美日韩成人高清在线一区| 一色屋精品视频免费看| 久久字幕精品一区| 亚洲国产精品va在线看黑人| 一本一本久久a久久精品牛牛影视| 久久久亚洲综合| 久久久久久久久久码影片| 欧美一区二区私人影院日本 | 欧美1区免费| 欧美国产精品v| 国模私拍视频一区| 麻豆久久精品| 亚洲欧美日韩一区二区| 午夜免费日韩视频| 亚洲高清久久网| 一本高清dvd不卡在线观看| 亚洲欧美视频在线观看视频| 亚洲精品美女久久久久| 免费一级欧美片在线观看| 久久综合给合久久狠狠狠97色69| 欧美成年人视频| 一本色道久久综合亚洲91| 午夜精品久久久久久久男人的天堂 | 久久gogo国模裸体人体| 欧美在线综合| 久久国产99| 久久久国产精品一区| 老司机一区二区三区| 亚洲电影在线看| 久久久亚洲精品一区二区三区| 国产日韩欧美一区在线| 欧美午夜精品久久久久久人妖| 欧美日韩国产探花| 久久综合伊人77777尤物| 亚洲激情综合| 亚洲国产欧美另类丝袜| 在线亚洲欧美| 黄色成人av网站| 国产麻豆午夜三级精品| 国产亚洲在线| 99riav国产精品| 久久福利视频导航| 国产女人aaa级久久久级| 欧美精品日韩www.p站| 在线观看不卡| 美脚丝袜一区二区三区在线观看| 欧美一区成人| 午夜在线a亚洲v天堂网2018| 亚洲另类自拍| aa国产精品| 亚洲一区二区三区影院| 国产精品久久久久久av下载红粉| 开心色5月久久精品| 国产精品国产a级| 亚洲肉体裸体xxxx137| 久久免费99精品久久久久久| 狂野欧美性猛交xxxx巴西| 亚洲大片在线| 亚洲三级免费| 欧美激情亚洲国产| 久久婷婷国产综合精品青草 | 亚洲男同1069视频| 国产亚洲精品久久久久久| 亚洲激情中文1区| 亚洲第一成人在线| 欧美一区二区精美| 亚洲国内欧美| **欧美日韩vr在线| 在线精品国产欧美| 久久精品人人| 老鸭窝亚洲一区二区三区| 亚洲精品欧美激情| 夜夜嗨网站十八久久| 国产精品卡一卡二| 欧美电影免费观看大全| 欧美日韩中文字幕在线视频| 欧美影院精品一区| 男女视频一区二区| 欧美3dxxxxhd| 欧美大成色www永久网站婷| 久久综合狠狠综合久久综合88| 国产精品有限公司| 亚洲欧洲一区二区天堂久久| 欧美午夜激情在线| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 久久免费偷拍视频| 欧美巨乳在线| 先锋影音网一区二区| 欧美激情精品久久久久久变态| 亚洲精品1区| 欧美在线观看日本一区| 在线精品一区| 国产精品久99| 欧美成人亚洲成人| 欧美一区二区三区免费看| 亚洲精品在线观看免费| 久久精品最新地址| 亚洲一区二区三区在线播放| 黄色一区二区三区四区| 国产精品白丝jk黑袜喷水| 欧美二区不卡| 久久久精彩视频| 久久久久综合| 国产视频精品网| 你懂的视频一区二区| 亚洲综合三区| 一本色道久久| 亚洲精品在线电影| 亚洲国产精品va在线观看黑人| 久久成人这里只有精品| 一区二区三区日韩欧美| 欧美激情一区二区三区在线视频观看 | 榴莲视频成人在线观看| 亚洲欧美日韩在线观看a三区| 欧美成年人在线观看| 欧美一区激情视频在线观看| 亚洲天堂av在线免费观看| 亚洲国产高清在线| 亚洲级视频在线观看免费1级| 好吊色欧美一区二区三区四区 | 久久久久久噜噜噜久久久精品| 一区二区三区视频免费在线观看| 久久精品国产免费看久久精品| 99av国产精品欲麻豆| 亚洲精品久久久久久一区二区| 狠久久av成人天堂| 好吊色欧美一区二区三区四区| 国产视频精品免费播放| 国产一区二区三区免费在线观看| 国产精品久久中文| 国产精品乱人伦中文| 国产欧美日韩精品在线| 国产亚洲精品久久久久久| 国模精品娜娜一二三区| 在线成人黄色| 亚洲精品一区二| 亚洲天堂激情| 欧美一级网站| 在线观看欧美黄色| 亚洲国产欧美一区二区三区久久| 影音先锋久久资源网| 亚洲国产欧美日韩另类综合| aⅴ色国产欧美| 亚洲欧美日韩一区二区在线| 欧美亚洲综合在线| 老鸭窝毛片一区二区三区|