广度优先搜索

Posted hitycy

tags:

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

这也是一种图的遍历搜索方法,它不像广度优先搜索一样不到黄河不死心。它比较喜欢四处开花,到处结果。

技术图片

方法:

我们利用队列解决这一问题

  1.我们建立一个队列来完成

(注:队列与栈相反,先进先出,可以用数组和两个下标来完成,一个代表队列的首部,一个代表尾部。加入时加入数组的末尾使尾下标加一,出来时使首坐标加一.初始时首尾下标相同)

  2.建立状态数组来记录每一个点是否被访问。

  3.建立编号数据来记录每一个点的遍历顺序

  4.将第一个点压入队列中,队尾加1

  5.当队列不为空时(两个下标不相等时)(缩进表示循环)

    6.队首出队,队首下标加1

    7.出队的点标记为以访问,并且将其编号记录。而且使保存编号的变量加一

    8.将出队点的未访问临接点全部加入队列(队尾)然后将队尾下标增加相应值

时间复杂度:

  如深度一样为O(n+e)

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

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

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

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

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

广度优先搜索算法

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