6、广度优先搜索
6、广度优先搜索
6.1 图简介
广度优先搜索(breadth-first search,BFS)
广度优先搜索能让你能够找出两样东西之间的最短距离,不过最短距离的含义有很多。使用广度优先搜索可以:
最短路径问题(shorterst-path problem),解决最短路径问题的算法被称为广度优先搜索。
6.2 图是什么
图由节点(node)和边(edge)组成。一个节点可能与众多节点直接相连,这些节点被称为邻居。
6.3 广度优先搜索
广度优先搜索是一种用于图的查找算法,可帮助回答两类问题。
(1)第一类问题:从节点A出发,有前往节点B 的路径吗?
(2)第二类问题:从节点A出发,前往节点B的哪条路径最短?
队列是一种先进先出(Fist In First Out,FIFO)的数据结构,而栈是一种后进先出(Last In First Out,LIFO)的数据结构。
你需要按加入顺序检查列表中的人,否则找到的就不是最短路径,因此搜索列表必须是队列。
对于检查过的人,务必不要再去检查,否则坑你导致无限循环。