#构造最小生成树
##最小生成树的概念
- 一个有n个结点的连通图的生成树是原图的最小连通子图,它包含原图中的所有n个结点,并且有保持图联通的最少的边
- 在无向连通带权图中需满足
- 构造的最小生成树必须包括n个结点
- 构造的最小生成树中有且只有n-1条边
- 构造的最小生成树中不存在回路
##普里姆算法
假设 G=(V,E)是一个具有 n 个顶点的带权连通无向图,T= (U,TE) 是 G 的最小生成树,其中,U 是 T 的定点集,TE 是 T 的边集。
步骤如下:
- 初始化U={v}。v到其他定点的所有边为候选边
- 重复一下步骤 n-1 次,使得其他 n-1 个定点被加入到 U 中:
a)从候选边中挑出权值最小的边输出,设改变在 V — U 中的顶点是 k ,将 k 加入 U 中;
b)考察当前 V----U 中的所有顶点 i ,修改候选边,若 (i,k) 的权值小于原来和定点 i 关联的候选便,则用 (i,k) 取代后者作为候选边
##克鲁斯卡尔算法
##两种算法比较
普利姆算法求最小生成树,是从顶点方面考虑,存在两重遍历(已访问顶点集和未访问顶点集),对应的还有一个克鲁斯卡尔算法求最小生成树,是从边的角度出发考虑的。根据各自算法特性,可以粗略的判断出,把稠密图看作边集相对于点集数量级比较大,稀疏图看作点集相对于边集较大,则普利姆算法适合于计算稠密图,克鲁斯卡尔算法适合于计算稀疏图。
#求最短路径
##狄克斯特拉
##弗洛伊德
##注意事项
- 边的表示方法: