使用Floyd-Warshall算法求出两点之间的最短路径
求出下面任意两个点之间的最短路径:
如何才能求出两点之间的最短路径呢?大家都知道学几何的时候,有一条定理就是:两点之间线段最短。但是在实际情况中,我往往两点之间没有之间的通路而是一些曲折的线路。
上面已经给出了两点之间的线路路径,不能再通过两点时间的路径来计算他们最短路径了,根据以往的经验要想让两点之间的路程变短,只能引入第三个点,通过第三个点的中转才能缩短两点之间的路径。
通过上图可知由4->3的直接路径是12,但是通过1来中转的话,路径就缩短为11,如果通过1和2来中转的话,路径就进一步缩短为11了。
任意两点之间的最短路径都要经过1号顶点之后他们之间的最短路径为:
for (int i = 1; i < VERTEX_NUM; i++) {for (int j = 0; j < VERTEX_NUM; j++) {if (_vertex[i][j]>_vertex[i][1]+_vertex[1][j]) {_vertex[i][j] = _vertex[i][1] + _vertex[1][j];}}}
经过1号点和2号点之后的路径是否更短
for (int i = 1; i < VERTEX_NUM; i++) {for (int j = 0; j < VERTEX_NUM; j++) {if (_vertex[i][j]>_vertex[i][1]+_vertex[1][j]) {_vertex[i][j] = _vertex[i][1] + _vertex[1][j];}}}for (int i = 1; i < VERTEX_NUM; i++) {for (int j = 0; j < VERTEX_NUM; j++) {if (_vertex[i][j]>_vertex[i][2]+_vertex[1][j]) {_vertex[i][j] = _vertex[i][2] + _vertex[2][j];}}}
综上所述,任意两点之间的最短路径,经过任意点中转后的最短路径为:
for (int k = 1; k < VERTEX_NUM; k++) {for (int i = 1; i < VERTEX_NUM; i++) {for (int j = 0; j < VERTEX_NUM; j++) {if (_vertex[i][j]>_vertex[i][k]+_vertex[k][j]) {_vertex[i][j] = _vertex[i][k] + _vertex[k][j];}}}}
aaa
使用Floyd-Warshall算法求出两点之间的最短路径相关推荐
- C++floyd warshall算法求最短路径(附完整源码)
C++floyd warshall算法求最短路径 floyd warshall算法求最短路径的完整源码(定义,实现,main函数测试) floyd warshall算法求最短路径的完整源码(定义,实现 ...
- AOJ GRL_1_C: All Pairs Shortest Path (Floyd-Warshall算法求任意两点间的最短路径)(Bellman-Ford算法判断负圈)
题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=GRL_1_C All Pairs Shortest Path Input ...
- Dijkstra最短路由算法,求任意两点之间的最短距离【Java】
一.问题 求下图中节点0到节点5之间的最短距离 二.方法 Dijkstra最短路由算法.本文不再赘述,直接上代码,如果不懂,可以参考 文章 三.代码 public class MyDijkstra { ...
- warshall算法求传递闭包c++_【建模小课堂】图论算法
图论算法 图论算法在计算机科学中扮演着很重要的角色,它提供了对很多问题都有效的一种简单而系统的建模方式.很多问题都可以转化为图论问题,然后用图论的基本算法加以解决.这类问题算法主要包括Dijkstra ...
- 迪杰斯特拉算法求经纬度坐标的最短路径_Postgresql构建经纬度查询两点之间的最短路径...
前言 前段时间遇到了实际的需求,在特定的路网中查询最短路径.同时配合 Cesium 进行动态显示. 需求 动态查询两点之间的最短路径(起点固定): 查询的路径高亮显示: Cesium 对生成的路径进行 ...
- C#求空间两点之间的距离
问题 求空间两点之间的距离 算法思想 d=sqrt(pow(x₁−x₂)+pow(y₁−y₂)+pow(z₁−z₂))d=sqrt(pow(x₁-x₂)+pow(y₁-y₂)+pow(z₁-z₂)) ...
- Floyd Warshall算法
Description: 描述: This is a very popular interview problem to find all pair shortest paths in any gra ...
- 用Dijkstra算法找到图上两点之间的最短路径
Finding the shortest path between two points on a graph is a common problem in data structures, espe ...
- C语言用warshall算法求传递闭包transitive closure(附完整源码)
用warshall算法求传递闭包transitive closure warshall算法求传递闭包完整源码 warshall算法求传递闭包完整源码 #include <stdbool.h> ...
最新文章
- paip.提升效率--调试--日志系统日志参数含义---python
- mysql高效率写法_mysql高效率随机获取n条数据写法
- python面试经典问题_Python面试中最常见的25个问题-结束
- C++教程之lambda表达式一
- Unobtrusive JavaScript介绍
- Codeforces Round #628 (Div. 2) E. Ehab‘s REAL Number Theory Problem 巧妙的质因子建图
- layui option 动态添加_layui select动态添加option的实例
- 计算机都要学python吗_大学计算机要不要学python?
- Hadoop2.0安装
- Java-集合第二篇Set集合
- [Android 5.1] 多用户管理UserManager相关整理
- CCAI2018 | 韩家炜:大规模文本数据挖掘的新方向
- 编译原理学习之:有限状态机(Finate-state Automaton)
- 要重复多少次变成潜意识_什么是潜意识?如何利用潜意识为自己步步高升
- 网页打印宋体不支持加粗效果
- 计算机图文混排知识点,图文混排
- netty tcp空闲设置
- SVN 将代码回滚到之前的版本的方法
- android ui界面
- 传统与深度学习图像分割算法