广度优先搜索算法详解地铁路线

北京很大,附上地铁图,不要迷路!!!

作为一个程序员,在北京,你很有可能住在回龙观地区,经常从龙泽上地铁,然后畅游北京。

当有一天,你老家的朋友来北京了,希望你能够带她去天安门玩一玩,你该怎么坐地铁呢?

基本要求,我们乘坐地铁,绿色出行,但希望换乘的最少。

此时,有可能你并不懂广度优先搜索算法,但实际上你已经运用了它。

找出从龙泽到天安门东的最短路径问题,就叫做广度优先搜索

下图列除了部分可以到达的路线:

从龙泽前往天安门东的最短路径需要三步,这种问题被称之为最短路径问题,那么解决最短路径问题的算法被称之为广度优先搜索

是不是这种概念,非常容易理解。

那我们进一步对广度优先搜索进行一个说明:

  • 广度优先搜索是一种用于图的查找算法,可以解决两类问题
  • 从节点A出发,能够到达节点B么!
  • 从节点A出发,前往节点B的路径中,最短的是哪条路径!

举个

金融场景下,借款人A到平台借款,逾期未还,假定我们知道他的朋友中(朋友13)会帮助他还,这个例子可能不是特别的恰当,但可以帮助大家说明问题,并深入理解广度优先搜索

广度优先搜索,不仅查找从借款人A到朋友13的路径,而且找到的是最短路径,为什么要找到最短路径呢,原因是图关系中,越近找到,说明关系越紧密。

如果你懂知识图谱技术的话,那可能直接用最短路径算法,就可以直接获取到。那么不用知识图谱的图计算技术,就可以用到队列的技术来实现

那么这里需要注意一个问题,这个问题就是当执行到朋友1时,要把借款人自己给去除掉,否则就变成了死循环了

最后的总结:

  • 广度优先搜索指出是否有从A到B的路径
  • 广度优先搜索将会找出最短路径
  • 可以先创建图,然后再根据图关系使用广度优先搜索算法来解决问题
  • 你需要按照加入的顺序去检查,否则找到的不是最短路径,因此如果你用的不是知识图谱的图算法技术,那么就必须是队列
  • 对于检查过的人,就不要再检查了,否则会造成死循环

AI广度优先搜索算法,项目实战北京地图/贪心学院的更多相关文章

  1. 10个机器学习人工智能开发框架和AI库(优缺点对比表)/贪心学院

    概述 通过本文我们来一起看一些用于人工智能的高质量AI库,它们的优点和缺点,以及它们的一些特点. 人工智能(AI)已经存在很长时间了.然而,由于这一领域的巨大进步,近年来它已成为一个流行语.人工智能曾 ...

  2. 给缺少Python项目实战经验的人

    我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...

  3. 百度AI开放平台- API实战调用

    百度AI开放平台- API实战调用 一.      前言 首先说一下项目需求. 两个用户,分别上传了两段不同的文字,要计算两段文字相似度有多少,匹配数据库中的符合条件的数据,初步估计列出来会有60-1 ...

  4. 项目实战——企业级Zabbix监控实战(一)

    项目实战--企业级Zabbix监控实战 实验一:Zabbix监控的搭建 1.实验准备 centos系统服务器3台. 一台作为监控服务器, 两台台作为被监控节点, 配置好yum源. 防火墙关闭. 各节点 ...

  5. 微信小程序项目实战之天气预报

    概述 微信小程序项目实战之天气预报 详细 代码下载:http://www.demodashi.com/demo/10634.html 一.准备工作 1.注册微信小程序 2.注册和风天气账号 3.注册百 ...

  6. (转载)Android项目实战(二十七):数据交互(信息编辑)填写总结

    Android项目实战(二十七):数据交互(信息编辑)填写总结   前言: 项目中必定用到的数据填写需求.比如修改用户名的文字编辑对话框,修改生日的日期选择对话框等等.现总结一下,方便以后使用. 注: ...

  7. 微信小程序入门与实战 常用组件API开发技巧项目实战*全

    第1章 什么是微信小程序? 第2章 小程序环境搭建与开发工具介绍 第3章 从一个简单的“欢迎“页面开始小程序之旅 第4章 第二个页面:新闻阅读列表 第5章 小程序的模板化与模块化 第6章 构建新闻详情 ...

  8. tp5博客项目实战1

    tp5博客项目实战 开发准备:环境wamp,windows系统为例.看实战博客,默认会搭建开发环境并且tp5框架已经至少有一定的基础. tp5的下载与安装 方法一:直接在官网下载拷贝到wamp你的项目 ...

  9. Java 18套JAVA企业级大型项目实战分布式架构高并发高可用微服务电商项目实战架构

    Java 开发环境:idea https://www.jianshu.com/p/7a824fea1ce7 从无到有构建大型电商微服务架构三个阶段SpringBoot+SpringCloud+Solr ...

随机推荐

  1. 基础_1:RCP基本框架

    Display: Display是一个SWT对象,代表底层图形系统的实现.一个RCP应用程序只需要一个Display对象. Display的主要任务是从操作系统队列中读取事件,传递给RCP的事件监听器 ...

  2. 结构体struct,类class

    1.struct,值类型,结构体会自动生成初始化方法,class是引用类型 struct Person { var name : String var age : Int func simpleDes ...

  3. 吴裕雄--天生自然 HADOOP大数据分布式处理:修改CenterOS 7 IP设置

  4. 1 jquery对checkbox的简单操作

    //全选和全不选 votefunction selectAll(){ if($(":checkbox").prop('checked')){     //$(":chec ...

  5. spring xml 注入 map 时 map 标签报错

    如图所示: 在XML配置文件中并没有问题,问题出在实体类,在类中属性 maps 用 Map定义即可,用HashMap定义就会出现如上错误 K-I-N-G-D-O-M

  6. 【Linux_Shell 脚本编程学习笔记一、条件表达式】

    条件表达式返回的结果都为布尔型 真为1,假为0 条件测试的表达式 [expression] 比较符 整数比较 -eq:比较两个整数是否相等,$A -eq $B -ne:测试两个整数是否不等,不等则为真 ...

  7. Spring Boot 学习笔记(六) 整合 RESTful 参数传递

    Spring Boot 学习笔记 源码地址 Spring Boot 学习笔记(一) hello world Spring Boot 学习笔记(二) 整合 log4j2 Spring Boot 学习笔记 ...

  8. 使用fiddler盖楼评论

    使用fiddler盖楼评论:使用replay重复请求某接口

  9. Android开发之《内存对齐》

    为什么要进行内存对齐以及对齐规则:http://www.cnblogs.com/jijiji/p/4854581.html 1. 在32位系统中定义变量最好用int,因为这样效率高.原因就在于32位的 ...

  10. unittest(22)- p2p项目实战(2)-http_request

    # 2. http_request.py import requests from learn_logging_5.write_log_class import MyLog my_logger = M ...