算法——图——bsf 广度优先搜索算法 (Breadth First Search)

news2024/11/26 4:44:43

图遍历算法——bsf 广度优先搜索算法 (Breadth First Search) 算法

  • 概述
  • 算法过程
    • 步骤一:初始化原点到队列
    • 步骤二:将队列的头顶点放入到已完成集合
    • 步骤三:将订单的关联顶点放入到队列中
    • 步骤四:将u顶点设置为完成节点。
    • 步骤五:重复步骤二至四。
  • 时间复杂度&空间复杂度
    • 时间复杂度
    • 空间复杂度

概述

        广度优先搜索(BFS)是一种重要的图遍历算法,用于在横向运动中搜索图的所有顶点。它从一个给定的顶点开始,在进入下一个级别之前访问它的所有邻居。BFS的时间复杂度取决于图中顶点和边的数量。

文章中使用的动画网站地址:
限 pc: 广度优先算法 :http://www.donghuasuanfa.com/platform/portal?pc=bfs

算法一览表:https://blog.csdn.net/ww753951/article/details/106862328

动画算法一览表:http://www.donghuasuanfa.com/portal

算法过程

        算法分为五个步骤。
        步骤一:将源点放入到队列中。
        步骤二:将队列的头顶点u放入到已完成列表。
        步骤三:将u的所有未处理过的关联顶点放入到队列中,并标记为已处理。

        步骤四:将u顶点设置为完成顶点。
        步骤五:重复步骤二至四。


以下图为例,图的原点为7,则算法遍历图节点的顺序为7,13,25,16,18,39。

请添加图片描述

步骤一:初始化原点到队列

步骤演示过程如下图1-1所示。节点7为源点。算法首先将节点7移动到队列Q中。

请添加图片描述

图1-1

步骤二:将队列的头顶点放入到已完成集合

将队列的头元素u放入到已遍历完成列表。当前队列的头部顶点为7,所以将7顶点移动到已遍历集合。步骤演示过程如下图2-1所示。
请添加图片描述

图2-1

步骤三:将订单的关联顶点放入到队列中

将u的所有未处理过的关联顶点放入到队列中,并标记为已处理,节点颜色变为红色。
当前u的所有未处理的元素分别为13,25,16。所以将7的关联顶点分别放入队列。
步骤演示过程如下图3-1所示。

请添加图片描述

图3-1

步骤四:将u顶点设置为完成节点。

当前顶点为u=7。 将u=7顶点设置为已完成,并标记为绿色。步骤演示过程如下图3-1所示。
请添加图片描述

图4-1

步骤五:重复步骤二至四。

步骤二:将队列的头部顶点13放入到已遍历结合。
步骤三:将13节点的关联元素放入到到队列, 因为13的关联顶点分别为7和25,且7已处理、25已放入队列,所以13顶点的此步骤无需处理。
步骤四:将13节点设置为完成节点。
整体步骤如图5-1所示。

请添加图片描述

图5-1





        剩下的节点处理和上述步骤一致,不再赘述。

时间复杂度&空间复杂度

时间复杂度

邻接表为例:
        在BFS中,每个顶点和边只访问一次。因此,BFS的时间复杂度可以表示为O(V+E),其中V是图中顶点的数量,E是图中边的数量。

        让我们分解一下时间复杂性分析:
        1.访问所有顶点:BFS需要访问图中的所有顶点。这需要O(V)时间。
        2.检查所有边:BFS还需要检查所有边,以确定是否有任何未访问的顶点连接到当前顶点。对于每个顶点,我们需要检查其所有相邻顶点。在最坏的情况下,每个顶点与其他每个顶点都有一条边,即一个完整的图。这需要O(E)时间。

因此,BFS的总体时间复杂度为O(V+E)。

空间复杂度

        BFS的空间复杂度由队列数据结构决定,队列数据结构用于跟踪访问的顶点和要探索的顶点。在最坏的情况下,当访问所有顶点时,队列可以将所有顶点存储在图的一个级别上。因此,BFS的空间复杂度也是O(V)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1208272.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【23真题】易,学硕爆冷,题目常规!

今天分享的是23年广州大学823的信号与系统试题及解析。广州大学23年学硕爆冷,一志愿全部录取,不知道24情况将如何。我们拭目以待! 本套试卷难度分析:本套试题内容难度中等偏下,考察的知识点都是比较常见的&#xff0c…

不使用宝塔面板 安装 EasyImage 简单图床

发布于 2023-07-17 在 https://chenhaotian.top/linux-app/easy-image/ 前言 如果不希望安装宝塔面板或其国际版 aapanel(尽管宝塔面板可以在安装后关闭),那么可以参考这篇文章。 本文安装环境为 Debian 11, 在 Ubuntu 20.04 测试通过 安…

【python 生成器】yield关键字,协程必知必会系列文章--自己控制程序调度,体验做上帝的感觉 1

python生成器系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 第一章 yield — Python (Part I) 文章目录 python生成器系列文章目录前言1. Generator Function 生成器函数2.并发和并行,抢占式和协作式2.Let’…

spring-cloud-注册中心

一、服务注册中心组件(*) 定义:服务注册中心就是在整个微服务架构单独抽取一个服务,该服务不做项目中任何业务功能,仅用来在微服务中记录微服务、对微服务进行健康状态检查,及服务元数据信息存储常用的注册中心:eurek…

python实现双臂老虎机k-armed-bandit

