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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Bellman-Ford 算法 和 动态规划

發布時間:2024/9/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Bellman-Ford 算法 和 动态规划 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Floyd算法:

狀態:

d[k][i][j]定義:“只能使用第1號到第k號點作為中間媒介時,點i到點j之間的最短路徑長度。”

動態轉移方程:

d[k][i][j]=min(d[k?1][i][j],d[k?1][i][k]+d[k?1][k][j])(k,i,j∈[1,n])d[k][i][j] = min(d[k-1][i][j], d[k-1][i][k]+d[k-1][k][j])(k,i,j∈[1,n])d[k][i][j]=min(d[k?1][i][j],d[k?1][i][k]+d[k?1][k][j])k,i,j[1,n]

Bellman-Ford 算法:

狀態:

d[k][u]定義:從源點v出發最多經過不構成負權值回路的k條邊到達終點u的最短路徑的長度

動態轉移方程:

dist[k][u]=min(dist[k?1][u],min(dist[k?1][j]+Edge[j][u])),j=0,1,...,n?1;j!=udist[k][u] = min(dist[k-1][u] ,min(dist[k-1][j]+Edge[j][u])),j = 0,1,...,n-1;j!=udist[k][u]=min(dist[k?1][u],min(dist[k?1][j]+Edge[j][u])),j=0,1,...,n?1j!=u

從上面可以看出這兩種算法,對于子問題考慮前者考慮的是基于點的中轉,后者考慮是基于邊的中轉,基于邊的中轉需要考慮不形成回路,求最小的話,非負數情況下,肯定是沒有回路的,存在負權回路,就沒有最小值,需要檢測是否有負權回路。

Bellman-Ford 算法基于動態規劃的原始實現:

#%% # dist[k][u] = min{ dist[k-1][u] ,min{dist[k-1][j]+Edge[j][u]} },j = 0,1,...,n-1;j!=uimport numpy as np def Bellman_Ford_original(graph,start):vertex_num = len(graph)edge_num_ = vertex_num-1list = np.full((edge_num_+1,vertex_num+1),np.inf) # for i in range(1,vertex_num+1): # list[1,i] = graph[start,i-1]list[:,start+1] =0for k in range(1,edge_num_+1):for u in range(1,vertex_num+1):result = list[k-1,u]for j in range(1,vertex_num+1):if graph[j-1,u-1]>0 and graph[j-1,u-1]<10000 and result > list[k-1,j] + graph[j-1,u-1]:result = list[k-1,j] + graph[j-1,u-1]list[k,u] =result return list[k,1:]

使用滾動數組加入空間優化:list[k-1,u],list[k-1,j],假如使用一維數組的話,list[k-1,u]是未更新的主句沒問題,list[k-1,j]就不好說了,既有可能是更新過的數據,也有可能是未更新的數據,理論上應該不能用滾動數組優化,但是:只要數據可以被更新,就代表v到u的距離可以邊更小,是不影響整體數據向更小方向推進的。

使用一維數組優化版本,加入了追蹤解實現:

def Bellman_Ford(graph,start):vertex_num = len(graph)edge_num_ = vertex_num-1list = np.full((vertex_num+1),np.inf)list[start+1] = 0path =[-1] * vertex_num for i in range(vertex_num):if graph[start,i] < 10000:path[i] = start path[start] = None# for i in range(1,vertex_num+1): # list[i] = graph[start,i-1]for k in range(1,edge_num_+1):flag = Truefor u in range(1,vertex_num+1):for j in range(1,vertex_num+1):w = graph[j-1,u-1]if w>0 and w <10000 and list[u] > list[j] + w :list[u] = list[j] + wpath[u-1] = j-1flag = False# 提前退出,并檢查是否有負回路 if flag == True:for u in range(1,vertex_num+1):for j in range(1,vertex_num+1):if list[u] > list[j] + graph[j-1,u-1] :print "there is a - cycle"breakbreakreturn list[1:],path

運行結果:

