下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第Python经典贪心算法之Prim算法案例详解最小生成树的Prim算法也是贪心算法的一大经典应用。Prim算法的特点是时刻维护一棵树,算法不断加边,加的过程始终是一棵树。
Prim算法过程:
一条边一条边地加,维护一棵树。
初始E={}空集合,V={任选的一个起始节点}
循环(n–1)次,每次选择一条边(v1,v2),满足:v1属于V,v2不属于V。且(v1,v2)权值最小。
E=E+(v1,v2)
V=V+v2
最终E中的边是一棵最小生成树,V包含了全部节点。
以下图为例介绍Prim算法的执行过程。
Prim算法的过程从A开始V={A},E={}
选中边AF,V={A,F},E={(A,F)}
选中边FB,V={A,F,B},E={(A,F),(F,B)}
选中边BD,V={A,B,F,D},E={(A,F),(F,B),(B,D)}
选中边DE,V={A,B,F,D,E},E={(A,F),(F,B),(B,D),(D,E)}
选中边BC,V={A,B,F,D,E,c},E={(A,F),(F,B),(B,D),(D,E),(B,C)},算法结束。
Prim算法的证明:假设Prim算法得到一棵树P,有一棵最小生成树T。假设P和T不同,我们假设Prim算法进行到第(K–1)步时选择的边都在T中,这时Prim算法的树是P',第K步时,Prim算法选择了一条边e=(u,v)不在T中。假设u在P'中,而v不在。
因为T是树,所以T中必然有一条u到v的路径,我们考虑这条路径上第一个点u在P'中,最后一个点v不在P'中,则路径上一定有一条边f=(x,y),x在P'中,而且y不在P'中。
我们考虑f和e的边权w(f)与w(e)的关系:若w(f)w(e),在T中用e换掉f(T中加上e去掉f),得到一个权值和更小的生成树,与T是最小生成树矛盾。
若w(f)w(e),Prim算法在第K步时应该考虑加边f,而不是e,矛盾。
因此只有w(f)=w(e),我们在T中用e换掉f,这样Prim算法在前K步选择的边在T中了,有限步之后把T变成P,而树权值和不变,从而Prim算法是正确的。
请仔细理解Prim算法——时刻维护一棵生成树。我们的证明构造性地证明了所有地最小生成树地边权(多重)集合都相同!
N个点M条边的无向连通图,每条边有一个权值,求该图的最小生成树。
最后,我们来提供输入输出数据,由你来写一段程序,实现这个算法,只有写出了正确的程序,才能继续后面的课程。
第1行:2个数N,M中间用空格分隔,N为点的数量,M为边的数量。(2=N=1000,1=M=50000)
第2-M+1行:每行3个数SEW,分别表示M条边的2个顶点及权值。(1=S,E=N,1=W=10000)
输出最小生成树的所有边的权值之和。
914
124
238
347
459
5610
672
781
897
2811
392
796
364
4614
188
输出示例
37
maxv=10001
n,m=list(map(int,input().split()))
V=set([1])
cost=[]
foriinrange(n+1):
a=[]
forjinrange(n+1):
a.append(maxv)
cost.append(a)
foriinrange(m):
s,e,w=list(map(int,input().split()))
cost[s][e]=w
cost[e][s]=w
closet=[0]
lowcost=[maxv]
foriinrange(1,n+1):
closet.append(1)
lowcost.append(cost[1][i])
ans=0
foriinrange(n-1):
forjinrange(2,n+1):
if(lowcost[j]!=0)and(lowcost[j]lowcost[k]):k=j
forjinrange(2,n+1):
ifco
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中小学班主任业务考试题库(附答案解析)
- 第三课 同步提升练习 高中政治必修二经济与社会 统编版 含答案
- 2026年湖南省永州市蓝山县数学四年级下学期期末达标检测模拟试题(含答案解析)
- 2026年农业技术员职称考试考点解析模拟试题带答案
- 2026学年吉林省磐石市三年级语文期末点睛提升专项特训题附答案详细答案和解析
- 2026学年海南省海口市五年级数学期末自测模拟重点专题卷详细参考解析详细答案和解析
- 2026学年河南省项城市六年级数学期末自测模拟全真模拟题(详细参考解析)详细答案和解析
- 完整版2024年中级注安《化工安全》考试真题及答案解析
- 2026年城乡环境卫生与废弃物分类处理知识考察试题及答案解析
- 2026年内蒙古科协党群政工专员招聘考试练习试卷(含答案)
- 浪潮式发售(全新升级版) (杰夫·沃克)
- 中医红外热像采集与分析技术规范
- 定语从句专项训练50题可打印
- 重复经颅磁刺激治疗与护理
- 火灾与爆炸的预防措施
- 电力工程竣工验收报告及流程
- CFSLM治疗先天性重度上睑下垂的临床体会
- 2025年中国联通校园招聘笔试参考题库含答案解析
- 经导管主动脉瓣置换术围手术期共病诊治中国专家共识
- 钢结构监理实施细则
- 高填深挖路基监控量测施工方案 - 副本
评论
0/150
提交评论