老虎机,投入钱币会随机返还钱币(reward) 这里设置两台老虎机,一台均值500,标准差5,一台均值550,标准差10 初始值均为998,更新规则为reward之和/轮数 最后结果会在均值附近收敛 impo…

Eigen的基操

转自博客 博客

解析SQL 获取表、字段及SQL查询参数

解析SQL 获取表、字段及SQL查询参数 1. 执行效果2. 使用2.1 引入依赖2.2 相关实体2.3 工具类 1. 执行效果 2. 使用 2.1 引入依赖 <!-- sql 解析处理--><dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifa…

2022年12月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 下面哪个语句正确定义了元组类型数据tuple1?( ) A: tuple1=[“张三”,“李四”,“王五”] B: tuple1=(“张三”;“李四”;“王五”) C: tuple1=(张三,李四,王五) D: tuple1=(“张三…

Mybatis-Plus最新教程

目录 原理&#xff1a;MybatisPlus通过扫描实体类&#xff0c;并基于反射获取实体类信息作为数据库信息。 ​编辑1.添加依赖 2.常用注解 3.常见配置&#xff1a; 4.条件构造器 5.QueryWrapper 6.UpdateWrapper 7.LambdaQueryWrapper:避免硬编码 8.自定义SQL 9.Iservic…

C++——友元函数

如下是一个日期类&#xff1a; class Date { public:Date(int year 2023, int month 10, int day 1){_year year;_month month;_day day;if (_month < 1 || month > 12 || _day < 1 || _day > GetMonthDay(_year, _month)){cout << "日期不规范&…

[MySQL] MySQL中的数据类型

在MySQL中&#xff0c;数据类型用于定义表中列的数据的类型。在前面的几篇文章中&#xff0c;我们也会看到有很多的数据类型&#xff0c;例如&#xff1a;char、varchar、date、int等等。本篇文章会对常见的数据类型进行详细讲解。希望会对你有所帮助&#xff01; 文章目录 一、…

[黑马程序员Pandas教程]——Pandas读取保存数据

目录&#xff1a; 学习目标读写文件 写文件读取文件 index_col参数指定索引parse_dates参数指定列解析为时间日期类型encoding参数指定编码格式读取tsv文件Pandas读写文件小结读写数据库 安装pymysql包将数据写入数据库从数据库中加载数据总结项目地址 1.学习目标 能够使用Pan…

吊打Fast Request还免费? 这款插件真心好用!

今天给大家推荐一款IDEA插件&#xff1a;Apipost Helper&#xff0c;比Fast Request更好用并且完全免费&#xff01;三大亮点功能&#xff1a;写完代码IDEA内一键生成API文档&#xff1b;写完代码IDEA内一键调试&#xff0c;&#xff1b;生成API目录树&#xff0c;双击即可快速…

keil5暗色主题配置

在keil文件目录下找到global.prop 将以下内容替换至该文件即可 # properties for all file types indent.automatic1 virtual.space0 view.whitespace0 view.endofline0 code.page0 caretline.visible0 highlight.matchingbraces1 print.syntax.coloring1 use.tab.color1 crea…

PostgreSQL基本操作

目录 1.源码安装PostgreSQL 1.1.前置条件&#xff08;root下操作&#xff09; 1.1.1.卸载yum安装的postgresql 1.1.2.创建postgres用户 1.1.3.安装部分依赖 1.1.4.源码安装uuid 1.2.安装PostgreSQL 1.2.1.使用postgres用户管理PostgreSQL 1.2.2.下载解压postgres12源码…

【算法每日一练]-图论(保姆级教程 篇1(模板篇)) #floyed算法 #dijkstra算法 #spfa算法

今天开始讲图论 目录 图的存储 算任意两点的最短路径: floyed算法&#xff1a; 算一个点到其他所有点的最短距离 dijkstra算法: spfa算法&#xff1a; 图的存储 其实&#xff1a;邻接矩阵和链式向前星都能存边的信息&#xff0c;vector只能存点的信息&#xff0c;再搭配上v[]…

【JUC】四、可重入锁、公平锁、非公平锁、死锁现象

文章目录 1、synchronized2、公平锁和非公平锁3、可重入锁4、死锁 1、synchronized 写个demo&#xff0c;具体演示下对象锁与类锁&#xff0c;以及synchronized同步下的几种情况练习分析。demo里有资源类手机Phone&#xff0c;其有三个方法&#xff0c;发短信和发邮件这两个方…

加速可编程创新,2023年英特尔FPGA中国技术日披露全矩阵FPGA产品与应用方案

在新场景、新应用海量增长的驱动下&#xff0c;中国本地市场对于FPGA产品的需求也在日益多元化和快速扩展。我们始终致力于以中国客户的实际需求为导向&#xff0c;基于领先的FPGA产品和软件为千行百业提供全场景的解决方案。——叶唯琛 英特尔可编程方案事业部中国总经理 今日…

智能运维软件,提升效率的利器

随着信息技术的飞速发展&#xff0c;企业对于IT系统的依赖程度日益加深。为保障IT系统的稳定运行&#xff0c;越来越多的企业选择智能运维管理软件&#xff0c;以全面高效的监控和管理系统和资产情况。 一、运维监控平台的重要性 无监控&#xff0c;不运维。将资产并入监控系…

盘点72个ASP.NET Core源码Net爱好者不容错过

盘点72个ASP.NET Core源码Net爱好者不容错过 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 链接&#xff1a;https://pan.baidu.com/s/1nlQLLly_TqGrs5O8eOmZjA?pwd8888 提取码&#xff1a;8888 项目名称 (Chinese) 物业收费…