写在前面:科班出身,应届考研党,愿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算法相关推荐

  1. 【算法与数据结构专场】BitMap算法基本操作代码实现

    上篇我们讲了BitMap是如何对数据进行存储的,没看过的可以看一下[算法与数据结构专场]BitMap算法介绍 这篇我们来讲一下BitMap这个数据结构的代码实现. 回顾下数据的存储原理 一个二进制位对 ...

  2. 算法与数据结构模版(AcWing算法基础课笔记,持续更新中)

    AcWing算法基础课笔记 文章目录 AcWing算法基础课笔记 第一章 基础算法 1. 排序 快速排序: 归并排序: 2. 二分 整数二分 浮点数二分 3. 高精度 高精度加法 高精度减法 高精度乘 ...

  3. 【考研408】算法与数据结构笔记

    文章目录 绪论 数据结构的基本概念 算法和算法评价 线性表 线性表的定义和基本操作 线性表的顺序表示 线性表的链式表示 栈和队列 栈 基本操作 栈的顺序存储结构 栈的链式存储 队列 队列常见的基本操作 ...

  4. 分类算法matlab实例,数据挖掘之分类算法---knn算法(有matlab例子)

    knn算法(k-Nearest Neighbor algorithm).是一种经典的分类算法.注意,不是聚类算法.所以这种分类算法 必然包括了训练过程. 然而和一般性的分类算法不同,knn算法是一种懒 ...

  5. a*算法matlab代码_导向滤波算法及其matlab代码实现

    导向滤波同样是一种平滑滤波算法,其与最小二乘滤波和双边滤波相比,同样是一种具有边缘保持的功能的图形滤波算法,可以用于处理图形噪点较多的图像,而且此种滤波算法与最小二乘滤波和双边滤波相比,有其独特的特点 ...

  6. 【数据结构与算法】数据结构有哪些?算法有哪些?

    1. 算法与数据结构总览图 2.常用的数据结构 2.1.数组(Array) 数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合.数组可以说是最基本的数据结构,在各种编程语言中都 ...

  7. 阵列算法matlab,阵列信号处理的常见算法

    阵列处理算法常用程序 AR argamse.m armaorder.m lsar.m lsarma.m myprogramme.m mywarma.m yulewalker.m ESPRIT TAM算 ...

  8. simca算法 matlab,SIMCA分类法中主成分分析算法探究.doc

    SIMCA分类法中主成分分析算法探究 SIMCA分类法中主成分分析算法探究 摘要:模式识别是研究用计算机模拟人的识别能力,对不同类型形式的数据进行描述.分类.识别等有关的理论和方法.SIMCA方法是基 ...

  9. 算法导论-上课笔记7:贪心算法

    文章目录 0 前言 1 活动选择问题 1.1 活动选择问题的最优子结构 1.2 贪心选择 1.3 递归贪心算法 1.4 迭代贪心算法 2 贪心算法原理 2.1 贪心选择性质 2.2 最优子结构 2.3 ...

  10. python算法与数据结构:08排序算法

    稳定性定义:相同的值在排序结束之后的相对次序不变. 1. 冒泡排序 每一轮相邻两个值之间比较,大小顺序相反的交换位置,最后的值总是最大. 稳定性:稳定 def BubbleSort(alist):&q ...

最新文章

  1. 如何在Bash中将字符串转换为小写?
  2. 化浆池是什么东西_冷水滩酒店海鲜贝类池定制定做大型海鲜池
  3. Google和Baidu常用的搜索技巧--转
  4. Javascript获取url参数值
  5. 计算机专业必须读的经典书籍
  6. delphi 解析一维条码_一维码和二维码区别有哪些
  7. POP-一个点击带有放大还原的动画效果
  8. java(jdk) 8u45 正式版_缺氧正式版,草图分享(克莱)
  9. 直播系统源代码,快速实现改变图片尺寸
  10. 面试相关(技术汇总)
  11. 分享一个jQuery的自动客户端本地保存插件Sisyphus.js - 帮助你自动保存用户输入内容
  12. visio添加外键约束
  13. 猿创征文|【React】组件化入门学习
  14. 链接脚本中的SECTIONS定义
  15. 加西亚·马尔克斯致读者《告别信》来源:infzm.com
  16. Android Navigation Bar
  17. MySQL-性能分析语句 show profile和show profiles
  18. android 独立插件,最新反编译任何微信小程序,以及独立分包、插件的处理方式...
  19. html鼠标背景特效,6种鼠标滑过按钮背景动画特效
  20. 从“任我行”博友转载的一篇文章:堆和栈的区别

热门文章

  1. ESP8266连接天猫精灵(一)
  2. CGAL库的安装及示例代码的编译
  3. 网站安全工程师与渗透测试工程师有哪些区别
  4. mysql +cobar_cobar
  5. python中heading_python如何抓取几个csv的heading并存在excel里?
  6. 一、64位windows 安装mysql
  7. ARFoundation系列讲解 - 66 AR虚拟试戴
  8. oracle简单函数的写法,Oracle 简单函数
  9. python选择题题库百度文库_(完整版)Python题库
  10. html js实现搜索框提示功能,js实现智能提示搜索框