最小生成树-数学建模

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

27
上一页 下一页 主 页
模型求解
对表1给出的数据,加权图的边权矩阵如下: [1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 4 4 4 4 4 5 5 5 5 6 6 6 7 7 8;
234567893456789456789 5 6 7 8 9 6 7 8 9 7 8 9 8 9 9; 0.5 1 0.89 0.14 1 1 1 1 1 1 0.62 1 1 1 1 1 1 1 1 1 0.5 0.87 0.67 0.75 0.75 1 1 1 1 1 1 1 1 0 1 1]
用Kruskal算法可求出最小生成树,在前面 给出的Kruskal算法的MATLAB程序中,边权矩阵b 的值改为此处的边权矩阵,顶点数n改为9即可。
上一页 下一页 主 页
T= 7 8 15 12 39 46 47 45 13
c = 4.4300
机器的分组:{3, 9},
{1,2,5},
{4,6,7,8}。
2
5
7
1
5
3
6
10
3号 子树
4
3
9 2号
子树
A
15
返上一回页 下一页 主 页
整理边权矩阵
初始化:j0, T, c0, k0; 对所有顶点i ,t(i)i .
B: 图的边权矩阵; T: 生成树的边集; C: 生成树的权; t: 顶点所属子树的编号
jj+1
t(B(1,j))t(B(2,j)) Y
N
TT(B(1,j),B(2,j)), cc+B(3,j),kk+1,i 0
A
34
上一页 下一页 主 页
最小生成树问题的0-1规划模型
7]data: !Distance matrix, it need not be symmetirc;
8] distance = 0 8 5 9 12 14 12 16 17 22
9]
8 0 9 15 16 8 11 18 14 22
10]
for j=1:n
if t(j)==tmax if k==n-1
t(j)=tmin;
break ;
end
end
end
end
end
T,c
Kruskal 算 法
程序运行结果:
T=
1
1
4
4
5
1
23
3
2
5
4
c=
17 A
2 7
5
6
3
返上一回页 下一页
19
主页
Prim算法
● 基本思想:任选一个顶点v0开始,连接 与v0最近的顶点v1,得子树T1,再连接与T1 最近的顶点v2得子树T2,如此继续下去, 直到所有顶点都用到为止。
● 时间复杂度:O(n2) , n为图的顶点数
A
20
上一页 下一页 主 页
1) Kruskal算法和Prim算法都蕴涵了 贪婪法的思想,是贪婪法;
2) 贪婪法的基本思想:把解看成是 由若干个部件构成,每一步求出 解的一个部件(不是从整体或长 远的角度考虑,只是局部或当前 的最好选择)。求出的一个个部 件组合而作为最终的解。
Kruskal算法
算法的MATLAB程序实 现 Prim算法
A
12
返上一回页 下一页 主 页
Kruskal 算

基本思想:
最初把图的n个顶点看作n个分离的部分树,每个树具有
一个顶点,算法的每一步选择可连接两分离树的边中权最
小的边连接两个部分树,合二为一,部分树逐步减少,直到 只有一个部分树(n-1步之后)便得到最小生成树。
4
3
9
最经济的网络不应该有任何封闭的
回路。
A
6
上一页 下一页 主 页
引例:计算机网络的线路设计
生成树或支撑树(spanning tree):G的子
图且是树,其顶点集等于G的顶点集;
8 1
5
7
2
1
5
6 如何简便地得到
3
10
左图的生成树?
4
3
它应有几条边?
9
A
7
上一页 下一页 主 页
引例:计算机网络的线路设计
1
.5
.5 3
1
2
9
.14
5
80
.87
7
.75
.67 4
6
.5 3
.5
1
2
9
.14
5
80
7
.75
.67 4
6
模型结果
机器的分组: {3,9},
.5 3 9
.5
1
2
.14
{1,2,5},
5
{4,6,7,8}。
8
0 7
.75
.67 4
6
你能给出对应于该机器分组
的零件分类吗?
A
30
返上一回页 下一页 主 页
jV
(各边不构成圈)
A
31
上一页 下一页 主 页
最小生成树问题的0-1规划模型
例 (最优连线问题)我国西部的SV地区共有1个城市(标 记为1)和9个乡镇(标记为2--10)组成,该地区不久将用 上天然气,其中城市1含有井源.现要设计一供气系统,使得 从城市1到每个乡镇(2--10)都有一条管道相连,并且铺设 的管子的量尽可能的少. 下表给出了城镇之间的距离.求SV 地区的最优连线.
8
1
2
5
7
时间复杂度: O(m)
1
5
6 其中m为图的边数
3
10
4
3A
13
上一页 下一页 主 页
Kruskal 算 法
步骤
1) 选择边e1,使得w(e1)尽可能小;
2) 若已选定边 e1,e2,..e.i,,则从 E\{e1,e2,..ei.}, 中选取 ei 1,使得: i) G [e { 1,e2,.e .i .1} , 为]无圈图,
树图——直观形象的表示工具
类似于自 然界中的

