码农知识堂 - 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,依次加入队列

  • 相关阅读:
    看完才发现饼图插入图片so easy!
    说说你对关键字this的认识?
    关于爬虫!看这一篇就够了!
    10. Spring源码篇之BeanPostProcessor
    Ubuntu18.04 系统没有声音输出的解决过程
    Celery笔记二之celery项目建立、配置及加载方式介绍
    vue3.0引入百度地图并标记点
    医疗系统业务流程
    NVIDIA大力推动DPU“出圈”,搅动中国AI基础设施市场
    元宇宙的六大支撑技术
  • 原文地址:https://blog.csdn.net/m0_59485658/article/details/126683122
  • 最新文章
  • 16. LangChain ChatPromptTemplate多模态应用实战
    分享一个实验性的 DAG 流程审计 Skill
    .Net基于NetCoreKevin框架 AI 与 Hangfire 集成:实现AI智能自动任务调度
    【Azure Developer】ASP.NET Framework 4.8 集成 Azure Application Insights SDK 完整指南
    AI 让 SeaTunnel 读源码和调试过时了吗?
    修改网口MTU说明
    ELK 学习总结
    深度学习进阶(二十二)T5:NLP任务的首次大一统
    XRPC:一个能写进简历的 C++ 高性能分布式 RPC 框架,QPS 13万+
    Windows 下切换 Java 环境太复杂了,我做了个 cli 工具,可以快速安装,切换 Java 版本
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号