最短路径BFS算法matlab,数据结构笔记——最短路径BFS算法
写在前面:科班出身,应届考研党,愿21考研成功上岸,冲冲冲!
目录
一、最短路径问题
二、BFS求无权图的单源最短路径
三、代码实现
四、总结
一、最短路径问题
单源最短路径——BFS算法、Dijkstra算法
其中BFS算法(无权图)、Dijkstra算法(带权图,无权图)
各顶点间的最短路径——Floyd算法(带权图、无权图)
二、BFS求无权图的单源最短路径
注:无权图可以视为一种特殊的带权图,只是每条边的权值都为1
三、代码实现
bool visited[MAX_VERTEX_NUM];//访问标记数组
//广度优先遍历
void BFS(Graph G,int v){ //从顶点v出发,广度优先遍历图G
visit(v); //访问初始顶点v
visited[v] = TRUE; //对v做已访问标记
Enqueue(Q,v); //顶点v入队列Q
while(!isEmpty(Q)){
DeQueue(Q,v); //顶点v出队列
for( w = FirstNeighbor(G,v); w >= 0; w = NextNeighbor(G,v,w))
//检测v所有邻接点
if(!visited[w]){ //w为v的尚未访问的邻接顶点
visit(w); //访问顶点w
visited[w] = TRUE; //对w做已访问标记
EnQueue(Q,w); //顶点w入队列
}//if
}//while
}
//求顶点u到其他顶点的最短路径
void BFS_Distance(Graph G,int u){
for(i = 0;i < G.vexnum;++i){
d[i] = w;
path[i] = -1;
}
d[u] = 0;
visited[u] = TRUE;
EnQueue(Q,u);
while(!isEmpty(Q)){
DeQueue(Q,u);
for(w = FirstNeighbor(G,u);w >= 0;w = NextNeighbor(G,u,w))
if(!visited[w]){
d[w] = d[u] + 1;
path[w] = u;
visited[w] = TRUE;
EnQueue(Q,w);
}//if
}//while
}
四、总结
对应的广度优先生成树为
思路就是对BFS的小修改,在visit一个顶点时,修改其最短路径长度d[]并在path[]记录前驱结点
2到8的最短路径长度=d[8]=3
通过path数组可知,2到8的最短路径为:8
最短路径BFS算法matlab,数据结构笔记——最短路径BFS算法相关推荐
- 【算法与数据结构专场】BitMap算法基本操作代码实现
上篇我们讲了BitMap是如何对数据进行存储的,没看过的可以看一下[算法与数据结构专场]BitMap算法介绍 这篇我们来讲一下BitMap这个数据结构的代码实现. 回顾下数据的存储原理 一个二进制位对 ...
- 算法与数据结构模版(AcWing算法基础课笔记,持续更新中)
AcWing算法基础课笔记 文章目录 AcWing算法基础课笔记 第一章 基础算法 1. 排序 快速排序: 归并排序: 2. 二分 整数二分 浮点数二分 3. 高精度 高精度加法 高精度减法 高精度乘 ...
- 【考研408】算法与数据结构笔记
文章目录 绪论 数据结构的基本概念 算法和算法评价 线性表 线性表的定义和基本操作 线性表的顺序表示 线性表的链式表示 栈和队列 栈 基本操作 栈的顺序存储结构 栈的链式存储 队列 队列常见的基本操作 ...
- 分类算法matlab实例,数据挖掘之分类算法---knn算法(有matlab例子)
knn算法(k-Nearest Neighbor algorithm).是一种经典的分类算法.注意,不是聚类算法.所以这种分类算法 必然包括了训练过程. 然而和一般性的分类算法不同,knn算法是一种懒 ...
- a*算法matlab代码_导向滤波算法及其matlab代码实现
导向滤波同样是一种平滑滤波算法,其与最小二乘滤波和双边滤波相比,同样是一种具有边缘保持的功能的图形滤波算法,可以用于处理图形噪点较多的图像,而且此种滤波算法与最小二乘滤波和双边滤波相比,有其独特的特点 ...
- 【数据结构与算法】数据结构有哪些?算法有哪些?
1. 算法与数据结构总览图 2.常用的数据结构 2.1.数组(Array) 数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合.数组可以说是最基本的数据结构,在各种编程语言中都 ...
- 阵列算法matlab,阵列信号处理的常见算法
阵列处理算法常用程序 AR argamse.m armaorder.m lsar.m lsarma.m myprogramme.m mywarma.m yulewalker.m ESPRIT TAM算 ...
- simca算法 matlab,SIMCA分类法中主成分分析算法探究.doc
SIMCA分类法中主成分分析算法探究 SIMCA分类法中主成分分析算法探究 摘要:模式识别是研究用计算机模拟人的识别能力,对不同类型形式的数据进行描述.分类.识别等有关的理论和方法.SIMCA方法是基 ...
- 算法导论-上课笔记7:贪心算法
文章目录 0 前言 1 活动选择问题 1.1 活动选择问题的最优子结构 1.2 贪心选择 1.3 递归贪心算法 1.4 迭代贪心算法 2 贪心算法原理 2.1 贪心选择性质 2.2 最优子结构 2.3 ...
- python算法与数据结构:08排序算法
稳定性定义:相同的值在排序结束之后的相对次序不变. 1. 冒泡排序 每一轮相邻两个值之间比较,大小顺序相反的交换位置,最后的值总是最大. 稳定性:稳定 def BubbleSort(alist):&q ...
最新文章
- 如何在Bash中将字符串转换为小写?
- 化浆池是什么东西_冷水滩酒店海鲜贝类池定制定做大型海鲜池
- Google和Baidu常用的搜索技巧--转
- Javascript获取url参数值
- 计算机专业必须读的经典书籍
- delphi 解析一维条码_一维码和二维码区别有哪些
- POP-一个点击带有放大还原的动画效果
- java(jdk) 8u45 正式版_缺氧正式版,草图分享(克莱)
- 直播系统源代码,快速实现改变图片尺寸
- 面试相关(技术汇总)
- 分享一个jQuery的自动客户端本地保存插件Sisyphus.js - 帮助你自动保存用户输入内容
- visio添加外键约束
- 猿创征文|【React】组件化入门学习
- 链接脚本中的SECTIONS定义
- 加西亚·马尔克斯致读者《告别信》来源:infzm.com
- Android Navigation Bar
- MySQL-性能分析语句 show profile和show profiles
- android 独立插件,最新反编译任何微信小程序,以及独立分包、插件的处理方式...
- html鼠标背景特效,6种鼠标滑过按钮背景动画特效
- 从“任我行”博友转载的一篇文章:堆和栈的区别
热门文章
- ESP8266连接天猫精灵(一)
- CGAL库的安装及示例代码的编译
- 网站安全工程师与渗透测试工程师有哪些区别
- mysql +cobar_cobar
- python中heading_python如何抓取几个csv的heading并存在excel里?
- 一、64位windows 安装mysql
- ARFoundation系列讲解 - 66 AR虚拟试戴
- oracle简单函数的写法,Oracle 简单函数
- python选择题题库百度文库_(完整版)Python题库
- html js实现搜索框提示功能,js实现智能提示搜索框