graph = np.full((7,7),np.inf) graph[0,:3] = [0,-1,2] graph[1,:4] = [-1,0,3,4] graph[2,:5] = [2,3,0,5,6] graph[3,1:6] = [4,5,0,7,8] graph[4,2:6] = [6,7,0,9] graph[5,3:7] = [8,9,0,10] graph[6,5:7] = [10,0]print Bellman_Ford_original(graph,6) value,path = Bellman_Ford(graph,6) print value print path[25. 22. 23. 18. 19. 10. 0.] there is a - cycle [25. 22. 23. 18. 19. 10. 0.] [2, 3, 3, 5, 5, 6, None]

另外一種理解,從松弛的角度:

第一,初始化所有點。每一個點保存一個值,表示從原點到達這個點的距離,將原點的值設為0,其它的點的值設為無窮大(表示不可達)。
第二,進行循環,循環下標為從1到n-1(n等于圖中點的個數)。在循環內部,遍歷所有的邊,進行松弛計算。
第三,遍歷途中所有的邊(edge(u,v)),判斷是否存在這樣情況:
d(v)>d(u) + w(u,v)
則返回false,表示途中存在從源點可達的權為負的回路。
之所以需要第三部分的原因,是因為,如果存在從源點可達的權為負的回路。則應為無法收斂而導致不能求出最短路徑。

總結

以上是生活随笔為你收集整理的Bellman-Ford 算法 和 动态规划的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲一区二区观看 | 国产中文字幕91 | 亚洲日批视频 | 午夜伦理视频 | 亚洲精品久久视频 | 欧美日韩一区二区三区在线电影 | 国产网红主播精品av | 国产黄色片免费 | 一级成人av | 在线亚洲精品 | 91精品国产91久久久久久久久久久久 | 午夜67194| 亚洲精品中文字幕乱码无线 | 三年在线观看视频 | 亚洲女人av | 嫩草懂你 | 亚洲激情在线播放 | 熟女少妇a性色生活片毛片 亚洲伊人成人网 | 中文字幕一区二区人妻电影丶 | 欧美丰满熟妇bbbbbb百度 | 五月婷婷,六月丁香 | 最色网站 | 国产chinese男男gaygay视频 | 偷自在线 | 小婕子伦流澡到高潮h | 精品亚洲永久免费 | 综合精品视频 | 78日本xxxxxxxxx59 亚洲图片小说视频 | 美女试爆场恐怖电影在线观看 | 日本激情久久 | 国产精品专区在线观看 | 亚洲国产精品视频在线 | 毛片在线免费视频 | 好男人在线视频 | 农村末发育av片一区二区 | 国产一在线 | 老司机精品视频在线 | 淫久久| 精品久久国产 | 操亚洲| 91视频网页 | 亚洲天堂中文在线 | 久久无码人妻一区二区三区 | 少妇一级淫片免费放中国 | 在线看黄色网 | 国产av毛片 | 樱花草涩涩www在线播放 | 欧美视频一区二区三区四区 | 国产精品777 | 午夜黄色在线观看 | 国产精品丝袜在线观看 | 欧美日韩免费观看视频 | 高跟91白丝| 成人在线视频一区二区 | 天天干夜夜玩 | 国产91麻豆视频 | 少妇高潮大叫好爽喷水 | 国产精品亚洲αv天堂无码 伊人性视频 | 欧美va在线观看 | 毛片在线观看视频 | 成人免费在线视频观看 | 国产顶级毛片 | 作爱视频在线 | 永久免费,视频 | 亚洲午夜精选 | 最新色网站 | 午夜刺激视频 | 青青草视频 | 久久性| 猛1被调教成公厕尿便失禁网站 | 日韩av免费在线 | 日韩三级av在线 | 国产 日韩 一区 | 精品人妻少妇嫩草av无码专区 | 性免费网站 | 丁香婷婷综合激情 | 欧美日韩生活片 | 欧美一级黄色录像 | 最新日本中文字幕 | av私库 | 日日碰狠狠添天天爽无码 | 日韩在线免费播放 | 哈利波特3在线观看免费版英文版 | 色偷偷91| 国产亚洲不卡 | 99视频在线观看视频 | 日本三级中文字幕在线观看 | 91av小视频| 国产理论一区 | 少妇特黄a一区二区三区 | 又色又爽又黄 | 91新网站| 免费看av的网址 | 在线观看香蕉视频 | 一直草 | 亚洲第一看片 | 999精品在线观看 | 亚洲熟女乱综合一区二区三区 | 一区二区欧美在线观看 |