多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > php教程 > 任意兩點(diǎn)最短路 Floyd-Warshall算法 傳遞閉包

任意兩點(diǎn)最短路 Floyd-Warshall算法 傳遞閉包

來源:程序員人生   發(fā)布時(shí)間:2015-03-16 11:07:36 閱讀次數(shù):3592次

Floyd-Warshall算法是求解任意兩點(diǎn)最短路的有力武器。其也適用于存在負(fù)邊的情況。

DP思路,假定只使用前K個(gè)點(diǎn)時(shí)i到j(luò)的最短距離為d[k][i][j]
那末,使用前K+1個(gè)點(diǎn)就能夠分成兩種情況
①i到j(luò)的最短路用到了第K+1個(gè)點(diǎn)(d[k+1][i][j] = d[k][i][j])
②i到j(luò)的最短路沒有用到第K+1個(gè)點(diǎn)(d[k+1][i][j] = d[k][i][k]+d[k][k][j]);
所以,d[k+1][i][j] = min(d[k][i][j],d[k][i][k]+d[k][k][j])

使用轉(zhuǎn)動數(shù)組,就能夠?qū)懗?維數(shù)組的情勢
d[i][j] = min(d[i][j],d[i][k]+d[k][j])

Floyd算法可以在O(V^3)的時(shí)間內(nèi)解出,判斷圖中是不是有負(fù)圈,只需要檢查是不是存在d[i][i]是負(fù)數(shù)的頂點(diǎn)i就能夠了。

代碼

//d[i][j]表示i->j的權(quán)值,不存在時(shí)設(shè)為INF 但是d[i][i]設(shè)為0 for(int k = 0 ; k < V ; k ++) { for(int i = 0 ; i < V ; i ++) { for(int j = 0 ; j < V ; j ++) { d[i][j] = min(d[i][j],d[i][k]+d[k][j]); } } }

由于實(shí)現(xiàn)起來非常簡單,如果復(fù)雜度在可以承受的范圍以內(nèi),單源最短路也能夠使用Floyd-Warshall算法來進(jìn)行求解。

在有向圖中,如果需要判斷每兩個(gè)點(diǎn)是不是存在路徑,那末也能夠用Floyd算法來進(jìn)行傳遞閉包
只需要改成d[i][j] = d[i][j] || (d[i][k]&&d[k][j])便可(預(yù)處理也要變化)

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 成人精品一区二区不卡视频 | 国产精品东北一极毛片 | 在线观看亚洲免费 | 亚洲三级在线视频 | 亚洲一级片免费 | 最近最新视频中文字幕3 | 最近免费中文字幕大全高清mv | jizz中国人 | 亚洲视频黄色 | 日本在线视频不卡 | 最近中文字幕国语完整在线5 | 日本免费观看网站 | 欧美一区二区三区高清不卡tv | 欧美高清videosfreeⅹ | 欧美国产高清 | 成人久久久精品乱码一区二区三区 | 日本中文字幕视频在线看 | 主播福利视频在线观看网址 | 亚洲第一区二区快射影院 | 久久国产精品一区 | 性刺激欧美三级在线观看 | 99在线资源| 亚洲欧美另类日本久久影院 | h在线观看视频免费网站 | 午夜三级成人三级 | 亚洲天天网综合自拍图片专区 | 欧美三级大片在线观看 | 久草成人在线视频 | 美国一级特a黄 | 国产亚洲精品久久久久91网站 | 国产欧美日韩在线观看一区二区三区 | 亚洲最大中文字幕 | 日本午夜精品一本在线观看 | 亚洲精品亚洲人成在线播放 | 爱就操 | 欧美激情福利视频在线观看免费 | 老司机性视频 | 日韩精品欧美成人 | 曰曰碰天天碰国产 | 美国免费毛片 | 国产91精品黄网在线观看 |