Prime算法与克鲁斯卡尔算法是图生成最小生成树,前者从节点出发,后者从边出发。

1.Prime算法

Prime算法的核心步骤是:在带权连通图中V是包含所有顶点的集合, U已经在最小生成树中的节点,从图中任意某一顶点v开始,此时集合U={v},重复执行下述操作:在所有u∈U,w∈V-U的边(u,w)∈E中找到一条权值最小的边,将(u,w)这条边加入到已找到边的集合,并且将点w加入到集合U中,当U=V时,就找到了这颗最小生成树。

 

U

E

Prime算法与克鲁斯卡尔算法 最小生成树

U{A}

E{}

Prime算法与克鲁斯卡尔算法 最小生成树

U{A,F}

E{ (A,F) }

Prime算法与克鲁斯卡尔算法 最小生成树

U{A,F,E}

E{ (A,F) (F,E)}

Prime算法与克鲁斯卡尔算法 最小生成树

U{A,F,E,D}

E{ (A,F) (F,E) (F,D)}

Prime算法与克鲁斯卡尔算法 最小生成树

U{A,F,E,D,B}

E{ (A,F) (F,E) (F,D)  (F,B)}

Prime算法与克鲁斯卡尔算法 最小生成树

U{A,F,E,D,B,C}

E{ (A,F) (F,E) (F,D)  (F,B) (F,C) }

Prime算法与克鲁斯卡尔算法 最小生成树

U{A,F,E,D,B,C}

E{ (A,F) (F,E) (F,D)  (F,B) (F,C) }

 

 

 

 

克鲁斯卡尔算法

克鲁斯卡尔算法的基本思想是以边为主导地位。在带权连通图中,U是所有边构成的集合,N是顶点数量,设SU是已经在最小生成树上的边构成的集合。重复执行下述操作:每次选择一条权值最小的边e∈U-SU,且与SU中边不构成环的边,加入到SU中。当SU中边数量等于N-1时,就找到了最下生成树。

 

 

US

Count(US)

Prime算法与克鲁斯卡尔算法 最小生成树

US{(E,F) }

1

Prime算法与克鲁斯卡尔算法 最小生成树

US{(E,F) (F,D) }

2

Prime算法与克鲁斯卡尔算法 最小生成树

US{(E,F) (F,D) (F,C) }

3

Prime算法与克鲁斯卡尔算法 最小生成树

US{(E,F) (F,D) (F,C) (F,B) }

4

Prime算法与克鲁斯卡尔算法 最小生成树

US{(E,F) (F,D) (F,C) (F,B) (F,A)}

5

 

 

相关文章: