当前课程知识点:数据结构(上) > 第六章 图 > (c)广度优先搜索 > 06C-8 最短路径
最后,我们来讨论BFS搜索的
一个非常有趣同时又是
非常本质的特性
所谓的最短距离性
回顾此前所介绍的树结构
相对于树根节点
任何一个节点v都对应于一条唯一的通路
这条路径的长度称作顶点v的深度
于是我们可以进而对所有的顶点
自上而下按照它们的深度
进行等价类划分
在每一个等价类中的所有顶点
所具有的深度指标都是彼此相等的
而树的层次遍历也可以认为是
按照这一指标非降的次序
将所有的顶点逐一枚举出来
那么这样一个遍历的过程
是否也可以转化为图结构的遍历过程呢?
表面看来似乎不太容易
因为此时与树结构极不相同的就是
从起始顶点s出发
可能有多条路径都最后通往同一个顶点
而且可能出现分叉
然而这样一个问题不难解决
实际上我们只需考察
顶点之间的最短通路
并且将这两个顶点之间的距离
取作这条最短通路的长度
而在起始顶点相对固定的情况下
我们甚至可以将s在这个记号中省掉
直接简称之为顶点v所对应的距离
巧合的是 图的BFS搜索
与树的层次遍历一样
都具有这样一种单调性
也就是说 BFS所给出的顶点序列
按照这样到起点的距离
也是按照非降次单调排列的
所有顶点被发现并访问的过程
可以由这样一个动画显示
从起点s出发
所有的顶点按照它们到起点s的距离
成批地被发现并进而接受访问
直到最终所有的顶点都被访问完毕
在我们最终所生成的BFS树中
每个顶点与s之间的那条通路
恰好就是在原图中
这两个顶点之间的那条最短通路
关于这一性质及结论的严格证明
可参考教材所配套习题解析中的
习题6-7
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-OJ系统说明
--关于OJ
--1-注册与登录
--2-界面与选课
--3-提交测试
-关于课程教材与讲义
--课程教材与讲义
-关于讨论区
--关于讨论区
-微信平台
--html
-PA晋级申请
--PA晋级
-(a)计算
--演示
--(a)计算--作业
-(b)计算模型
-(b)计算模型--作业
-(c)大O记号
-(c)大O记号--作业
-(d)算法分析
-(d)算法分析--作业
-(e)迭代与递归
-(e)迭代与递归--作业
-(xc)动态规划
-- 演示
-(xc)动态规划--作业
-本章测验--作业
-(a)接口与实现
--02A-5 复制
-(a)接口与实现--作业
-(b)可扩充向量
-(b)可扩充向量--作业
-(c)无序向量
--02C-1 概述
--02C-3 插入
--02C-6 查找
--02C-8 遍历
-(c)无序向量--作业
-(d1)有序向量:唯一化
-(d1)有序向量:唯一化--作业
-(d2)有序向量:二分查找
-(d2)有序向量:二分查找--作业
-(d3)有序向量:Fibonacci查找
-(d3)有序向量:Fibonacci查找--作业
-(d4)有序向量:二分查找(改进)
-(d4)有序向量:二分查找(改进)--作业
-(d5)有序向量:插值查找
-第二章 向量(下)--(d5)有序向量:插值查找
-(e)起泡排序
--02E-2 改进
--02E-3 反例
-(e)起泡排序--作业
-(f)归并排序
-(f)归并排序--作业
-本章测验--作业
-(a)接口与实现
--03A-4 实现
-(a)接口与实现--作业
-(b)无序列表
--03B-2 查找
-(b)无序列表--作业
-(c)有序列表
--03C-3 查找
-(c)有序列表--作业
-(d)选择排序
--03D-1 构思
--03D-2 实例
--03D-3 实现
--03D-4 推敲
--03D-6 性能
-(d)选择排序--作业
-(e)插入排序
--03E-1 经验
--03E-2 构思
--03E-3 对比
--03E-4 实例
--03E-5 实现
-(e)插入排序--作业
-(xd)习题辅导:LightHouse
-本章测验--作业
- (a)栈接口与实现
--04A-1 栈
--04A-2 实例
--04A-3 实现
- (a)栈接口与实现--作业
-(c1)栈应用:进制转换
-第四章 栈与队列--(c1)栈应用:进制转换
-(c2)栈应用:括号匹配
-(c2)栈应用:括号匹配--作业
-(c3)栈应用:栈混洗
-第四章 栈与队列--(c3)栈应用:栈混洗
-(c4)栈应用:中缀表达式求值
-(c4)栈应用:中缀表达式求值--作业
-(c5)栈应用:逆波兰表达式
-第四章 栈与队列--(c5)栈应用:逆波兰表达式
-(d)队列接口与实现
--04D-1 接口
--04D-2 实例
--04D-3 实现
-第四章 栈与队列--本章测验
-(a)树
--05A-1 动机
--05A-2 应用
-(a)树--作业
-(b)树的表示
--05B-2 父亲
--05B-3 孩子
-第五章 二叉树--(b)树的表示
-(c)二叉树
-(c)二叉树--作业
-(d)二叉树实现
-(d)二叉树实现--作业
-(e1)先序遍历
-(e1)先序遍历--作业
-(e2)中序遍历
-第五章 二叉树--(e2)中序遍历
-(e4)层次遍历
-第五章 二叉树--(e4)层次遍历
-(e5)重构
-(e5)重构--作业
-本章测验--作业
-(a)概述
-(a)概述--作业
-(b1)邻接矩阵
-(b1)邻接矩阵--作业
-(c)广度优先搜索
--06C-2 策略
--06C-3 实现
--06C-5 实例
-(c)广度优先搜索--作业
-(d)深度优先搜索
--06D-1 算法
--06D-2 框架
--06D-3 细节
-(d)深度优先搜索--作业
-第六章 图--本章测验