C#,图论与图算法,有向图(Direct Graph)广度优先遍历(BFS,Breadth First Search)算法与源程序

1 图的广度优先遍历

图的广度优先遍历(或搜索)类似于树的广度优先遍历(参见本文的方法2)。这里唯一需要注意的是,与树不同,图可能包含循环,因此我们可能再次来到同一个节点。为了避免多次处理节点,我们使用布尔访问数组。为简单起见,假设所有顶点都可以从起始顶点到达。

例如,在下图中,我们从顶点2开始遍历。当我们到达顶点0时,我们会查找它的所有相邻顶点。2也是0的相邻顶点。如果我们不标记访问的顶点,那么2将再次处理,它将成为一个非终止过程。下图的宽度优先遍历为2、0、3、1。

2 BFS 的应用

我们前面讨论了图的广度优先遍历算法。我们还讨论了深度优先遍历的应用。本文讨论了广度优先搜索的应用。

1) 无权图的最短路径与最小生成树在无权图中,最短路径是边数最少的路径。对于宽度优先,我们总是使用最小边数从给定源到达顶点。此外,对于无权图,任何生成树都是最小生成树,我们可以使用深度优先遍历或宽度优先遍历来查找生成树。

2) 对等网络。在像BitTorrent这样的对等网络中,广度优先搜索用于查找所有邻居节点。

3) 搜索引擎中的爬虫:爬虫使用广度优先构建索引。这个想法是从源页面开始,跟踪源页面的所有链接,并继续

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

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

相关文章

ideaSSM 学员信息管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea 开发 SSM 学员信息管理系统是一套完善的信息管理系统,结合SSM框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库&#xff…

C语言基础知识复习(考研)

(1)C语言文件操作 1 什么是文件 文件有不同的类型,在程序设计中,主要用到两种文件: (1)程序文件。包括源程序文件(后缀为.c)、目标文件(后缀为.obj)、可执行这种文件的内容是程序代码。 (2)数据文件。文件的内容不是…

软件测试相关内容第五弹 -- 自动化测试Selenium

写在前:hello这里是西西~ 这边博客主要学习关于自动化测试的相关内容,首先了解自动化测试的相关理论知识,其次学习web应用中基于UI的自动化测试框架 - selemium[需要重点掌握selenium工作原理],实操selenium,最后学习Junit相关知识…

当我想用ChatGPT-Next-Web来套壳Azure OpenAI Service时

使用Cloudflare worker来代理Azure OpenAI API, 并将其转换为兼容OpenAI的API 一直没能搞定OpenAI的订阅, 就因为没有搞定国外的信用卡, 所以就一直使用GPT-3.5来处理日常的文字生成工作, 例如写文档, 生成一些简单的脚…

AI助力生产制造质检,基于轻量级YOLOv8n模型开发构建工业生产制造场景下的瓷砖瑕疵检测识别分析系统

瓷砖生产环节一般经过原材料混合研磨、脱水、压胚、喷墨印花、淋釉、烧制、抛光,最后进行质量检测和包装。得益于产业自动化的发展,目前生产环节已基本实现无人化。而质量检测环节仍大量依赖人工完成。一般来说,一条产线需要配数名质检工&…

论文阅读-MIPD:一种用于分布式深度神经网络训练的自适应梯度稀疏化框架

摘要—基于参数服务器架构的异步训练广泛应用于大规模数据集和深度神经网络模型的扩展训练。在大规模分布式深度学习系统中,通信一直被认为是主要瓶颈。最近的研究尝试通过梯度稀疏化和量化方法来减少通信流量。我们发现前期研究存在三个限制。首先,他们…

YOLOv5-Y5周:yolo.py文件解读

本文为🔗365天深度学习训练营 中的学习记录博客 原作者:K同学啊|接辅导、项目定制 我的环境: 1.语言:python3.7 2.编译器:pycharm 3.深度学习框架Tensorflow/Pytorch 1.8.0cu111 一、代码解读 import argparse i…

【洛谷 P8715】[蓝桥杯 2020 省 AB2] 子串分值 题解(组合数学+乘法原理)

