- 10
- 0
- 约1.31万字
- 约 12页
- 2019-10-13 发布于湖北
- 举报
南京外国语学校 史钋镭
最小生成树
一、图的最小生成树 (MST)
树的一个定理:N 个点用N-1条边连接成一个连通块,形成的图形只可能是树,没有别
的可能。
一个有N 个点的图,边一定是大于等于N-1条的。图的最小生成树,就是在这些边中
选择N-1条出来,连接所有的N 个点。这N-1条边的边权之和是所有方案中最小的。
二、最小生成树用来解决什么问题?
就是用来解决如何用最小的 “代价”用N-1条边连接N 个点的问题。
【例01】城市公交网建设问题
【问题描述】
有一张城市地图,图中的顶点为城市,无向边代表两个城市间的连通关系,边上的权为
在这两个城市之间修建高速公路的造价,研究后发现,这个地图有一个特点,即任一对城市
都是连通的。现在的问题是,要修建若干高速公路把所有城市联系起来,问如何设计可使得
工程的总造价最少?
【输入格式】
n (城市数,1 n 100)
e (边数)
以下e行,每行3个数i,j,wij,表示在城市i,j 之间修建高速公路的造价。
【输出格式】
n-1行,每行为两个城市的序号,表明这两个城市间建一条高速公路。
【输入样例】
5 8
122
2 59
54 7
4 110
13 12
1 12
第 页 共 页
南京外国语学校 史钋镭
4 36
533
2 3 8
【输出样例】
1 2
2 3
3 4
3 5
方法一:Prim算法
Prim 算法采用与Dijkstra、Bellman-Ford 算法一样的 “蓝白点”思想:白点代表已经进入最
小生成树的点,蓝点代表未进入最小生成树的点。
算法描述:
以1为起点生成最小生成树,min[v]表示蓝点v 与白点相连的最小边权。
MST 表示最小生成树的权值之和。
1 初始化:min[v] ∞(v≠1); min[1] 0;MST 0;
2 for (i 1;i n;i++) //实际程序从第一个点,起点开始
寻找min[u]最小的蓝点u。
将u 标记为白点
MST+ min[u]
for 与白点u 相连的所有蓝点v
if(w[u][v]min[v])
min[v] w[u][v];
3 算法结束: MST 即为最小生成树的权值之和
图例 说明 不可选 可选 已选
此为原始的加权连通图。每条
- - -
边一侧的数字代表其权值。
2 12
第 页 共 页
南京外国语学校 史钋镭
顶点D 被任意选为起始点。
顶点A、B、E 和F 通过单条
A, B,
边与D 相连。A 是距离D 最 C,G D
E, F
您可能关注的文档
最近下载
- (民主生活会)2025年度班子成员相互批评意见清单+对照检查查摆问题清单+批评与自我批评意见建议.docx VIP
- 基于单片机的智能衣柜控制系统设计.docx VIP
- 原神家具负荷表及计算器说明书(多功能小鹏).docx VIP
- 2025 年大学轨道交通信号与控制(信号系统)试题及答案.doc VIP
- 生活中的化学.ppt VIP
- XX村新任支部书记任职发言稿.docx VIP
- 痛苦的缺席——试论苏童的《米》.pdf VIP
- 2024高端装备制造业技术升级改造合同.docx VIP
- 603A使用说明书.doc VIP
- 江苏图集-JS2016Q5 住宅厨卫组合变压式耐火排烟气道系统 江苏省工程建设企业标准设计图集.pdf VIP
原创力文档

文档评论(0)