博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构——握手引理与有趣的树特性
阅读量:4098 次
发布时间:2019-05-25

本文共 1763 字,大约阅读时间需要 5 分钟。

原文地址:

什么是握手引理(Handshaking Lemma)?

是关于无向图的。在每个有限的无向图中,奇数度的定点的个数总是偶数。握手引理是一个度数和公式的推论(有时候被称为握手引理)

vVdeg(v)=2|E|

在树的数据结构中握手引理到底有啥用处?

下面是一些可以用握手引理证明的有趣实例:

1)在一个k-ary树种,树种每个节点要么没孩子,要么有k个孩子,下列特性恒为真。

L = (k - 1)*I + 1在这里 L = 叶子节点的数目      I = 内部节点的数目

证明:

证明可以分为两种情况:

情况1:(根节点是叶子节点):树中只有一个节点。对于只有一个节点L=1,I=0,上面的式子是成立的。

情况2:(跟节点是内部节点):对于多于一个节点的树,根一定是内部节点。上述的式子可以用握手引理证明。这个树是无向无环图。

树的总度数是节点数减一,例如:|E| = L + I – 1。

除了根,所有的内部节点在这种类型的树中的度数是k+1,根的度数是k。所有叶子节点的度数是1.将握手引理应用到这种树上,我们可以得到以下关系:

Sum of all degrees  = 2 * (Sum of Edges)  Sum of degrees of leaves +   Sum of degrees for Internal Node except root +   Root's degree = 2 * (No. of nodes - 1)  Putting values of above terms,     L + (I-1)*(k+1) + k = 2 * (L + I - 1)   L + k*I - k + I -1 + k = 2*L  + 2I - 2  L + K*I + I - 1 = 2*L + 2*I - 2  K*I + 1 - I = L  (K-1)*I + 1 = L

所以用握手引理证明上面的特性,我们再讨论一个更有趣的特性。

2)在二叉树中,叶子节点的数目总是比有两个孩子节点的数目多1。

L = T + 1在这里L=叶子节点的数目     T=带有两个孩子的内部节点的数目

证明:

设带有两个孩子的节点数目为T,可以分三种情况证明:

情况1:只有一个节点,那么关系为T = 0, L = 1。

情况2:根有两个孩子,例如:根的度是2:

Sum of degrees of nodes with two children except root +    Sum of degrees of nodes with one child +    Sum of degrees of leaves + Root's degree = 2 * (No. of Nodes - 1)      Putting values of above terms,   (T-1)*3 + S*2 + L + 2 = (S + T + L - 1)*2   Cancelling 2S from both sides.     (T-1)*3 + L + 2 = (S + L - 1)*2     T - 1 = L - 2     T = L - 1

情况3:根只有一个孩子,例如根的度是1:

Sum of degrees of nodes with two children +    Sum of degrees of nodes with one child except root +    Sum of degrees of leaves + Root's degree = 2 * (No. of Nodes - 1)      Putting values of above terms,   T*3 + (S-1)*2 + L + 1 = (S + T + L - 1)*2   Cancelling 2S from both sides.     3*T + L -1 = 2*T + 2*L - 2     T - 1 = L - 2     T = L - 1

因此在上面的三种情况中,我们得到T = L-1。

我们用握手引理讨论了树的两个重要的属性。

转载地址:http://ukhii.baihongyu.com/

你可能感兴趣的文章
go闭包
查看>>
go反射
查看>>
部署超简单的 Golong 分布式 WebSocket 微服务
查看>>
go资料
查看>>
go mod 无法下载依赖问题
查看>>
mysql source插入数据乱码
查看>>
go 解析csr参数(完整)
查看>>
golang日志框架之logrus
查看>>
es修改密码
查看>>
go 协程池使用提示
查看>>
go 生成邀请码,可逆
查看>>
Go 高级并发
查看>>
mysql update与group by
查看>>
nginx反代 499 502 bad gateway 和timeout
查看>>
linux虚拟机安装tar.gz版jdk步骤详解
查看>>
python猜拳游戏
查看>>
python实现100以内自然数之和,偶数之和
查看>>
python数字逆序输出及多个print输出在同一行
查看>>
python九九乘法表(详解)
查看>>
python实现嵌套循环打印小星星
查看>>