- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
标准文档
实用文案
一、树及生成树的基本概念
树是无向图的特殊情况,即对于一个N个节点的无向图,其中只有N-1条边,且图中任意两点间有且仅有一条路径,即图中不存在环,这样的图称为树,一般记为T。树定义有以下几种表述:
(1)、T连通、无圈、有n个结点,连通有n-1条边;(2)、T无回路,但不相邻的两个结点间联以一边,恰得一个圈;(3)、T连通,但去掉任意一边,T就不连通了(即在点集合相同的图中,树是含边数最少的连通图);(4)、T的任意两个结点之间恰有一条初等链。
例如:已知有六个城市,它们之间要架设电话线,要求任意两个城市均可以互相通话,并且电话线的总长度最短。若用六个点v1…v6代表这六个城市,在任意两个城市之间架设电话线,即在相应的两个点之间连一条边。这样,六个城市的一个电话网就作成一个图。任意两个城市之间均可以通话,这个图必须是连通图,且这个图必须是无圈的。否则,从圈上任意去掉一条边,剩下的图仍然是六个城市的一个电话网。图5-6是一个不含圈的连通图,代表了一个电话线网。
生成树(支撑树)
定义:如果图G’是一棵包含G的所有顶点的树,则称G’是G的一个支撑树或生成树。例如,图5-7b是图5-7a的一个支撑树。
定理:一个图G有生成树的条件是G是连通图。
证明:必要性显然;
充分性:设图G是连通的,若G不含圈,则按照定义,G是一个树,从而G是自身的一个生成树。若G含圈,则任取G的一个圈,从该圈中任意去掉一条边,得到图G的一生成子图G1。若G1不含圈,则G1是G的一个生成树。若G1仍然含圈,则任取G1的一个圈,再从圈中任意去掉一条边,得到图G的一生成子图G2。依此类推,可以得到图G的一个生成子图GK,且不含圈,从而GK是一个生成树。
寻找连通图生成树的方法:
破圈法:从图中任取一个圈,去掉一条边。再对剩下的图重复以上步骤,直到不含圈时为止,这样就得到一个生成树。
取一个圈(v1,v2,v3,v1),在一个圈中去掉边e3。在剩下的图中,再取一个圈(v1,v2,v4,v3,v1),去掉边e4。再从圈(v3,v4,v5,v3)中去掉边e6。再从圈(v1,v2,v5,v4,v3,v1)中去掉边e7,
这样,剩下的图不含圈,于是得到一个支撑树,如图所示。
避圈法:也称为生长法,从图中某一点开始生长边,逐步扩展成长为一棵树,每步选取与已入树的边不构成圈的那些边。
二、最小生成树
概念:设G=(V,E)是无向连通带权图,即一个网络。E中每条边(v,w)的权为c[v,w]。所有生成树G’上各边权的总和最小的生成树称为G的最小生成树。
应用:如在设计通信网络时,用图的顶点表示城市,用边(v,w)的权c[v,w]表示建立城市v、w之间的通信线路所需的费用,则最小生成树就给出了建立通信网络最经济的方案。
性质:设G=(V,E)是连通带权图,U是V的真子集。若(u,v)?E,且u?U,v?V-U,且在所有这样的边中,(u,v)的权c[u,v]最小,那么一定存在G的一棵最小生成树,它以(u,v)为其中一条边。这个性质也称为MST性质。
算法:
经典方法有两种:kruskal、prim算法(贪心思想):一次生成一条最短边。
【Prim算法】:
算法思想:任意时刻的中间结果都是一棵树,每次花费最小的代价,用一条边把不在树中的结点加进来。按结点来贪,因此适用于稠密图的处理.
算法内容:
①设置顶点集合V和边集E,它们的初始状态为空集。
②任意选取一个顶点A加入V中。
③重复以下过程直到V中已经包含原图的所有节点:
1、选一条权值最小的边(u,v),并使其满足u,v两节点只有一个在点集V中。2、将两个节点中不在V的那个点加入集合V中,并将边(u,v)加入边集E中。
④所得的子图G’=(V,E)即为所求的最小生成树。关键:找出当前最优得一条边,穷举每一条不在集合E中的边,找出符合条件且最优的边。
时间复杂度:O(V*E),即顶点数乘以边数。
代码:
var
n,i,j,k,min,sum:longint;
a:array[1..1000,1..1000]of longint;
b,d:array[1..1000]of longint;
procedure prim;begin
sum:=0;??for i:=1 to n do d[i]:=a[1,i];??for j:=2 to n do
begin?? min:=maxlongint;??? for i:=1 to n do????? if (d[i]min)and(d[i]0) then
begin???????? min:=d[i]; k:=i;??????end;?? sum:=sum+d[k]; d[k]:=0;????for i:=1 t
您可能关注的文档
最近下载
- 2025高考数学冲刺复习:立体几何与空间向量(试卷+答案解析).pdf VIP
- 侵犯名誉权与隐私权的法律规定与应对策略.pptx VIP
- 武汉体育学院专业技术职务量化评审办法试行.doc VIP
- 网络侵权培训课件案例.pptx VIP
- 2023-2024学年广东省珠海市凤凰中学八年级(上)竞赛物理试卷(附答案解析).docx VIP
- 2025年东海中学八年级物理竞赛试卷及答案.doc VIP
- EN 50530-2010+A1-2013 并网光伏逆变器的整体效率.pdf VIP
- 初三化学上册第四单元自然界的水各节习题.doc VIP
- 武汉体育学院教师专业技术职务任职资格申报评审条件【参考】.doc VIP
- 初中数学专题:一次函数背景下的动点问题(含答案).docx VIP
文档评论(0)