离散数学及其应用课件第9章第1-2节
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6
定理9.1.1的证明(续)
➢(5)(6)。首先用反证法证明T中无回路。假设T中 有回路,设C是一条包含边(u,v)的简单回路,在C中删 去边(u,v)得到从u到v的一条简单通路,因而从u到v的 简单通路不唯一,与命题(5)矛盾。
若在T的任意两个不邻接的结点间加上一条边e,则e和联 接这两个结点的唯一一条简单路构成T+e的唯一的一条回路。 ➢(6)(1)。根据命题(6),任意两个结点间存在一条 通路,所以T是连通的,结论成立。
定理9.2.1 图G有生成树,当且仅当G是连通的。 证明 (破圈法)首先证明充分性。当图G是连通的,如果图G 是一棵树时,G本身就是生成树。当连通图G不是一棵树时, G中有回路。对于G的一个回路,删去回路上的一条边,得 到G的生成子图G。若G仍有回路,继续删去其中一个回路 上的一条边。重复这个过程,直到得到G的生成子图中没有 回路,从而得到G的一棵生成树TG。
b
b
b
a
c
a
ca
c
d
e
(1)
d
e
(2)
d
e
(3)
9.2.2 最小生成树及其应用
定义9.2.2 设无向连通带权图G=(V, E, W),T是G的一棵 生成树,T各边带权之和称为T的权,记作W(T)。G的所 有生成树中带权最小的生成树称为最小生成树。
最小生成树的典型算法有Kruskal算法、Prim算法和Sollin算 法
解 设有x片树叶, 2(1+3+x-1)=13+32+x 解得x=3,故T有3片树叶. T的度数列为1, 1, 1, 2, 2, 2, 3
T1
T2
T3
10
生成树
定义9.2.1 给定连通图G,如果它的生成子图TG是树,则称TG为 G的生成树。生成树TG中的边称为树枝;G中的不在TG中的 边称为弦;TG的所有弦的集合称为生成树TG的余树。 例如 图中黑边构成生成树 红边构成余树
实例
例5 求图的一棵最小生成树
W(T)=38
19
最小生成树的应用
例9.2.5 最小生成树聚类算法。 ➢设有一组离散数据D={a1,a2,…an},D中的任意两个数据ai,aj的相似 程度可以用一个相似度函数d(ai,aj)来度量,称为这两个数据的距离。 给定一个正整数k(1<k<n),D的一个k聚类是D的一个k划分 ,使得 同一子类中的数据间的距离尽可能地“近”,不同子类的数据间的距 离尽可能地“远”。 ➢定义两个不同的子类Cs和Ct的距离D(Cs,Ct)为Cs中的数据和Ct 中的数据的相似度的最小值,即 D(Cs ,Ct ) min{d (ai , a j ) | ai Cs , a j Ct} k聚类 的最小间隔 D( ) min{D(Cs ,Ct ) | Cs ,Ct ,1 s t k}
因此,数据集D上的k聚类就是求使得 D( ) 最大的k划分。
最小生成树的应用
可以用最小生成树解决这个问题。 首先可以构造一个带权完全图G=(V, E, W),其中的每个
结点是数据集D中的一个结点,即V={ a1,a2,…an },对于任 意ai, ajV,它们的距离d(ai,aj)作为边(ai,aj)的权值。在这个 带权图上求最小生成树TG,在TG上删去权值最大的k-1条边, 成为有k个连通分支的不连通的树,这k个连通分支就是所求 聚类的k个子类 C1, C2 ,...Ck ,并且具有最大的 D( ) 。
4
定理9.1.1的证明
➢(1)(2)。用反证法证。对u,vV,若T中删去任一边(u,v) 后仍连通,则从u到v存在一条通路L,这条通路L加上(u,v)后 形成回路,和T无回路矛盾。 ➢(2)(3)。对结点个数n用数学归纳法来证明e=n-1:
当结点数为n=1时,T是平凡图,结论显然成立。 当结点数为n=2时,T是连通的但删去任一边后,便不连通,则 e=1,结论成立。 假设结点数为nk(k>1)时,结论成立。当结点数为n=k+1时, 只有删去T中的一个1度结点及其关联的边的图T,才满足命题(2) 的连通性。根据归纳假设,T有k个结点,所以e=n-1,而e=e-1, n=n-1。因此,将删去的1度结点及其关联的边添入T得到图T ,T 仍连通且e=n-1。
(a)
(b)
无向树的性质
定理9.1.1 对于有n个结点,e条边的无向树T,下列的命题等价。 (1) T是无回路的连通图。 (2) T是连通的但删去任一边后,便不连通。 (3) T是连通的且e=n-1。 (4) T中无回路且e=n-1。 (5) 在T的每一对结点之间有唯一的一条简单路。 (6) T中无回路,但在任意两个结点间增加一条边,得到一条且仅 一条回路。
注意: 余树一般不是树
11
例题
例9.2.1 在图9.2.1中,哪些是图9.2.1(1)的生成树?
a
e
a
e
a
e
b c
fb
c
d
fb
d
c
f d
(1)
(2)
(3)
a
e
a
e
a
b c
f d
(4)
b
f
c
d
(5)
b
f
c
d
(6)
解 (2)(5)是(1)的生成树。(3)(4)(6)不是(1)的生成树。
生成树的存在性
证明必要性。若图G有生成树,由于树是连通的,所以G 是连通的。
13
求生成树
求生成树的避圈法: 设图G=(V,E),|V|=n,E={e1,e2,,em}, ① 任取一条边eE,令TG={e}; ② 任取一条边eE- TG,若TG {e}无回路,则把e添加到
TG中; ③ 若 TG中的元素有n-1个,则算法结束,否则返回②。
7
无向树的性质(续)
定理9.1.2 设T是有n(n2)个结点的一棵树,则T中至少有两片 树叶。 证 设有 x片树叶, 由握手定理和定理9.1.1, 有
2(n 1) d(vi ) x 2(n x)
解得 x2.
8
实例
例9.1.2 画出所有6阶非同构的无向树。
解 5条边, 总度数等于10
可能的度数列:
离散数学及其应用
第9章 树
9.1 树的定义和特性 9.2 生成树 9.3 根树 9.4 根树的应用
2
9.1 树的定义和特性
定义9.1.1 一个连通且无回路的无向图称为无向树。树中的 边称为树枝。度数为1的结点称为树叶。度数大于1的结点 称为分支点(内点)。平凡图称为平凡树。 定义9.1.2 一个不连通的,但每个连通分支都是无向树的图 称为森林。 例如
当把n-1条边加入TG时,TG就是图G的生成树。
例题wenku.baidu.com
例3 如下图所示的无向图G,用避圈法求生成树.
b
a
c
a
b
c
==》
d
e
d
e
解 对无向图G,依次取边(a,b),(b,c),(b,e)和(d,e), 就得到G的一棵生成树,如上面右图所示。
例题
例4 对下图的无向图G,用破圈法求生成树。 解 依次在图G中删去边(a,d),(d,e),(b,c),如(1) (2) (3)所示,使得图G没有回路,就得到G的一棵生成树。
5
定理9.1.1的证明(续)
➢(3)(4)。对结点个数n用数学归纳法来证明T是无回路的: 当结点数为2时,e=1,T中无回路,即结论成立。 假设结点数为n=k-1时无回路,e= n-1,结论成立。
当结点数为n=k时,因为T是连通的,故T中每一个节点的度数均大于等 于1.可以证明至少有一个结点v0,使得deg(v0)=1。因为若所有结点的度
Kruskal算法
Kruskal算法(基于避圈法思想)设G=(V,E,W)是n阶连通 带权图, (1) 在边集E中选一条具有最小权值的边e,加入生成树T中, 并将e从边集E中删去。 (2) 在边集E中选一条具有最小权值的边e,若e和已在T中的 边不构成回路,将e添加到T中,并从边集E中删去e;若e和 已在T中的边构成回路,从边集E中删去e。 (3) 若T中的边数为n-1,算法结束,否则返回(2)。 算法结束时,T就是G的最小生成树。
(1) 1,1,1,1,1,5
(2) 1,1,1,1,2,4
(3) 1,1,1,1,3,3
(1)
(2)
(4) 1,1,1,2,2,3
(5) 1,1,2,2,2,2
(4a)
(4b)
(3)
(5)
9
实例
例9.1.3 已知无向树T中, 有1个3度顶点, 3个2度顶点, 其余结点 全是树叶. T中有多少树叶?画出满足要求的非同构的无向树.
数均大于等于2,则 2e deg(v) 2k ,从而ek,,即图T至少有k条边,与 vV
e= n-1矛盾。在T中删去1度结点v0及其关联的边,得到新图T也是连通 的。根据归纳假设,T无回路,e= n-1,将删去的1度结点v0及其关联 的边添入T得到图T ,T中仍无回路,且e= n-1。 ➢(4)(5)。用反证法证明。假设在T的每一对结点之间的简单路 不唯一,若结点u,v之间存在两条简单路,这两条简单路构成回路,和T 中无回路矛盾,所以在T的每一对结点之间有唯一的一条简单路。
定理9.1.1的证明(续)
➢(5)(6)。首先用反证法证明T中无回路。假设T中 有回路,设C是一条包含边(u,v)的简单回路,在C中删 去边(u,v)得到从u到v的一条简单通路,因而从u到v的 简单通路不唯一,与命题(5)矛盾。
若在T的任意两个不邻接的结点间加上一条边e,则e和联 接这两个结点的唯一一条简单路构成T+e的唯一的一条回路。 ➢(6)(1)。根据命题(6),任意两个结点间存在一条 通路,所以T是连通的,结论成立。
定理9.2.1 图G有生成树,当且仅当G是连通的。 证明 (破圈法)首先证明充分性。当图G是连通的,如果图G 是一棵树时,G本身就是生成树。当连通图G不是一棵树时, G中有回路。对于G的一个回路,删去回路上的一条边,得 到G的生成子图G。若G仍有回路,继续删去其中一个回路 上的一条边。重复这个过程,直到得到G的生成子图中没有 回路,从而得到G的一棵生成树TG。
b
b
b
a
c
a
ca
c
d
e
(1)
d
e
(2)
d
e
(3)
9.2.2 最小生成树及其应用
定义9.2.2 设无向连通带权图G=(V, E, W),T是G的一棵 生成树,T各边带权之和称为T的权,记作W(T)。G的所 有生成树中带权最小的生成树称为最小生成树。
最小生成树的典型算法有Kruskal算法、Prim算法和Sollin算 法
解 设有x片树叶, 2(1+3+x-1)=13+32+x 解得x=3,故T有3片树叶. T的度数列为1, 1, 1, 2, 2, 2, 3
T1
T2
T3
10
生成树
定义9.2.1 给定连通图G,如果它的生成子图TG是树,则称TG为 G的生成树。生成树TG中的边称为树枝;G中的不在TG中的 边称为弦;TG的所有弦的集合称为生成树TG的余树。 例如 图中黑边构成生成树 红边构成余树
实例
例5 求图的一棵最小生成树
W(T)=38
19
最小生成树的应用
例9.2.5 最小生成树聚类算法。 ➢设有一组离散数据D={a1,a2,…an},D中的任意两个数据ai,aj的相似 程度可以用一个相似度函数d(ai,aj)来度量,称为这两个数据的距离。 给定一个正整数k(1<k<n),D的一个k聚类是D的一个k划分 ,使得 同一子类中的数据间的距离尽可能地“近”,不同子类的数据间的距 离尽可能地“远”。 ➢定义两个不同的子类Cs和Ct的距离D(Cs,Ct)为Cs中的数据和Ct 中的数据的相似度的最小值,即 D(Cs ,Ct ) min{d (ai , a j ) | ai Cs , a j Ct} k聚类 的最小间隔 D( ) min{D(Cs ,Ct ) | Cs ,Ct ,1 s t k}
因此,数据集D上的k聚类就是求使得 D( ) 最大的k划分。
最小生成树的应用
可以用最小生成树解决这个问题。 首先可以构造一个带权完全图G=(V, E, W),其中的每个
结点是数据集D中的一个结点,即V={ a1,a2,…an },对于任 意ai, ajV,它们的距离d(ai,aj)作为边(ai,aj)的权值。在这个 带权图上求最小生成树TG,在TG上删去权值最大的k-1条边, 成为有k个连通分支的不连通的树,这k个连通分支就是所求 聚类的k个子类 C1, C2 ,...Ck ,并且具有最大的 D( ) 。
4
定理9.1.1的证明
➢(1)(2)。用反证法证。对u,vV,若T中删去任一边(u,v) 后仍连通,则从u到v存在一条通路L,这条通路L加上(u,v)后 形成回路,和T无回路矛盾。 ➢(2)(3)。对结点个数n用数学归纳法来证明e=n-1:
当结点数为n=1时,T是平凡图,结论显然成立。 当结点数为n=2时,T是连通的但删去任一边后,便不连通,则 e=1,结论成立。 假设结点数为nk(k>1)时,结论成立。当结点数为n=k+1时, 只有删去T中的一个1度结点及其关联的边的图T,才满足命题(2) 的连通性。根据归纳假设,T有k个结点,所以e=n-1,而e=e-1, n=n-1。因此,将删去的1度结点及其关联的边添入T得到图T ,T 仍连通且e=n-1。
(a)
(b)
无向树的性质
定理9.1.1 对于有n个结点,e条边的无向树T,下列的命题等价。 (1) T是无回路的连通图。 (2) T是连通的但删去任一边后,便不连通。 (3) T是连通的且e=n-1。 (4) T中无回路且e=n-1。 (5) 在T的每一对结点之间有唯一的一条简单路。 (6) T中无回路,但在任意两个结点间增加一条边,得到一条且仅 一条回路。
注意: 余树一般不是树
11
例题
例9.2.1 在图9.2.1中,哪些是图9.2.1(1)的生成树?
a
e
a
e
a
e
b c
fb
c
d
fb
d
c
f d
(1)
(2)
(3)
a
e
a
e
a
b c
f d
(4)
b
f
c
d
(5)
b
f
c
d
(6)
解 (2)(5)是(1)的生成树。(3)(4)(6)不是(1)的生成树。
生成树的存在性
证明必要性。若图G有生成树,由于树是连通的,所以G 是连通的。
13
求生成树
求生成树的避圈法: 设图G=(V,E),|V|=n,E={e1,e2,,em}, ① 任取一条边eE,令TG={e}; ② 任取一条边eE- TG,若TG {e}无回路,则把e添加到
TG中; ③ 若 TG中的元素有n-1个,则算法结束,否则返回②。
7
无向树的性质(续)
定理9.1.2 设T是有n(n2)个结点的一棵树,则T中至少有两片 树叶。 证 设有 x片树叶, 由握手定理和定理9.1.1, 有
2(n 1) d(vi ) x 2(n x)
解得 x2.
8
实例
例9.1.2 画出所有6阶非同构的无向树。
解 5条边, 总度数等于10
可能的度数列:
离散数学及其应用
第9章 树
9.1 树的定义和特性 9.2 生成树 9.3 根树 9.4 根树的应用
2
9.1 树的定义和特性
定义9.1.1 一个连通且无回路的无向图称为无向树。树中的 边称为树枝。度数为1的结点称为树叶。度数大于1的结点 称为分支点(内点)。平凡图称为平凡树。 定义9.1.2 一个不连通的,但每个连通分支都是无向树的图 称为森林。 例如
当把n-1条边加入TG时,TG就是图G的生成树。
例题wenku.baidu.com
例3 如下图所示的无向图G,用避圈法求生成树.
b
a
c
a
b
c
==》
d
e
d
e
解 对无向图G,依次取边(a,b),(b,c),(b,e)和(d,e), 就得到G的一棵生成树,如上面右图所示。
例题
例4 对下图的无向图G,用破圈法求生成树。 解 依次在图G中删去边(a,d),(d,e),(b,c),如(1) (2) (3)所示,使得图G没有回路,就得到G的一棵生成树。
5
定理9.1.1的证明(续)
➢(3)(4)。对结点个数n用数学归纳法来证明T是无回路的: 当结点数为2时,e=1,T中无回路,即结论成立。 假设结点数为n=k-1时无回路,e= n-1,结论成立。
当结点数为n=k时,因为T是连通的,故T中每一个节点的度数均大于等 于1.可以证明至少有一个结点v0,使得deg(v0)=1。因为若所有结点的度
Kruskal算法
Kruskal算法(基于避圈法思想)设G=(V,E,W)是n阶连通 带权图, (1) 在边集E中选一条具有最小权值的边e,加入生成树T中, 并将e从边集E中删去。 (2) 在边集E中选一条具有最小权值的边e,若e和已在T中的 边不构成回路,将e添加到T中,并从边集E中删去e;若e和 已在T中的边构成回路,从边集E中删去e。 (3) 若T中的边数为n-1,算法结束,否则返回(2)。 算法结束时,T就是G的最小生成树。
(1) 1,1,1,1,1,5
(2) 1,1,1,1,2,4
(3) 1,1,1,1,3,3
(1)
(2)
(4) 1,1,1,2,2,3
(5) 1,1,2,2,2,2
(4a)
(4b)
(3)
(5)
9
实例
例9.1.3 已知无向树T中, 有1个3度顶点, 3个2度顶点, 其余结点 全是树叶. T中有多少树叶?画出满足要求的非同构的无向树.
数均大于等于2,则 2e deg(v) 2k ,从而ek,,即图T至少有k条边,与 vV
e= n-1矛盾。在T中删去1度结点v0及其关联的边,得到新图T也是连通 的。根据归纳假设,T无回路,e= n-1,将删去的1度结点v0及其关联 的边添入T得到图T ,T中仍无回路,且e= n-1。 ➢(4)(5)。用反证法证明。假设在T的每一对结点之间的简单路 不唯一,若结点u,v之间存在两条简单路,这两条简单路构成回路,和T 中无回路矛盾,所以在T的每一对结点之间有唯一的一条简单路。