图搜索算法 - 广度优先搜索法(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,一经查实,立即删除!

相关文章

C#中接口设计相关原则

在C#中,接口(Interface)是一种引用类型,它定义了一个契约,指定了一个类必须实现的成员(属性、方法、事件、索引器)。接口不提供这些成员的实现,只指定成员必须按照特定的方式被实现。…

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

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

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

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

常用浏览器快捷键

常用浏览器快捷键,大部分浏览器应该都支持,主要常用 Safari、chrome、edge 功能Mac快捷键非Mac快捷键新建标签页Cmd TCtrl T关闭当前标签Cmd WCtrl W重新打开关闭的标签Cmd Shift TCtrl Shift T切换到下一个标签Ctrl TabCtrl Tab切换到上一个…

go中泛型约束 comparable不能使用 大于> 小于<比较符号 invalid operation UndefinedOp 异常的解决方法

在go语言中我们在使用 类型约束接口 comparable对约束的数据进行 大于>或者小于 <比较时会提示编译异常: invalid operation: args[0] > args[1] (type parameter E is not comparable with >)compiler UndefinedOp 原因&#xff1a; comparable 是一个所有可比较…

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

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

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

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

【快捷部署】023_HBase(2.3.6)

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

Linux和Windows修改动态库的名字

一、概述 有时候我们创建windows的Dll或者Linux下的So库时候&#xff0c;在已经生成的产物里面我们又不想重新修改工程来修改我们动态库的名字&#xff0c;这个应该怎么做呢&#xff0c;windows跟linux两个平台使用的工具不一样。比如我们有一个TestA.Dll和TestA.lib或者 TestA…

git: 远程分支同步到本地

git pull origin <远程分支名> git pull可以将远程某一个分支下拉到本地并和本地的分支进行合并。如果不加origin <远程分支名>&#xff0c;那么这个同步就是将当前本地分支对应的远程分支给下拉合并进当前本地分支 git fetch --all 下载所有远程分支代码到本地…

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

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

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

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

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: }} }

为什么有了MTU,还需要MSS?

为什么有了MTU&#xff0c;还需要MSS? MTU Maximum Transmit Unit&#xff0c;最大传输单元。由数据链路层提供给网络最大的一次传输数据的大小&#xff0c;一般MTU1500Byte. “车同轨”&#xff0c;保证底层数据包能在物理网络中顺利传输&#xff01;&#xff01;&#xff…

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

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

虚拟环境 conda activate

使用命令conda activate pytorch激活pytorch时出现以下报错&#xff1a; usage: conda-script.py [-h] [–no-plugins] [-V] COMMAND … conda-script.py: error: argument COMMAND: invalid choice: ‘activate’ (choose from ‘clean’, ‘compare’, ‘config’, ‘create’…

C语言struct person{...};person a;为什么编泽出错?

一、问题 在结构体中定义⼀个变量&#xff0c;可以有很多种⽅法&#xff0c;为什么这样定义编译出错呢&#xff1f; 例如&#xff1a; struct persont{...};person a; 二、解答 在解答编译出错的原因之前&#xff0c;先要了解⼏种正确的定义结构体类型变量的⽅法。 &#xf…

在echarts中使用geojson地图

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

功率控制单元PCU系统简介

什么是PCU系统 近年来&#xff0c;新能源汽车市场竞争愈发激烈。电驱动系统关乎整车的制造成本&#xff0c;影响整车性能。因此&#xff0c;新能源汽车电驱动系统成为业内研究热点。电驱动系统作为新能源汽车的核心部件&#xff0c;控制电机输出驱动转矩或制动转矩&#xff0c…

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

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