[python刷题]广度优先算法BFS介绍

参考:https://blog.csdn.net/a8082649/article/details/81395359

简介

广度优先搜索算法(Breadth First Search),又称为"宽度优先搜索"或"横向优先搜索",简称BFS; BFS是用于图的查找算法(要求能用图表示出问题的关联性)。

BFS可用于解决2类问题:

(1)从A出发是否存在到达B的路径;
(2)从A出发到达B的最短路径(这个应该叫最少步骤合理);

思路:

从图上一个节点出发,先访问其直接相连的子节点,若子节点不符合,再问其子节点的子节点,按级别顺序依次访问,直到访问到目标节点。

例子

找出从A到H的最短路径(步骤最少的,假设每一段距离相等:

[python刷题]广度优先算法BFS介绍_第1张图片

思路:

  1. 假设存在一个空的搜索队列Queue,首先将节点A添加进队列Queue
  2. 判断队列第一个节点是否是需要查找的目标节点,若不是,则将第一个节点的直接子节点添加进队列,并移除第一个节点
  3. 重复判断,直到第一个节点为目标节点,或者队列为空(即代表没有合适的

你可能感兴趣的:(Python)