码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 用Python实现广度优先搜索


    图是一种善于处理关系型数据的数据结构,使用它可以很轻松地表示数据之间是如何关联的

    图的实现形式有很多,最简单的方法之一就是用散列表

    背景

    图有两种经典的遍历方式:广度优先搜索和深度优先搜索。两者是相似的。

    实现

    1广度优先搜索算法需要用队列来记录后续要处理哪些顶点。

    2该队列最初只含有起步的顶点

    3处理顶点。我们将其移出队列,标为“已访问”,并记为当前顶点

    class Bfs:
        def __init__(self,from_v,json):
            # 最初的顶点
            self.from_v = from_v
            # 已访问
            self.visitList = [self.from_v]
            # 需要一个队列来记录后续需要处理哪些顶点
            self.vertexQ = queue.Queue()
            self.json = json

    核心步骤

    (1) 找出当前顶点的所有邻接点。如果有哪个是没访问过的,就把它标为“已访问”,并且将它入队。(尽管该顶点并未作为“当前顶点”被访问过。)

    (2) 如果当前顶点没有未访问的邻接点,且队列不为空,那就再从队列中移出一个顶点作为当前顶点。

    (3) 如果当前顶点没有未访问的邻接点,且队列里也没有其他顶点,那么算法完成。

    图解

    1首先A会作为顶点,A被访问

    2再去寻找A领接点B、D,依次加入队列

  • 相关阅读:
    GPT-ArcGIS数据处理、空间分析、可视化及多案例综合应用
    CCF GitLink开源编程夏令营 · 学生开放报名
    Jekyll 语句语法、功能的实现方法和结构介绍小手册
    ABB MPRC086444-005数字输入模块
    线性回归实现
    谈一谈冷门的C语言爬虫
    亚马逊、wish、temu如何掌握自养号测评技术?
    《 前端挑战与未来:如何看待“前端已死”》
    【小笔记】面对一个没搞过的任务,如何选择合适的算法模型?
    英语小三门
  • 原文地址:https://blog.csdn.net/m0_59485658/article/details/126683122
  • 最新文章
  • 我用了FastApiAdmin后,连夜把踩过的坑都整理出来了
    一个程序员眼中的 AI 核心概念,讲透 LLM 、Agent 、MCP 、Skill 、RAG...
    网络安全在线就能打的内网靶场推荐 & Dawn Breaker 单域靶场 WP
    PyTorch KernelAgent 源码解读 ---(6)--- Composer
    高光谱拼接算法(一)扫推式成像和航带拼接算法
    一文看懂fofa常用语法,告别混淆,精准打击!
    从零搭建量化投资系统:用 Qlib 一行代码搞定均线分析
    企业 AI 落地,第一件事不是买模型,而是建好企业知识库
    如何在Oracle Agent Factory中配置国内厂商的LLM?
    Codex 换模型太麻烦?这个开源桌面工具帮你一键切换
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号