图的基本算法(二、广度优先搜索)
来源:互联网 发布:电子阅读器知乎 编辑:程序博客网 时间:2024/06/01 10:17
广度优先搜索是最简单的图搜索算法之一;在Prim 最小生成树算法和Dijkstra 单源最短路径算法中都采用了广度优先搜索的类似思想;
—————————————————————————————————————————————————
在给定图G = (V, E)和一个特定的源顶点s 的情况下,广度优先搜索系统的探索G 中的边,以其“发现”可以从s 到达的所有顶点,并计算s 到所有这些可达顶点之间的距离(即最少的边数);同时还能生成一棵根为s、且包括所有s的可达顶点的广度优先树;
—————————————————————————————————————————————————
对从s可达的任意顶点v,广度优先树中从s到v的路径对应于图G中从s到v的一条最短路径;该算法对有向图、无向图同样合适;
—————————————————————————————————————————————————
算法会首先发现和s距离为k的所有顶点,才会发现距离为k+1的其他顶点;
—————————————————————————————————————————————————
在算法中用3中颜色区分点;如果(u,v)存在,且顶点u为黑色,则顶点v为黑色或者是灰色;也就是说,与黑色相邻的点都是被发现了的;而灰色的顶点可能会有一些白色的相邻的顶点,它们代表了已发现与未发现的顶点的边界;
—————————————————————————————————————————————————
对于每个顶点u ∈V,其色彩存储于变量color[u]中, u的父母存于变量π[u]中,如果u没有父母(例如u = s或者是尚未被发现),则π[u] = NIL.该算法计算出来的源顶点s 和顶点u之间的距离存于d[u]中;算法还涉及了一个先进先出队列Q来管理所有的灰色顶点;
广度优先搜索伪代码:
入队和出队操作只需要O(1)的时间,因此队列操作的总时间为O(V); 因为只有当每个顶点将出队列时,才会扫描其邻接表,因而每个顶点的邻接表至多被扫描一次,由于所有邻接表的长度之和Θ(E),故扫描所有邻接表所花费的全部时间为O(E).初始化时间为O(V),于是BFS过程的总的运行时间为O(V + E)
—————————————————————————————————————————————————
—————————————————————————————————————————————————
- 图的基本算法(二、广度优先搜索)
- [算法] 基本图算法的c++实现:广度优先搜索
- [算法] 基本图算法:深度优先搜索、广度优先搜索
- 基本图算法之广度优先搜索
- 图基本算法 图搜索基于邻接表的(广度优先、深度优先)
- 算法——基本的图算法:广度优先搜索、深度优先搜索
- 图算法(二)—深入理解广度优先搜索
- 广度优先搜索(算法导论第22章-基本的图算法)
- 算法导论-第22章-基本的图算法-22.2 广度优先搜索(BFS)
- 第22章:图的基本算法—广度优先搜索和深度优先搜索
- 图的基本算法--深度优先搜索(dfs) 和 广度优先搜索(bfs)
- 基本图算法(广度优先搜索和深度优先搜索)
- 图的广度优先搜索算法实现
- 图的广度优先搜索----算法导论
- 图的基础算法-广度优先搜索/深度优先搜索
- BFS-广度优先搜索算法(图)
- 算法导论-----图(广度优先搜索)
- 【算法导论】图的广度优先搜索遍历(BFS)
- ACM经验
- 速读实验-信息资源第一章
- 求强连通分量的三种算法——Kosaraju, Tarjan, Gabow
- 正确理解ThreadLocal
- HTML<marquee>标签
- 图的基本算法(二、广度优先搜索)
- c++ primer笔记 将关键字 const 加在形参表之后,就可以将成员函数声明为常量:
- CSerialPort
- 关于winXP和win7,vs2010,opencv2.3,运行程序,报错“计算机丢失tbb_debug.dll”问题解决办法
- 图的基本算法(三、深度优先搜索)
- Android MediaPlayer 常用方法介绍
- 2012-05-24
- java环境变量配置
- 揭密备份恢复的原理!