单源点最短路径(弗洛伊德)
来源:互联网 发布:知之深爱之初 编辑:程序博客网 时间:2024/06/03 14:20
算法:弗洛伊德
时间复杂度:O(n^3)
空间复杂度:O(n^2)
思路:
从一个点开始,进行处理,2点之间权值为2点间边长,如果没有边相连,则为无穷大。
从离单源点最近的一个点开始,不断迭代其它点与单源点最近距离。
循环完成之后可以查询每一个点到的距离。
优点:
简单粗暴,写起来快,可以得到任一点到单源点的距离。
缺点:
O(n^3)的时间复杂度,不需要说什么
伪代码:
D[u,v]=A[u,v]//初始化For k:=1 to nFor i:=1 to nFor j:=1 to nIf D[i,j]>D[i,k]+D[k,j] D[i,j]:=D[i,k]+D[k,j];
真代码:
void work(int now){ memset(dis,0x3f3f3f3f,sizeof dis); f[begin] = 1; for(int i = 1;i <= n;i++){ if(x[i][now]) dis[i] = x[i][now]; } for(int i = 1;i <= n;i++){ int minn = 0x3f3f3f3f,p = 0; for(int k = 1;k <= n;k++){ if(dis[k] < minn && !f[k]) minn = dis[k],p = k; } if(!p) return; f[p] = 1; for(int k = 1;k <= n;k++){ if(dis[p] + x[k][p] < dis[k] && !f[k]) dis[k] = dis[p] + x[k][p]; } if(f[end]) return; }}
百度链接:
https://baike.baidu.com/item/Floyd%E7%AE%97%E6%B3%95/291990?fr=aladdin&fromid=5546207&fromtitle=%E5%BC%97%E6%B4%9B%E4%BC%8A%E5%BE%B7%E7%AE%97%E6%B3%95
阅读全文
0 0
- 单源点最短路径(弗洛伊德)
- 单源点最短路径
- 单源点最短路径
- 单源点最短路径
- 单源点最短路径
- 单源点最短路径
- 单源点最短路径
- 单源点最短路径
- 单源点最短路径算法(dijkstra)
- 单源点最短路径----Dijkstra算法
- 单源点最短路径(dijkstra算法)
- Dijkstra求解单源点最短路径
- 单源点的最短路径
- Dijkstra 邻接矩阵 单源点最短路径
- 单源点最短路径--2
- 单源点最短路径-迪杰斯特拉
- 图的最短路径(三)-单源点最短路径(Dijkstra算法)
- 最短路径--弗洛伊德(Floyd)算法
- 【Scikit-Learn 中文文档】预测目标 (y) 的转换
- 第十一周项目一——图基本算法库
- UVALive 7960|Gym 101201I|Postman|贪心
- 【Scikit-Learn 中文文档】数据集加载工具
- 通过@ConfigurationProperties使用外部配置填充Bean属性的几种方法
- 单源点最短路径(弗洛伊德)
- zip伪加密
- 计算日期差
- NYOJ67三角形面积
- Debian Package Manager
- 关于SimpleDateFormat
- final修饰符
- scel转txt抽取词库
- C# 字符串常见函数