最小生成树——prim 普里姆算法 Kruskal 克鲁斯卡尔算法

时间:2020-12-13 11:43:00

普里姆算法:

假设 N-(V,{E})是连通图,TE是N上最小生成树中边的集合。算法从U={u。}(n。属于V),TE={}开始。重复执行下述操作:在所有u属于U,v属于V-U的边(u,v)属于E中找出一条代价最小的边(u。,v。)并入集合TE,同时v。并入U,直至U=V为止。此时TE中必有n-1条边,则T=(V,{TE})为N的最小生成树。 时间复杂度O(n2).


克鲁斯卡尔算法:

假设N=(V,{E})是连通网,则令最小生成树的初始状态为只有n个顶点而无边的非连通图T={V,{}},图中每个顶点自成一个连通分量。在E中选择代价最小的边,若该边依附的顶点落在T中不同的连通分量上,则将此边加入到T中,否则舍去此边而选择下一条代价最小的边。一次类推,直至T中所有顶点都在同一个连通分量上为止。时间复杂度为O(eloge)。