图搜索算法 - 广度优先搜索法(BFS)

相关文章:
图搜索算法 - 深度优先搜索法(DFS)

广度优先搜索法(BFS)

2.从一个顶点出发,把它所有关联的顶点依次访问,然后到下一个顶点(刚才访问的关联顶点)。然后以这个顶点为中心,再次访问所有关联顶点,直到所有顶点被访问。利用广度优先搜索法,从【A】顶点出发来遍历所以结点。这次使用队列结构来存储访问记录。下面我们模拟计算机的访问过程。
(1)首先访问【A】顶点,同时把【A】顶点进入队列,如图所示。
在这里插入图片描述
(2)访问【A】的关联顶点【B】,同时把【B】顶点放进队列,如图所示。
在这里插入图片描述
(3)访问【A】的关联顶点【C】,同时把【C】顶点放进队列,如图所示。
在这里插入图片描述
4)【A】顶点已经没有未访问的顶点了,那么把【A】顶点移出队列,然后访问队列的头【B】顶点。这时候我们找到【D】顶点未被访问,因此把【D】顶点放进队列,如图所示。
在这里插入图片描述
后面的过程也是这样重复下去,最终结果如图所示。
在这里插入图片描述
那么现在用代码来表示刚才这个遍历过程。

def graph_bfs(adjacency_list, start_point):visited = [start_point] # 保存已经访问过的顶点queue = []              # 用队列结构来记录访问历史queue.append(start_point)while len(queue) > 0:   # 当队列为空,说明全部顶点已经遍历完成current_point = queue.pop(0)  # 获取访问历史的队头为当前顶点for next_point in adjacency_list.get(current_point, []):# 逐一访问当前顶点的所有关联点if next_point not in visited:  # 如果没有访问添加到已访问队列中 visited.append(next_point)queue.append(next_point)   # 在队尾添加顶点作为访问记录return visited
#------------测试--------------------
res = graph_bfs(graph, 'A')
print("->".join(res))
#------------结果--------------------
A->B->C->D->E->F->G

在这里插入图片描述

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

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

相关文章

Advanced RAG 06:生成结果的相关性低? 快用 Query Rewriting 优化技术

编者按:在现实生活中,普通用户很难编写合适的提示词(prompt)来指示 LLM 完成期望任务。用户提出的 queries 往往存在词汇不准确、缺乏语义信息等问题,导致 LLM 难以理解并生成相关的模型响应。因此,如何优化…

前端 | iframe框架标签应用(二)| 外部页面导入

文章目录 📚实现效果📚模块实现解析🐇html🐇css🐇javascript 📚实现效果 点击右上角喇叭,弹出iframe页面框,链接bilibili白噪音视频页面;点击关闭按钮,关闭弹…

sqlmodel实现唯一性校验3,检查多列同时重复

之前的方案虽然能够解决重复性问题,但是没有覆盖到多列同时重复的情况。 比如,我们可以认为用户名是可以重复的。但是用户名和年龄不能同时重复,那么这种情况该怎么解决呢? 之前的代码如下: from sqlalchemy import…

数据集标签数量不均衡如何设计loss均衡数量

数据集标签数量不均衡如何设计loss均衡数量 1. 思路出发点: 对于哪些数量分布比值较少的标签提供更多的loss注意力比重,如何提高训练注意力比重,也就是说,让模型的梯度更多的倾向于有利于数据标签分布较少的数据训练&#xff0c…

【快捷部署】023_HBase(2.3.6)

📣【快捷部署系列】023期信息 编号选型版本操作系统部署形式部署模式复检时间023HBase2.3.6Ubuntu 20.04tar包单机2024-05-07 注意:本脚本非全自动化脚本,有2次人工干预,第一次是确认内网IP,如正确直接回车即可&#…

了解TMS运输管理系统,实现物流高效运转

TMS运输管理系统(Transportation Management System)是一种集成物流和信息技术的解决方案,通过优化运输流程、实时跟踪货物信息和自动化管理操作,提高物流效率,降低运营成本,实现高效运输。 TMS运输管理系…

吴恩达2022机器学习专项课程C2(高级学习算法)W1(神经网络):2.4 神经网络层

