广度优先搜索

Posted tianqizhi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了广度优先搜索相关的知识,希望对你有一定的参考价值。

  首先,我将说说什么是图(它们不涉及X轴和Y轴),在我所知道的算法中,图算法应该是最有用的。再介绍第一种图算法——广度优先搜索(breadth-first search,BFS)。
  广度优先搜索让你能够找出两样东西之间的最短距离,不过最短距离的含义有很多!使用广度优先搜索可以:

  • 编写国际跳棋AI,计算最少走多少步就可获胜;
  • 编写拼写检查器,计算最少编辑多少个地方就可将错拼的单词改成正确的单词,如将READED改为READER需要编辑一个地方;
  • 根据你的人际关系网络找到关系最近的医生。

1 图简介

  假设你居住在旧金山,要从双子峰前往金门大桥。你想乘公交车前往,并希望换乘最少。可乘坐的公交车如下。技术分享图片
  为找出换乘最少的乘车路线,你将使用什么样的算法?
  一步就能到达金门大桥吗?下面突出了所有一步就能到达的地方。技术分享图片
  金门大桥未突出,因此一步无法到达那里。两步能吗?技术分享图片

  金门大桥也未突出,因此两步也到不了。三步呢?技术分享图片


  金门大桥突出了!因此从双子峰出发,可沿下面的路线三步到达金门大桥。技术分享图片
  还有其他前往金门大桥的路线,但它们更远(需要四步)。这个算法发现,前往金门大桥的最短路径需要三步。这种问题被称为最短路径问题(shorterst-path problem)。你经常要找出最短路径,这可能是前往朋友家的最短路径,也可能是国际象棋中把对方将死的最少步数。解决最短路径问题的算法被称为广度优先搜索。要确定如何从双子峰前往金门大桥,需要两个步骤。
  (1) 使用图来建立问题模型。
  (2) 使用广度优先搜索解决问题。
  下面介绍什么是图,然后再详细探讨广度优先搜索。

 










以上是关于广度优先搜索的主要内容,如果未能解决你的问题,请参考以下文章

图的广度、深度优先搜索和拓扑排序

图的遍历之 深度优先搜索和广度优先搜索

Python算法-深度优先搜索&广度优先搜索(DFS&BFS)

深度优先搜索和广度优先搜索、A星算法三种算法的区别和联系?

广度优先搜索算法

深度优先搜索和广度优先搜索、A星算法三种算法的区别和联系?