摘要: 1. 简述 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。 需要实现的操作有:合并两个集合,判断两个元素是否属于一个集合。 这里介绍的主要是普通的并查集,很多情况下使用的并查集是需要扩展的,根据使用情况的不同,有很多差别,这里仅仅是最基本的算法。2. 复杂度 T=O(n*α(n)), 其中α(x),对于x=宇宙中原子数之和,α(x)不大于4。事实上,路经压缩后的并查集的复杂度是一个很小的常数。3. 伪代码 没有使用路径压缩和启发式的方法。//初始化并查集#define N 100int father[N];void 阅读全文
posted @ 2011-05-27 10:01 xiaodongrush 阅读(12381) 评论(0) 推荐(1) 编辑
摘要: 1. 简述 解决任意两点间的最短路径的一种算法。2. 复杂度 T=O(V^3),S=O(V^2),使用邻接矩阵存储。3. 伪代码 需要注意的是i,j,k三个变量的顺序。//dist(i,j)为从节点i到节点j的最短距离Fori←1tondoForj←1tondodist(i,j)=weight(i,j)Fork←1tondo//k为“媒介节点”Fori←1tondoForj←1tondoif(dist(i,k)+dist(k,j)<dist(i,j))then//是否是更短的路径?dist(i,j)=dist(i,k)+dist(k,j)4. 参考资料 维基百科 阅读全文
posted @ 2011-05-27 09:29 xiaodongrush 阅读(462) 评论(0) 推荐(0) 编辑