目录 神经网络第一层(隐藏层)计算过程1.输入向量2.神经元的计算2.标识不同神经元3.层输出(激活)向量4.神经网络分层5.标识不同层 神经网络第二层(输出层)计算过程1.输入向量2.层输出(激活&#…

Vue CLI配置代理、2.0、3.0

一、vue cli2.0 代理配置 proxy: {/api:{target: "http://localhost:8067",pathRewrite: {/api: }}, } 一、vue cli3.0 代理配置 proxy: {/api: {target: http://localhost:8067,pathRewrite: {/api: }} }

Redis 之 布隆过滤器 与 布谷鸟过滤器

大家都知道,在计算机中IO一直是一个瓶颈,很多框架以及技术甚至硬件都是为了降低IO操作而生,今天聊一聊过滤器,先说一个场景: 我们业务后端涉及数据库,当请求消息查询某些信息时,可能先检查缓存中是否有相关信息,有的话返回,如果没有的话可能就要去数据库里面查询,这时候有一个…

在echarts中使用geojson地图

以中国地图为例 先看效果 代码实现&#xff1a; <div id"refChinaMap" :style"{ width: 75%, height: 100% }"></div>import * as echarts from "echarts"; import ChinaJSON from "./chinaMap.json";const initChinaMa…

c语言数据结构之一(单链表)

前言 链表是最基础的数据结构&#xff0c;可以用于实现栈、队列等等。 实现原理 节点&#xff08;Node&#xff09;&#xff1a;链表的基本构建单元是节点&#xff0c;每个节点包含两部分&#xff1a;数据和指向下一个节点的指针。在C语言中&#xff0c;节点通常用结构体来表…

什么是分布式事务?

典型回答 分布式事务是指在分布式系统中涉及到多个数据库或多个应用程序之间的事务处理&#xff0c;这些数据库或应用程序可能分布在不同的物理节点上&#xff0c;甚至可能位于不同的地理位置。在分布式事务中&#xff0c;需要确保所有参与者的事务操作都能够保持一致性&#…

三步学会苹果手机怎么关震动的方法!

苹果手机的震动功能在某些情况下可能会被认为是不必要的&#xff0c;比如在会议、课堂或者晚间睡眠时。因此&#xff0c;学会如何关闭苹果手机的震动功能是非常实用的。苹果手机怎么关震动&#xff1f;在本文中&#xff0c;我们将介绍三个步骤&#xff0c;帮助你关闭苹果手机的…

XSS-Labs 靶场通过解析(下)

前言 XSS-Labs靶场是一个专门用于学习和练习跨站脚本攻击&#xff08;XSS&#xff09;技术的在线平台。它提供了一系列的实验场景和演示&#xff0c;帮助安全研究人员、开发人员和安全爱好者深入了解XSS攻击的原理和防御方法。 XSS-Labs靶场的主要特点和功能包括&#xff1a;…

K邻算法:在风险传导中的创新应用与实践价值

程序员的实用神器 ⛳️ 写在前面参与规则&#xff01;&#xff01;&#xff01; ✅参与方式&#xff1a;关注博主、点赞、收藏、评论&#xff0c;任意评论&#xff08;每人最多评论三次&#xff09; ⛳️本次送书1~4本【取决于阅读量&#xff0c;阅读量越多&#xff0c;送的越…

Python 中使用私有成员的子类化

1、问题背景 Python 语言中&#xff0c;变量名与访问器同名是一个非常好的特性&#xff1a; self.__value 1def value():return self.__value但是&#xff0c;当我们想要子类化一个类&#xff0c;并访问其私有成员时&#xff0c;却没有一种简单的方法。通常&#xff0c;我们…

发挥企业力量,美乐家推动城市绿色发展

在当今时代&#xff0c;环保已成为衡量企业社会责任的重要标准之一。美乐家作为一个具有前瞻性的企业&#xff0c;深刻理解到这一点&#xff0c;并通过其行动积极展示了这种责任感。通过与中华环境保护基金会合作&#xff0c;美乐家开始全国范围内推动了“微行动&#xff0c;守…

C语言 | Leetcode C语言题解之第74题搜索二维矩阵

题目&#xff1a; 题解&#xff1a; bool searchMatrix(int** matrix, int matrixSize, int* matrixColSize, int target) {int m matrixSize, n matrixColSize[0];int low 0, high m * n - 1;while (low < high) {int mid (high - low) / 2 low;int x matrix[mid /…

等保测评—Linux-CentOS标准范例截图

密码输入错误无法登录 用户账户情况包含root、guanli、shenji 查看审计用户权限 身份鉴别&#xff1a; cat /etc/passwd&#xff0c;核查用户名和 UID&#xff0c;是否存在同样的用户名和 UID cat /etc/shadow&#xff0c;查看文件中各用户名状态 &#xff0c; 核查密码一栏为…

Springboot工程创建

目录 一、步骤 二、遇到的问题及解决方案 一、步骤 打开idea,点击文件 ->新建 ->新模块 选择Spring Initializr&#xff0c;并设置相关信息。其中组为域名&#xff0c;如果没有公司&#xff0c;可以默认com.example。点击下一步 蓝色方框部分需要去掉&#xff0c;软件包…