- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 离散数学 * Kruskal 算法应用举例 9 5 1 4 8 7 6 2 3 6 G H 9 4 5 7 2 10 12 3 11 3 6 10 8 e1 e2 e3 e4 e5 e6 e7 e8 e9 e10 将边按权值排序后: {e2, e9, e7, e8, e3, e6, e10, e5, e4, e1} i ET={} {e2} i {e2, e9} i {e2, e9 , e7} i i i {e2, e9 , e7 , e6} i i {e2, e9 , e7 , e6 , e5} i 已经达到5(6-1)条边,算法结束。 * 离散数学 * 定理8.3.1 对赋权图G(p,q) , 用Kruskal算法得到的G的子图T*必是最优树。 证明:显然T*是G的生成树。设E(T*)={e1,e2,…,ep-1}, T(G)={T|T是G的生成树且T≠T*}。 令:f: T(G) →{1,2…,n} ,f(T)=min{i|ei∈E(T*)- E(T)}。假设T*不是最优树,令T是使f(T)取最大值的最优树(w(T)w(T*)), 设f(T)=k,于是e1,e2,…,ek-1∈E(T*)∩E(T),显然 ek∈ E(T*)但ek ?E(T)。 Kruskal算法的正确性 * 离散数学 * 由定理8.1.2(4)知,T+ek有唯一回路C。在C中取一条边ek’∈E(T)-E(T*),作T’=(T+ ek)-ek’,则 T’是p-1条边的连通图,从而T’是G的生成树,且有:w(T’)=w(T)+w(ek)-w(ek’),由Kruskal算法知: w(ek)≤w(ek’),从而w(T’) ≤ w(T),即T’也是最优树,但f(T’)k,此与T的选取矛盾,故T*是最优树。 Kruskal算法的正确性 边ek’是存在的,若不然,即回路C的边全是{e1,…,ek-1,ek}?E(T*)中的边,此与T*是树矛盾。 * 离散数学 * e1 e2 e3 e4 e1 e2 e3 e5 T* T e5 e6 e4 e6 e7 e7 Kruskal算法的正确性证明示意图 ek= ek’= * 离散数学 * Kruskal算法的正确性(1) 定理8.3.1 对赋权图G(p,q) , 用Kruskal算法得到的G的子图T*必是最优树。 证明:假设T*不是最优树,令k是G的最优树与T*有共同边的数目中的最大值。 令T为最优树与T*有k条共同边的最优树。 T≠T* ? ? ek+1 : ek+1? E(T)且ek+1∈E(T*) 。由定理8.1.2(4)知,T+ ek+1中含唯一的回路C,C至少有条边ek’不在T*中。做T’= (T+ek)– ek’ , 于是T’是有p–1条边的连通图。T’是G的生成树。显然,w(T’)=w(T)+w(ek+1) –w(ek’)。由算法知,w(ek+1) ? w(ek’) 。这说明T’也是G的最优树。但T’与T*有k+1条共同边。矛盾。故T*是最优树。 * 离散数学 离散数学 第八章 树 * 离散数学 * §8.1 树的定义 定义8.1.1: 连通无回路的图称为树。 让我们来看一下《数据结构》中的树的定义: 一棵树是一个或多个顶点的有限集合T,使得,⑴有一个特殊标识的顶点,称为根; ⑵除根以外的其余顶点形成n≥0个划分,T1 ,T2 ,… ,Tn,它们也都是树,称为根的子树。 这里的树的定义更为一般。《数据结构》中树的定义与此定义的区别只是指定了一个特殊的顶点 ——根,并由此使得顶点之间形成了层次结构,而它同样也是一个无回路的连通图。 * 离散数学 * 树的举例 b c d e a 树G: 取a为根: a b c d e 取b为根: b a d c e 取d为根: d b e a c 取e为根: e d b a c 显然它们是同构的。 数据结构中的树指定了一个特殊的顶点为根。 * 离散数学 * 树的应用举例 树的用途极其广泛,比如计算机网络中的最短通路、二叉树排序,各种层次结构的表示、等等。可以说,在计算机领域中几乎处处可以见到她的婆娑身影。 例如:右图就是用树表示的算术表达式: (a+b)* c – d /c a b + c * d e / – * 离散数学 * 树中只有单通路 定理 8.1.1 树T中任何两个顶点之间恰有一条通路。 证明: (存在性)因为树是连通图,所以任意两点之间有通路。 (唯一性)设u,v∈V(T),若u和v之间有两条不同的(u,v)?通路P1,P2,于是必有边xy,xy∈E(P1),但xy?E(P2),显然H=P1∪P2-xy是连通图,从而H中存在(x,y
文档评论(0)