最小生成树算法讲解【精选】
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
当U=V则结束,此时TE中必有n-1条边,则T=(V,{TE})为N的最小 生成树。
普里姆算法构造最小生成树的过程是从一个顶点U={u0}作 初态,不断寻找与U中顶点相邻且代价最小的边的另一个顶 点,扩充到U集合直至U=V为止。
西安电子科技大学软件学院 - School of Computer Software, Xidian University, China
V2
V2
V1
V4
V6 V5
V1
V4
V3
V2
V3 生成树
V6 V5
V2
V1
V4
V3
V6 V5
V1
V4
V3
V6
V5
西安电子科技大学软件学院 - School of Computer Software, Xidian University, China
2
最小代价生成树
生成树的代价等于其边上的权值之和。
V4 V6
步骤 U
V-U
(0) {V1 } { V2 ,V3 ,V4 , V5 ,V6 } (1) {V1 ,V3 } { V2 ,V4 , V5 ,V6 }
(2) {V1 ,V3 ,V6 } { V2 ,V4 , V5 }
(3) {V1 ,V3 ,V6 ,V4 } { V2, V5 } (4) {V1 ,V3 ,V6 ,V4 ,V2 } { V5 }
单元实验五
------最小生成树
西安电子科技大学软件学院 - School of Computer Software, Xidian University, China
1
生成树的概念
生成树
➢ 一个连通图的生成树是一个极小连通子图,它含有图中全 部顶点,但只有足以构成一棵树的n-1条边。
➢ 生成树不唯一
V1 1 V4
V3 42
V6
V1
6
5
V2 5 V3
6 V5 6
5 V4 2
V6
步骤 U
V-U
(0) {V1 } { V2 ,V3 ,V4 , V5 ,V6 } (1) {V1 ,V3 } { V2 ,V4 , V5 ,V6 }
(2) {V1 ,V3 ,V6 } { V2 ,V4 , V5 }
(3) {V1 ,V3 ,V6 ,V4 } { V2, V5 }
V3
到顶点全部进入生成树为止
V1
6
5
1
V2
V4
V3
V5
V6
步骤 U
V-U
(0) {V1 } { V2 ,V3 ,V4 , V5 ,V6 } (1) {V1 ,V3 } { V2 ,V4 , V5 ,V6 }
西安电子科技大学软件学院 - School of Computer Software, Xidian University, China
V1
6
5
1
V2 5
5 V4
V3
36
42
V1
6
5
V5 6 V6
V1
1
1
V2
V4
V3
V2 5
V4
V3
6
4
3
42
V5
V6
V5
V6
西安电子科技大学软件学院 - School of Computer Software, Xidian University, China
3
最小代价生成树
两种常用的构造最小生成树的方法: ➢ 普里姆算法 ➢ 克鲁斯卡尔算法
36 V5 6
V4 V6
(0) {V1 } { V2 ,V3 ,V4 , V5 ,V6 } (1) {V1 ,V3 } { V2 ,V4 , V5 ,V6 } (2) {V1 ,V3 ,V6 } { V2 ,V4 , V5 } (3) {V1 ,V3 ,V6 ,V4 } { V2, V5 }
7
最小代价生成树
普里姆算法求最小生成树:从 生成树中只有一个顶点开始, 到顶点全部进入生成树为止
V1 1
V3 4 V6
V1
6
5
V2 5
5 V4
V3
6
4
V5
V6
步骤 U
V-U
(0) {V1 } { V2 ,V3 ,V4 , V5 ,V6 } (1) {V1 ,V3 } { V2 ,V4 , V5 ,V6 }
5
最小代价生成树
普里姆算法求最小生成树:从 生成树中只有一个顶点开始, 到顶点全部进入生成树为止
V2 5 3 V5
V1 1 V4
V3 42
V6
V1
6
5
1
步骤 U
V-U
V2 5
5 V4
V3
36
42
V5 6 V6
(0) {V1 } { V2 ,V3 ,V4 , V5 ,V6 } (1) {V1 ,V3 } { V2 ,V4 , V5 ,V6 } (2) {V1 ,V3 ,V6 } { V2 ,V4 , V5 } (3) {V1 ,V3 ,V6 ,V4 } { V2, V5 }
西安电子科技大学软件学院 - School of Computer Software, Xidian University, China
4
普里姆(Prim)算法
假设N=(V,E)是连通网,TE是N上最小生成树中边的集合。 算法从U={u0}(u0∈V),TE={}开始,重复执行下述操作:
在所有u∈U,v∈V-U的边(u,v)中找一条代价最小的边(u0 ,v0),将 其并入集合TE,同时将v0并入U集合。
西安电子科技大学软件学院 - School of Computer Software, Xidian University, China
9
最小代价生成树 V1
普里姆算法求最小生成树:从 生成树中只有一个顶点开始, 到顶点全部进入生成树为止
1
V2 5
V4
V3
42
V6
V1 6
V2 5 V3
6 V5 6
(2) {V1 ,V3 ,V6 } { V2 ,V4 , V5 }
西安电子科技大学软件学院 - School of Computer Software, Xidian University, China
8
最小代价生成树
普里姆算法求最小生成树:从 生成树中只有一个顶点开始, 到顶点全部进入生成树为止
(4) {V1 ,V3 ,V6 ,V4 ,V2 } { V5 }
(5) {V ,V ,V ,V ,V ,V } { } 西安电子科技大学软件学院
1364
- School of Computer Software, Xidian University, China
2
5
6
最小代价生成树 V1
1பைடு நூலகம்
普里姆算法求最小生成树:从 生成树中只有一个顶点开始,
西安电子科技大学软件学院 - School of Computer Software, Xidian University, China
10
最小代价生成树 V1
普里姆算法求最小生成树:从 生成树中只有一个顶点开始, 到顶点全部进入生成树为止
1
V2 5
V4
V3
3
42
V5
V6
V1
步骤 U
V-U
V2 V3
普里姆算法构造最小生成树的过程是从一个顶点U={u0}作 初态,不断寻找与U中顶点相邻且代价最小的边的另一个顶 点,扩充到U集合直至U=V为止。
西安电子科技大学软件学院 - School of Computer Software, Xidian University, China
V2
V2
V1
V4
V6 V5
V1
V4
V3
V2
V3 生成树
V6 V5
V2
V1
V4
V3
V6 V5
V1
V4
V3
V6
V5
西安电子科技大学软件学院 - School of Computer Software, Xidian University, China
2
最小代价生成树
生成树的代价等于其边上的权值之和。
V4 V6
步骤 U
V-U
(0) {V1 } { V2 ,V3 ,V4 , V5 ,V6 } (1) {V1 ,V3 } { V2 ,V4 , V5 ,V6 }
(2) {V1 ,V3 ,V6 } { V2 ,V4 , V5 }
(3) {V1 ,V3 ,V6 ,V4 } { V2, V5 } (4) {V1 ,V3 ,V6 ,V4 ,V2 } { V5 }
单元实验五
------最小生成树
西安电子科技大学软件学院 - School of Computer Software, Xidian University, China
1
生成树的概念
生成树
➢ 一个连通图的生成树是一个极小连通子图,它含有图中全 部顶点,但只有足以构成一棵树的n-1条边。
➢ 生成树不唯一
V1 1 V4
V3 42
V6
V1
6
5
V2 5 V3
6 V5 6
5 V4 2
V6
步骤 U
V-U
(0) {V1 } { V2 ,V3 ,V4 , V5 ,V6 } (1) {V1 ,V3 } { V2 ,V4 , V5 ,V6 }
(2) {V1 ,V3 ,V6 } { V2 ,V4 , V5 }
(3) {V1 ,V3 ,V6 ,V4 } { V2, V5 }
V3
到顶点全部进入生成树为止
V1
6
5
1
V2
V4
V3
V5
V6
步骤 U
V-U
(0) {V1 } { V2 ,V3 ,V4 , V5 ,V6 } (1) {V1 ,V3 } { V2 ,V4 , V5 ,V6 }
西安电子科技大学软件学院 - School of Computer Software, Xidian University, China
V1
6
5
1
V2 5
5 V4
V3
36
42
V1
6
5
V5 6 V6
V1
1
1
V2
V4
V3
V2 5
V4
V3
6
4
3
42
V5
V6
V5
V6
西安电子科技大学软件学院 - School of Computer Software, Xidian University, China
3
最小代价生成树
两种常用的构造最小生成树的方法: ➢ 普里姆算法 ➢ 克鲁斯卡尔算法
36 V5 6
V4 V6
(0) {V1 } { V2 ,V3 ,V4 , V5 ,V6 } (1) {V1 ,V3 } { V2 ,V4 , V5 ,V6 } (2) {V1 ,V3 ,V6 } { V2 ,V4 , V5 } (3) {V1 ,V3 ,V6 ,V4 } { V2, V5 }
7
最小代价生成树
普里姆算法求最小生成树:从 生成树中只有一个顶点开始, 到顶点全部进入生成树为止
V1 1
V3 4 V6
V1
6
5
V2 5
5 V4
V3
6
4
V5
V6
步骤 U
V-U
(0) {V1 } { V2 ,V3 ,V4 , V5 ,V6 } (1) {V1 ,V3 } { V2 ,V4 , V5 ,V6 }
5
最小代价生成树
普里姆算法求最小生成树:从 生成树中只有一个顶点开始, 到顶点全部进入生成树为止
V2 5 3 V5
V1 1 V4
V3 42
V6
V1
6
5
1
步骤 U
V-U
V2 5
5 V4
V3
36
42
V5 6 V6
(0) {V1 } { V2 ,V3 ,V4 , V5 ,V6 } (1) {V1 ,V3 } { V2 ,V4 , V5 ,V6 } (2) {V1 ,V3 ,V6 } { V2 ,V4 , V5 } (3) {V1 ,V3 ,V6 ,V4 } { V2, V5 }
西安电子科技大学软件学院 - School of Computer Software, Xidian University, China
4
普里姆(Prim)算法
假设N=(V,E)是连通网,TE是N上最小生成树中边的集合。 算法从U={u0}(u0∈V),TE={}开始,重复执行下述操作:
在所有u∈U,v∈V-U的边(u,v)中找一条代价最小的边(u0 ,v0),将 其并入集合TE,同时将v0并入U集合。
西安电子科技大学软件学院 - School of Computer Software, Xidian University, China
9
最小代价生成树 V1
普里姆算法求最小生成树:从 生成树中只有一个顶点开始, 到顶点全部进入生成树为止
1
V2 5
V4
V3
42
V6
V1 6
V2 5 V3
6 V5 6
(2) {V1 ,V3 ,V6 } { V2 ,V4 , V5 }
西安电子科技大学软件学院 - School of Computer Software, Xidian University, China
8
最小代价生成树
普里姆算法求最小生成树:从 生成树中只有一个顶点开始, 到顶点全部进入生成树为止
(4) {V1 ,V3 ,V6 ,V4 ,V2 } { V5 }
(5) {V ,V ,V ,V ,V ,V } { } 西安电子科技大学软件学院
1364
- School of Computer Software, Xidian University, China
2
5
6
最小代价生成树 V1
1பைடு நூலகம்
普里姆算法求最小生成树:从 生成树中只有一个顶点开始,
西安电子科技大学软件学院 - School of Computer Software, Xidian University, China
10
最小代价生成树 V1
普里姆算法求最小生成树:从 生成树中只有一个顶点开始, 到顶点全部进入生成树为止
1
V2 5
V4
V3
3
42
V5
V6
V1
步骤 U
V-U
V2 V3