[蓝桥杯 2020 省 AB2] 子串分值 题目描述 对于一个字符串 S S S, 我们定义 S S S 的分值 f ( S ) f(S) f(S) 为 S S S 中恰好出现一次的字符个数。例如 f ( ′ ′ a b a ′ ′ ) 1 f\left({ }^{\prime \prime} \mathrm{aba}{ }^{\prime \prime}\right)1 f(′′aba′′)…

Vscode与Cmake搭配配置opencv使用

vscode与Cmake基本使用 下载插件 CtrlShiftp打开VSCode的指令面板,然后输入cmake:q,VSCode会根据输入自动提示,然后选择CMake: Quick Start选择编译器根据提示输入项目名称选择可执行文件编译项目 方式一:执行命令cd build cmake…

一键将自己网增加一个抖音小程序-源代码

把自己的网址链接,也就是你想要的一个页面转变为抖音小程序,让你轻松拥有一个自己的抖音小程序。 几分钟搞定。 跟着视频来操作就可以了,很简单。视频一定要完整看完啊,对于小白。 如果你的网址可能有不好过审核的页面&#xff0c…

基于python+vue的stone音乐播放器的设计与实现flask-django-php-nodejs

随着我国经济的高速发展与人们生活水平的日益提高,人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下,人们更趋向于足不出户解决生活上的问题,stone音乐播放器展现了其蓬勃生命力和广阔的前景。与此同时,为解决用…

华为配置WLAN 802.1X认证实验

配置WLAN 802.1X认证示例 组网图形 图1 配置802.1X认证组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤 业务需求 用户接入WLAN网络,使用802.1X客户端进行认证,输入正确的用户名和密码后可以无线上网。且在覆盖区域内移动发生漫游时&…

MySQL面试题--MySQL内部技术架构

目录 1.Mysql内部支持缓存查询吗? 2.MySQL8为何废弃掉查询缓存? 3.替代方案是什么? 4.Mysql内部有哪些核心模块组成,作用是什么? 5.一条sql发送给mysql后,内部是如何执行的?(说…

MYSQL 同步到ES 如何设计架构保持一致性

简单使用某个组件很容易,但是一旦要搬到生产上就要考虑各种各样的异常,保证你方案的可靠性,可恢复性就是我们需要思考的问题。今天来聊聊我们部门在 MYSQL 同步到ES的方案设计。 在面对复杂条件查询时,MYSQL往往显得力不从心&…

Gitlab介绍

1.什么是Gitlab GitLab是一个流行的版本控制系统平台,主要用于代码托管、测试和部署。 GitLab是基于Git的一个开源项目,它提供了一个用于仓库管理的Web服务。GitLab使用Ruby on Rails构建,并提供了诸如wiki和issue跟踪等功能。它允许用户通…

从0到1实现RPC | 02 RpcConsumer的远程调用

一、RPC的简化版原理如下图(核心是代理机制)。 1.本地代理存根: Stub 2.本地序列化反序列化 3.网络通信 4.远程序列化反序列化 5.远程服务存根: Skeleton 6.调用实际业务服务 7.原路返回服务结果 8.返回给本地调用方 二、新建一个模块rpc-demo-c…

后端程序员入门react笔记(九)- react 插件使用

setState setState引起的react的状态是异步的。操作完毕setState之后如果直接取值,可能取不到最新的值,我们举个例子console.log(this.state.num)打印的值,总是上一次的值而不是最新的。 import React, {Component} from react; class Ap…

基于ArcGIS的2015-2020辽宁省土地利用变化分析

数据准备 栅格转面 运行ArcToolbox,打开【转换工具】,选择【从栅格转出】里面的【栅格转面工具】,调出面板进行参数设置。输入栅格选择裁剪的2015年中国土地利用遥感监测数据(…

数据挖掘与分析学习笔记

一、Numpy NumPy(Numerical Python)是一种开源的Python库,专注于数值计算和处理多维数组。它是Python数据科学和机器学习生态系统的基础工具包之一,因为它高效地实现了向量化计算,并提供了对大型多维数组和矩阵的支持…

【ReactJS】使用GoJS实现自己的图表App

目录 1:用于绘制自定义图表的JavaScript库:用于绘制UML(或BPMN或ERD …)图表的JavaScript库:2:为什么选择GoJS?3:让我们使用现有的React应用程序:步骤1:步骤2:步骤3:步骤4:推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战1:…