深度优先搜索和广度优先搜索

Posted maxbolg

tags:

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

广度优先搜索:

策略:

 从起点开始遍历其相邻接的节点,由此向外不断扩散 (使用队列)

BFS()
{
  输入起始点;
  初始化所有顶点标记为未遍历;
  初始化一个队列queue并将起始点放入队列;

  while(queue不为空)
  {

    从队列中删除一个顶点s并标记为已遍历; 
    将s邻接的所有还没遍历的点加入队列;
  }
}

深度优先遍历

策略是:

从一个顶点v出发,首先将v标记为已遍历的顶点,然后选择一个邻接于v的尚未遍历的顶点u,如果u不存在,本次搜素终止。如果u存在,那么从u又开始一次DFS。如此循环直到不存在这样的顶点。(使用栈)

DFS(顶点v)
{
  标记v为已遍历;
  for(对于每一个邻接v且未标记遍历的点u)
      DFS(u);
}

 具体参考 https://www.cnblogs.com/0kk470/p/7555033.html

 

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

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

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

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

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

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

无向图 广度优先搜索 和 深度优先搜索