赵明 赵雷 赵雨
赵根 赵亮
赵丽
赵虹 赵云 赵霞
赵松 赵梅
形象地表 示家族
A
3
上一页 下一页 主 页
树图——直观形象的表示工具
树: 没有圈的连通图 • 树中任意两点间有唯一路径。 • 树的边数恰好为顶点数减1。
A
4
上一页 下一页 主 页
引例:计算机网络的 线路设计
2 边权矩阵:
6 b=[1 1 1 2 2 3 3 4; 2 4 5 3 5 4 5 5;
4 9
3
8 1 5 6 7 9 10 3];
A
17
上一页 下一页 主 页
b=[1 1 1 2 2 3 3 4;2 4 5 3 5 4 5 5;8 1 5 6 7 9 10 3];
[B,i]=sortrows(b',3);B=B’; m=size(b,2);n=5;
范例:制造系统的分组技术
分组技术是设计制造系统的一种方 法,它把生产零件的机器分组,相应地 把需生产的零件分类,使零件跨组加工 的情形尽量少,最理想的情况是使每个 零件的加工,都在组内完成。
假设有13种零件,需在9台机器上 加工。在各台机器上加工的零件号在下 表中给出。
A
23
上一页 下一页 主 页
范例:制造系统的分组技术
机器 1 2 3 4 5 6 7 8 9
加工 2,3, 2,7, 1,6 3, 3,7, 5 4, 4, 6
的零 7,8, 8, 件 9, 11,1
12, 2
5, 8,9, 10 12,
13
10 10
13
A
24
上一页 下一页 主 页
范例:制造系统的分组技术
建模
设用Mi表示需由机器i加工的零件集,对任 意两台机器i,j, 定义相异度:
最小生成树算法
参考书: 1.傅鹂 龚劬 刘琼荪 何中市 《数学实验》科学出版社 2.张绍民 李淑华 《数据结构教程C语言版》中国电力出版社
主讲:龚 劬 制作:龚 劬
A
上一页 下一页
1
主页
主要内容
一个例子 基本概念与结论
Kruskal算法
Prim算法
最小生成树问题的0-1规划模型
A
2
上一页 下一页 主 页
最小生成树问题的0-1规划模型
设 d i j 是两点i与j之间的距离, x ij = 0 或1(1表示连接,
0表示不连接),并假设顶点1是生成树的根.则
min
dijxij;
(i, j)A
s.t.
x1j 1,(根至少有一条边连接到其他边)
jV
xji =1,i 1,(除根外,每个点只有一条边进入)
i i+1
N
k=n-1或j=m
Y
T, c
t(i)=max{t(B(1,j)), t(B(2,j))
Y
N
t(i) min{t(B(1,j)), t( B(2,j)),
终止
Y
i=n
N
Kruskal 算 法
例 : 用 Kruskal 算 法 求 引 例 中 的 加 权
图的最小生成树。
8 1
5
7
1
5
3
10
A
32
上一页 下一页 主 页
最小生成树问题的0-1规划模型
A
33
上一页 下一页 主 页
最小生成树问题的0-1规划模型
解: 按照数学规划写出相应的LINGO程序,
MODEL: 1] sets: 2] cities/1..10/:level; !level(i)= the level of city; 3] link(cities, cities): 4] distance, !The distance matrix; 5] x; ! x(i,j)=1 if we use link i,j; 6] endsets
城市电信局有许多业务如收费, 营业,112,114等,希望在全市范围 实现计算机联网服务,共享各种资源。 一个主要关心的问题是:用数据通讯 线把一组站点联结起来,而不允许通 讯线在非站点处相交,如何连接可使 通讯线的花费最小?
A
5
上一页 下一页 主 页
引例:计算机网络的线路设计
8
1
2
5
7
1
5
6
3
10
w(T ),即w(T ) = w(e).
eE1
如果生成树T *的权 w(T *)是G 的所有生成树的权中最 小者,则称 T*是G 的最小生成树 ,简称为 最小树 ,即
w(T*) = min{w(T )},式中取遍G 的所有生成树 T.
T
A
11
返上一回页 下一页 主 页
最小生成树算法及其MATLAB程序实 现
确定应在哪些站点之间铺设通讯 线路,是否可看作是在相应的加 权图中构造最小费用的生成树的 问题?
A
8
上一页 下一页 主 页
引例:计算机网络的线路设计
最小生成树
最大生成树 1) 一个完全图Kn有多少不同 的生成树?
2) 如何求其最小生成树?
A
9
上一页 下一页 主 页
引例:计算机网络的线路设计
10个顶点的完全图,其不同的生成树就有 一亿棵。
(i,
j)
| =
Mi
Mj
|
| Mi Mj |
A
25
上一页 下一页 主 页
建模
(i,
j)
| =
Mi
Mj
|
| Mi Mj |
“”:对称差,
分子:在机器i但不在机器j上加工,或在机
器j但不在机器i上加工的零件数。
分母:或在机器i,或在机器j上加工的零件数。
显然 01
1) (i,j)=0和(i,j)=1分别
表示什么?2) 表达了什么?
建模
构造加权图 以机器为顶点,作一个完全图,每条边
(i,j)被赋予权(i,j)。
原问题的转化
加权图的最小生成树是由那些相异度最
小的边构成的连通图,如果希望把机器分成k
个组,就继续删去最小生成树上权最大的k-1
条边。于是得到k个分离的子树,每棵树的顶
点集就构成各机器组。
A
A
21
上一页 下一页 主 页
1) 贪婪法可被用于各种各样问题的 处理。该法只是一种试探法,计 算上简便有效,可提供正确解的 一个近似。但一般情况下,不能 保证输出的解是正确的。其正确 性需要证明,这往往比较困难。
2) 已证明,求最小生成树的Kruskal算
法和Prim算法都是正确的
A
22
返上一回页 下一页 主 页
t=1:n; k=0; T=[ ]; c=0;
for i=1:m
if t(B(1,i))~=t(B(2,i))
k=k+1; T(k,1:2)=B(1:2,i), c=c+B(3,i)
tmin=min(t(B(1,i)),t(B(2,i)));
tmax=max(t(B(1,i)),t(B(2,i)));
16]
17 14 12 15 15 8 6 11 wk.baidu.com 10
17]
22 22 17 15 1A5 16 11 11 10 0;
35
18] enddata
上一页 下一页 主 页
最小生成树问题的0-1规划模型
19]n=@size(cities); !The model size;
ii) w(ei1) 是满足i)的尽可能小的权,
3) 当第2)步不能继续执行时,则停止.
定理 由Kruskal算法构作的任何生成树
T *=G [e { 1 ,e2,.e . .1 } ,都A ]是最小生成树.
14
上一页 下一页 主 页
1号 子树
Kruskal 算 法
给每个子 树一个不 同的编号
8
1
5 9 0 7 9 11 7 12 12 17
11]
9 15 7 0 3 17 10 7 15 15
12]
12 16 9 3 0 8 10 6 15 15
13]
14 8 11 17 8 0 9 14 8 16
14]
12 11 7 10 10 9 0 8 6 11
15]
16 18 12 7 6 14 8 0 11 11
一般地,n个顶点的完全图,其不同的生成 树个数为nn-2。
30个顶点的完全图就有3028个生成树,求 最小生成树时用穷举法是无效的。
A
10
返上一回页 下一页 主 页
最小生成树与算法
定义 设T = (V , E1)是赋权图G = (V , E)的一棵生 成树,称T中全部边上的权数之和为生成树的权,记为
相关文档
最新文档