博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
弗洛伊德算法
阅读量:6289 次
发布时间:2019-06-22

本文共 532 字,大约阅读时间需要 1 分钟。

弗洛伊德算法

维基百科,自由的百科全书
 
 

Floyd-Warshall算法(Floyd-Warshall algorithm)是解决任意两点间的的一种,可以正确处理或负权的最短路径问题,同时也被用于计算有向图的传递闭包。

Floyd-Warshall算法的为O(N^3),为O(N^2)

[]原理

Floyd-Warshall算法的原理是。

D_{i,j,k}为从ij的只以(1..k)集合中的节点为中间节点的最短路径的长度。

  1. 若最短路径经过点k,则D_{i,j,k}=D_{i,k,k-1}+D_{k,j,k-1}
  2. 若最短路径不经过点k,则D_{i,j,k}=D_{i,j,k-1}

因此,D_{i,j,k}=\mbox{min}(D_{i,k,k-1}+D_{k,j,k-1},D_{i,j,k-1})

在实际算法中,为了节约空间,可以直接在原来空间上进行迭代,这样空间可降至二维。(见下面的算法描述)

[]算法描述

Floyd-Warshall算法的描述如下:

for k ← 1 to n do  for i ← 1 to n do    for j ← 1 to n do      if (
D_{i,k} + D_{k,j} < D_{i,j}
) then
D_{i,j}
D_{i,k} + D_{k,j}
;

其中D_{i,j}表示由点i到点j的代价,当D_{i,j}为 ∞ 表示两点之间没有任何连接。

[]请参阅

转载地址:http://jbcta.baihongyu.com/

你可能感兴趣的文章
Android SharedPreferences
查看>>
css面试题
查看>>
Vue组建通信
查看>>
用CSS画一个带阴影的三角形
查看>>
前端Vue:函数式组件
查看>>
程鑫峰:1.26特朗.普力挺美元力挽狂澜,伦敦金行情分析
查看>>
safari下video标签无法播放视频的问题
查看>>
01 iOS中UISearchBar 如何更改背景颜色,如何去掉两条黑线
查看>>
对象的继承及对象相关内容探究
查看>>
Spring: IOC容器的实现
查看>>
Serverless五大优势,成本和规模不是最重要的,这点才是
查看>>
Nginx 极简入门教程!
查看>>
iOS BLE 开发小记[4] 如何实现 CoreBluetooth 后台运行模式
查看>>
Item 23 不要在代码中使用新的原生态类型(raw type)
查看>>
为网页添加留言功能
查看>>
JavaScript—数组(17)
查看>>
Android 密钥保护和 C/S 网络传输安全理论指南
查看>>
以太坊ERC20代币合约优化版
查看>>
Why I Began
查看>>
同一台电脑上Windows 7和Ubuntu 14.04的CPU温度和GPU温度对比
查看>>