单源最短路和多源最短路
目录
一、 迪杰斯特拉(Dijkstra,单源最短路)
特点:
二、 弗洛伊德(Floyd,多源最短路)
算法过程
特点
一、 迪杰斯特拉(Dijkstra,单源最短路)
Dijkstra (迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。 主要特点是 不断尝试对图上每一条边进行松弛。我们每进行一轮循环,就对图上所有的边都尝试进行一次松弛操作,当一次循环中没有成功的松弛操作时,算法停止。
特点:
边权没有要求,可正可负,还可判断负权边.以起始点为中心向外层层扩展,直到扩展到终点为止。
时间复杂度为O(nm)
void bellman_ford(int s)
{
memset(dis,MM,sizeof(dis));
dis[s] = 0;
bool change;
for (int i = 0; i < n - 1; i++)
{
change = false;
for (int k = 0; k < m; k++)
{
if (dis[edge[k].to] > dis[edge[k].from] + edge[k].value)
{
change = true;
dis[edge[k].to] = dis[edge[k].from] + edge[k].value;
patch[edge[k].to]=edge[k].from;
}
}
if (change==false)
{
break;
}
}
}
二、 弗洛伊德(Floyd,多源最短路)
Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。 该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。
算法过程
1,从任意一条单边路径开始。所有两点之间的距离是边的权,如果两点之间没有边相连,则权为无穷大。
2,对于每一对顶点 u 和 v,看看是否存在一个顶点 w 使得从 u 到 w 再到 v 比已知的路径更短。如果是更新它。
把图用邻接矩阵G表示出来,如果从Vi到Vj有路可达,则G[i][j]=d,d表示该路的长度;否则G[i][j]=无穷大。定义一个矩阵D用来记录所插入点的信息,D[i][j]表示从Vi到Vj需要经过的点,初始化D[i][j]=j。把各个顶点插入图中,比较插点后的距离与原来的距离,G[i][j] = min( G[i][j], G[i][k]+G[k][j] ),如果G[i][j]的值变小,则D[i][j]=k。在G中包含有两点之间最短道路的信息,而在D中则包含了最短通路径的信息。
比如,要寻找从V5到V1的路径。根据D,假如D(5,1)=3则说明从V5到V1经过V3,路径为{V5,V3,V1},如果D(5,3)=3,说明V5与V3直接相连,如果D(3,1)=1,说明V3与V1直接相连。
特点
Floyd算法适用于APSP(All Pairs Shortest Paths,多源最短路径),是一种动态规划算法,稠密图效果最佳,边权可正可负。此算法简单有效,由于三重循环结构紧凑,对于稠密图,效率要高于执行|V|次Dijkstra算法,也要高于执行|V|次SPFA算法。
优点:容易理解,可以算出任意两个节点之间的最短距离,代码编写简单。
缺点:时间复杂度比较高,不适合计算大量数据。
单源最短路和多源最短路相关推荐
- HTML单页营销宣传专题页源码
简介: HTML单页营销宣传专题页源码是一款大气单页企业网站源码下载. 下载地址: http://www.bytepan.com/1iJpMBpts0K
- 【单目标优化求解】基于matlab黑猩猩算法求解单目标问题【含Matlab源码 1413期】
一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[单目标优化求解]基于matlab黑猩猩算法求解单目标问题[含Matlab源码 1413期] 点击上面蓝色字体,直接付费下载,即可. 获取代 ...
- 各种风格简洁单页响应式html5模板_简洁 响应式 单页 跳转 设计 案例 源码340多套订餐企业模板高大尚响应式网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响
各种风格简洁单页响应式html5模板_简洁 响应式 单页 跳转 设计 案例 源码340多套订餐企业模板高大尚响应式网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响 ...
- 单文件图片管理php,PHP照片图片管理器源码,单文件PHP照片/图片文件管理源码FileManager...
PHP照片图片管理器源码,单文件PHP照片/图片文件管理源码FileManager. 如果你有NAS,想要远程管理自己的照片,那本文非常适合你.只有一个单文件PHP管理你自己的照片,还可以设置个性登录 ...
- 【Java集合源码剖析】Hashtable源码剖析
转载请注明出处:http://blog.csdn.net/ns_code/article/details/36191279 Hashtable简介 Hashtable同样是基于哈希表实现的,同样每个元 ...
- android源码使用方法,android源码中使用到的设计模式(创建型)
1.单例模式 1.1定义 确保某个类只有一个实例,而且自行实例化并向整个系统提供者个实例. 1.2单例的形式 饿汉模式:第一次就加载,用空间换时间. public class SingleTon { ...
- 封装成jar包_通用源码阅读指导mybatis源码详解:io包
io包 io包即输入/输出包,负责完成 MyBatis中与输入/输出相关的操作. 说到输入/输出,首先想到的就是对磁盘文件的读写.在 MyBatis的工作中,与磁盘文件的交互主要是对 xml配置文件的 ...
- 源码解析:Spring源码解析笔记(五)接口设计总览
本文由colodoo(纸伞)整理 QQ 425343603 Java学习交流群(717726984) Spring解析笔记 启动过程部分已经完成,对启动过程源码有兴趣的朋友可以作为参考文章. 源码解析 ...
- 药店管理系统源码 药店管理信息系统源码带文档
药店管理系统源码 药店管理信息系统源码带文档 开发语言:C# 数据库 : SQL2008 开发工具 : VS2010 源码免费分享,需要源码学习可私信我. 系统概述: 1.药品资料.药品库存可以批量 ...
- java互联网医院源码 智慧医院源码 图文问诊系统源码
互联网医院系统源码 智慧医院系统源码 在线问诊.复诊购药APP 使用技术:Java + springboot + mysql + 原生APP 一.系统特点: 1.在线问诊 图文问诊.视频问诊.语音 ...
最新文章
- .NET Core微服务之基于Consul实现服务治理(续)
- 一些恶心的代码片段,你看了就知道!
- 阿里开源量子模拟器“太章2.0”,支持量子算法和纠错探索
- DVWA--File Inclusion(文件包含)--四个级别
- (59)UART外设驱动用户接收模块(四)(第12天)
- 修改时无论改成什么,值总是默认为1
- 关于语音识别技术 你了解多少
- AE中Identify查询工具的实现
- MySQL命令执行脚本文件
- 向全国推荐优秀古籍整理图书活动入选书目公示(zz)
- 20145322 《Java程序设计》第7周学习总结
- android客户端设计,图文详解Android客户端界面设计教程
- 华为员工待遇全面揭秘
- ps怎么做油漆喷溅画效果
- android 强制关闭键盘,Android关闭输入软键盘无效的问题
- plt.legend 图例放在外面 子图会挤在一起 子图压缩 压扁
- VisionPro基本使用
- python 函数的使用方法
- Android RxJava与Retrofit与RecyclerView与Fresco结合网络请求
- 北京大学2009年4月18日计算机会场QA
热门文章
- AFN代码解读(-)
- CodeChef Graphcnt:Counting on a directed graph(支配树)
- Android-动态修改APP桌面图标
- python 3d打印机_如何使用Python构建自己的CNC控制器和3D打印机
- python识别麻将牌_图像识别之麻将识别源码( 三 )
- UCOS-Ⅲ:软件定时器
- 开源Linux面板-1Panel
- IOS7 隐藏状态栏 (电池栏)
- html文字自动消失了,为什么从网页上复制的文字到word上一修改后面的字就自动消失了...
- 《深度学习》学习笔记