BFS算法原理和生成树性质证明论述.doc

BFS算法基本思想和证明 以及广度优先树最重要的还有实现 张季伦 本来想直接写证明的,这篇文章的最初主题是证明在无权图下BFS所产生的生成树中由起点(根节点)到任意可达节点的通路(轨道)都是起点到该节点的最短路径。可是后来发现我们的教材实在是对BFS原理和复杂度证明得很少,往往只是写写伪代码然后对复杂度一笔带过,所以干脆这次连同BFS的原理和复杂度一起写出来分享。 在这之前,大家至少需要看得懂以C为借鉴所写的伪代码,以及需要对图论的基础知识有一点了解。 对于对数据结构有了解的同学来说,很容易知道我们一般用邻接表或者邻接矩阵以及十字矩阵来实现图的数据结构。今天在这里我用邻接矩阵实现。 这次也准备放出完整调试后源码给大家参考,语言是C和C++混编的。 Part 1.BFS原理分析: 首先,广度优先搜索算法的目的是探索一个未知连通结构的图,并把这个图的连通性通过其他数据导出。下面来描述一下BFS算法的基本流程。 前期工作: 为了使BFS运行工作更加流畅和有条理,我们为算法结构添加如下辅助数据量。 向量 COLOR[ELEMETS_NUMBER]: 长度为结点个数的向量,用于标明即时结点与已遍历范围的相对位置。 父节点向量SUPER[ELEMENTS_NUMBER]: 长度同上,数据类型为索引类型,标明某一结点的父节点位置。 通路距离向量DISTANCE[E

文档评论(0)

1亿VIP精品文档

相关文档