河池学院:《数据结构》课程电子教案(PPT教学课件)第8章 图 8.5 最短路径

从一顶点到另一顶点存在着一条路径时,称该路径长度为该路径上所 经过的边的数目,它等于该路径上的顶点数减1。 从一顶点到另一顶点可能存在着多条路径,每条路径上所经过的边数 可能不同,即路径长度不同,把路径长度最短(即经过的边数最少) 的那条路径叫做最短路径,其路径长度称为最短路径长度或最短距离。 不带权图 采用广度优先遍历可以求最短路径 1/46

把一条路径上所经边的权值之和定义为该路径的路径长度或称带权路径 长度。 从源点到终点可能不止一条路径,把带权路径长度最短的那条路径称为 最短路径,其路径长度(权值之和)称为最短路径长度或者最短距离。 带权图 采用广度优先遍历可以求最短路径:不适合 2/46

提出“goto有害论” 提出信号量和PV原语 解决了“哲学家聚餐”问题 Dijkstra最短路径算法和银行家算法的创造者 第一个Algol 60编译器的设计者和实现者 THE操作系统的设计者和开发者 1972年获得图灵奖 与D.E.Knuth并称为我们这个时代最伟大的计算机科学家的人,与癌症抗 争多年,于2002年8月6日在荷兰Nuenen自己的家中去世,享年72岁 Edsger Wybe Dijkstra 1930年5月11日~2002年8月6日 3/46

1. 归并排序,快速排序和堆排序 2. 傅立叶变换与快速傅立叶变换 3. Dijkstra算法 4. RSA算法(一种加密算法) 5. 安全哈希算法 6. 整数因式分解 7. 链接分析(Google的Page Rank算法) 8. 比例积分微分算法 9. 数据压缩算法(以哈夫曼算法为基础) 10. 随机数生成算法 4/46

1. 狄克斯特拉算法过程 v 源点 u 其他顶点 最短路径和长度 单源最短路径算法 5/46

给定一个带权图G和一个起始点即源点v,狄克斯特拉算法的具体步骤如下: (1)初始化:顶点集S只包含源点,即S={v},顶点v到自已的最短路 径长度为0。顶点集U包含除v外的其他顶点,源点v到U中顶点i的最短路径 长度为边上的权值(若源点v到顶点i有边)或∞(若源点v到顶点i 没有边,此时认为有一条长度为∞的最短路径)。 v j S U=V-S i 6/46

(2)从U中选取一个顶点u,它是源点v到U中最短路径长度最小的顶点, 然后把顶点u加入S中(此时求出了源点v到顶点u的最短路径长度)。 v i S U=V-S u 7/46

(3)以顶点u为新考虑的中间点,修改顶点u的出边邻接点j的最短路 径长度,此时源点v到顶点j的最短路径有两条,即一条经过顶点u,一条 不经过顶点u。 ① 若经过顶点u的最短路径长度比不经过顶点u的最短路径长度更短, 则修改源点v到顶点j的最短路径长度为经过顶点u的那条长度。 ② 否则,说明原来的不经过顶点u的最短路径长度更短,不需要修改。 v j u cvu wuj cvj 有一条路径 有一条边 (4)重复步骤(2)和(3)直到S包含所有的顶点即U为空。 两条路径中求最小者 8/46

2. 狄克斯特拉算法设计 狄克斯特拉算法设计要点: 判断顶点i属于哪个集合,设置一个数组S,S[i]=1表示顶点i属于S 集合,S[i]=0表示顶点i属于U集合。 保存最短路径长度,由于源点v是已知的,只需要设置一个数组 dist[0.n-1],dist[i]用来保存从源点v到顶点i的最短路径长度。 dist[i]的初值为边上的权值,若顶点v到顶点i没有边,则 权值定为∞。以后每考虑一个新的中间点u时,dist[i]的值可能被 修改变小。 保存最短路径,设置一个数组path[0.n-1],其中path[i]存放从 源点v到顶点i的最短路径。 9/46

为什么能够用一个一维数组保存多条最短路径呢? path[j]只保存源点v到顶点j的最短路径上顶点j的前驱顶点 v . u j path[j]=u 如果该路径恰好包含源点v到u的最短路径 OK 如果不是 10/46
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第8章 图 8.4 生成树和最小生成树.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第8章 图 8.3 图的遍历.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第8章 图 8.1 图的基本概念 8.2 图的存储结构.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第7章 树和二叉树 7.9 树算法设计和并查集.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第7章 树和二叉树 7.6 线索二叉树 7.7 哈夫曼树 7.8 二叉树与树、森林之间的转换.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第7章 树和二叉树 7.4 二叉树的层次遍历 7.5 二叉树的构造.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第7章 树和二叉树 7.3 二叉树先序、中序和后序遍历.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第7章 树和二叉树 7.2 二叉树.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第7章 树和二叉树 7.1 树.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第6章 数组和稀疏矩阵.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第5章 递归.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第4章 串.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第3章 栈和队列 3.2 队列.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第3章 栈和队列 3.1 栈.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第2章 线性表 2.5 线性表的应用.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第2章 线性表 2.3 线性表的链式存储结构 2.4 顺序表和链表的比较.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第2章 线性表 2.1 线性表的定义 2.2 线性表的顺序存储结构.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第1章 绪论 1.3 算法分析 1.4 数据结构的目标.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第1章 绪论 1.1 什么是数据结构 1.2算法及其描述.pptx
- 《Java基础入门》课程电子教案(PPT教学课件)第13章 网络编程.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第8章 图 8.6 拓扑排序 8.7 AOE网与关键路径.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第9章 查找 9.1 查找的基本概念 9.2 线性表的查找.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第9章 查找 9.3 树表的查找(1/2).pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第9章 查找 9.3 树表的查找(2/2).pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第9章 查找 9.4 哈希表查找.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第10章 排序 10.1 排序的基本概念 10.2 插入排序 10.3 交换排序.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第10章 排序 10.4 选择排序.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第10章 排序 10.5 归并排序 10.6 基数排序 10.7 各种内排序方法的比较和选择.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第10章 排序 10.8 外排序.pptx
- 《Python数据分析》课程电子教案(PPT课件)第1章 数据分析与可视化概述新.pptx
- 《Python数据分析》课程电子教案(PPT课件)第2章 Python编程基础.pptx
- 《Python数据分析》课程电子教案(PPT课件)第3章 NumPy数值计算基础.pptx
- 《Python数据分析》课程电子教案(PPT课件)第4章 pandas统计分析基础.pptx
- 《Python数据分析》课程电子教案(PPT课件)第5章 Pandas数据载入与预处理.pptx
- 《Python数据分析》课程电子教案(PPT课件)第6章 Matplotlib数据可视化基础.pptx
- 《Python数据分析》课程电子教案(PPT课件)第7章 利用Seaborn绘图.pptx
- 《Python数据分析》课程电子教案(PPT课件)第8章 pyecharts可视化.pptx
- 《Python数据分析》课程电子教案(PPT课件)第9章 时间序列数据分析.pptx
- 《Python数据分析》课程电子教案(PPT课件)第10章 SciPy科学计算.pptx
- 《R语言》课程教学资源(PPT课件)第01章 进入R的世界.pptx
