离散数学第七章第八节
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11
4、前缀码(2)
定义6 给定一个序列的集合,如果不存在一个序列是另一个 序列的前缀,则该序列的集合称为前缀码。 例如,{100,101,00,01,11}是前缀码,而{001,010, 00,01,10}就不是前缀码。 定理7 任意一棵二叉树对应一个前缀码。 证:给定一棵二叉树,从每个分枝点出发,将左枝标为0, 右枝标为1,则每片树叶对应一个0和1组成的序列,该序列 是从树根到该树叶的通路上各边标号组成的。显然,没有一 片树叶对应的序列是另一片树叶对应序列的前缀。所以任意 一棵二叉树对应一个前缀码。
图4中,(1)是三叉树,(2)是完全二叉树,(3)是正则二叉树。
4
2、m叉树(2)
例1 用m叉树表示实际问题。 M和E两人进行网球比赛,如果一人连胜两局或一共胜 三局,则比赛结束,试用二叉树表示比赛可能发生的各种 情况。 解:用二叉树的分枝点表示每局赛 事,每局比赛的胜负标在其两个儿 子结点的旁边。从树根到树叶的每 一条路对应比赛可能发生的一种情 况: EE,MM ; EMM ,MEE ; EMEE,MEMM; EMEME,EMEMM,MEMEE, MEMEM。
第7-8讲 根树及其应用
1. 有向树 2. m叉树 3. 最优树 4. 前缀码 5. 第7-8讲 作业
1
1、有向树(1)
定义1 如果一个有向图在不考虑边的方向时是树,则称 之为有向树。 定义2 一棵有向树,如果恰有一个结点的入度为0,其 余所有结点的入度都为1,则称为根树。 入度为0的结点称为根;出度为0的结点称为叶;出度 不为0的结点称为分枝点或内点。
5
2、m叉树(3)
定理1 设有完全m叉树,其树叶数为t,分枝点数为I,则 (m-1)i=t-1 证:可将完全m叉树视为每局有m位选手参加比赛的单淘汰 赛计划表。树叶数t表示参加比赛的选手数,分枝点表示 比赛的局数。因每局比赛将淘汰(m-1)位选手,故比赛结 果共要淘汰(m-1)i位选手,最后得出一位冠军。因此(m1)i+1=t,即 (m-1)i=t-1。 例如右图所示为9位选 手参加比赛的情况: t=9,i=4,m=3。
13
4、前缀码百度文库4)
例3 给定前缀码{000,001,01,1},求对应的二叉树。
解:作一棵高为3的正则二叉树;标记对应前缀码的结点, 并删去标记结点的后裔。
14
4、前缀码(5)
由前缀码和二叉树的对应关系可知,如果给定的前缀码 对应的二叉树是完全二叉树,则根据此前缀码可对任意二 进制序列译码。 例如,由前例中的前缀码{000,001,01,1}可对任意二 进制序列译码。随意写一个由0和1组成的字符串,例如: 00010011011101001 它可译为且只能译为: 000,1,001,1,01,1,1,01,001 如果被译的序列的最后部分不能构成前缀码中的序列, 可约定添加0或1,直到能译出为止。 如果前缀码对应的二叉树不是完全二叉树,例如{000, 001,1}也是前缀码,但它不能对任意二进制序列译码。上 述二进制序列,用这组编码就无法译出。
15
第7-8讲 作业
P337 5a
16
8
3、最优树(2)
定理5 设T为带权w1 w2 … wt的最优树,则 (1) 带权w1、 w2的树叶vw1、vw2是兄弟。 (2) 以树叶vw1、vw2为儿子的分枝点的通路最长。 这个定理简单的说法是:最优树中具有最小权的两片树叶 是兄弟,且其通路长度最大。 定理6 设T为带权w1 w2 … wt的最优树,如果将以带权 w1、 w2的树叶为儿子的分枝点改为带权w1+ w2的树叶得新 树T’,则T’也是最优树。 这个定理简单的说法是:求带t个权的最优树,可简化为求 带t-1个权的最优树。
7
3、最优树(1)
设二叉树有t片树叶,各片树叶分别带有权数w1, w2, ...wt, 则该二叉树称为带权二叉树。 定义5 设带权二叉树中权为wi的树叶的通路长度为L(wi),将
w(T ) wi L( wi )
i 1
t
称为带权二叉树的权。 在所有带权w1, w2, ...wt的二叉树中,w(T)最小的树称为最优 树,又称哈夫曼树。 问题:给定一组权w1, w2, ...wt,如何求相应的最优树呢?
2
1、有向树(2)
在一棵根树中,从根到某个结点的单向通路的长度(即边 数)是固定的,它叫做该结点的层次。
左图中, b称为a的儿子, a称为b的父亲; a称为c的祖先, c称为a的后裔。 对其它的结点 有类似的说法。
3
2、m叉树(1)
定义3 在根树中,若每个结点的出度小于等于m,则称该树 为m叉树。如果每个结点的出度恰好等于m或0,则称该树为 完全m叉树。如果完全m叉树所有树叶的层次都相同,则称 为正则m叉树。
9
3、最优树(3)
例2 假定字母a,b,c,d,e的使用频率为10%,17%,20%,23%,30%, 设计带该权数序列的最优树,并给出其二进制编码(哈夫曼编 码)。
编码:a:100, b:101, c:00, d:01, e:11
10
4、前缀码(1)
在远距离通信中,常以0和1组成的字符串来传送英文字母。 例如,可以用长度为5的0、1组成的字符串来表示大小写英文 字母和标点符号。但等长编码无法实现最高的效率。统计表 明,有些字母使用频率高,有的则低。用较短的字符串来表 示使用频率高的字母可以提高效率。 问题是如何进行编码?前面的例子已经演示了应用最优树 实现最优编码的可行性。然而,这种编码是唯一的吗?前例 对字母a,b,c,d,e的编码是{100,101,00,01,11},可否采 用编码{001,010,00,01,10}呢?假如用这个编码发送 “bd”,则相应编码是“01001”。然而接受方译码时,将得出 两个可能的结果:“010-01”和“01-001”,即“bd”和“da”。 产生二义性的原因是由于d的编码“01”是b的编码“010”的 前缀造成的。用前例的编码就不会出现这种二义性。
6
2、m叉树(4)
定义4 在根树中,从树根到某结点的通路的边数叫该结点的 通路长度。将分枝点的通路长度称为内部通路长度,树叶的 通路长度叫外部通路长度。 定理4设完全二叉树有n个分枝点(含根结点),且内部通路长 度的总和为L,外部通路长度的总和为E,则E=L+2n。 证:对分枝点数n进行归纳证明。当n=1时,E=2,L=0,故公 式成立。假设n=k-1时成立。 当n=k时,若删去一个分枝点v(即删除该分枝点的儿子)。 设该分枝点的通路长度为e,且v的两个儿子是树叶,得出的新 树为T’。与原树相比,T’减少了两片通路长度为e+1的树叶和 一个通路长度为e的分枝点,因T’有k-1个分枝点,所以 E’=L’+2(k-1)。而在原树中,E=E’+2(e+1)-e=E’+e+2,L=L’+e。 从这两式解出E’和L’代入前一式并整理得E=L+2k。证毕。
12
4、前缀码(3)
定理8 任意一个前缀码对应一棵二叉树。 证:设h是某个前缀码中最长序列的长度。作一棵高为h的 正则二叉树,将每个分枝点的左、右枝分别标以0和1,则 每片树叶对应一个0和1组成的序列,该序列是从树根到该 树叶的通路上各边标号组成的。因此,长度不超过h的每个 0和1组成的序列必对应一个结点。 将对应于前缀码中的每个序列的结点给予一个标记,并 删去标记结点的后裔及由它们射出的边。再删去未加标记的 树叶,得到一棵新的二叉树,其树叶就对应给定的前缀码。
4、前缀码(2)
定义6 给定一个序列的集合,如果不存在一个序列是另一个 序列的前缀,则该序列的集合称为前缀码。 例如,{100,101,00,01,11}是前缀码,而{001,010, 00,01,10}就不是前缀码。 定理7 任意一棵二叉树对应一个前缀码。 证:给定一棵二叉树,从每个分枝点出发,将左枝标为0, 右枝标为1,则每片树叶对应一个0和1组成的序列,该序列 是从树根到该树叶的通路上各边标号组成的。显然,没有一 片树叶对应的序列是另一片树叶对应序列的前缀。所以任意 一棵二叉树对应一个前缀码。
图4中,(1)是三叉树,(2)是完全二叉树,(3)是正则二叉树。
4
2、m叉树(2)
例1 用m叉树表示实际问题。 M和E两人进行网球比赛,如果一人连胜两局或一共胜 三局,则比赛结束,试用二叉树表示比赛可能发生的各种 情况。 解:用二叉树的分枝点表示每局赛 事,每局比赛的胜负标在其两个儿 子结点的旁边。从树根到树叶的每 一条路对应比赛可能发生的一种情 况: EE,MM ; EMM ,MEE ; EMEE,MEMM; EMEME,EMEMM,MEMEE, MEMEM。
第7-8讲 根树及其应用
1. 有向树 2. m叉树 3. 最优树 4. 前缀码 5. 第7-8讲 作业
1
1、有向树(1)
定义1 如果一个有向图在不考虑边的方向时是树,则称 之为有向树。 定义2 一棵有向树,如果恰有一个结点的入度为0,其 余所有结点的入度都为1,则称为根树。 入度为0的结点称为根;出度为0的结点称为叶;出度 不为0的结点称为分枝点或内点。
5
2、m叉树(3)
定理1 设有完全m叉树,其树叶数为t,分枝点数为I,则 (m-1)i=t-1 证:可将完全m叉树视为每局有m位选手参加比赛的单淘汰 赛计划表。树叶数t表示参加比赛的选手数,分枝点表示 比赛的局数。因每局比赛将淘汰(m-1)位选手,故比赛结 果共要淘汰(m-1)i位选手,最后得出一位冠军。因此(m1)i+1=t,即 (m-1)i=t-1。 例如右图所示为9位选 手参加比赛的情况: t=9,i=4,m=3。
13
4、前缀码百度文库4)
例3 给定前缀码{000,001,01,1},求对应的二叉树。
解:作一棵高为3的正则二叉树;标记对应前缀码的结点, 并删去标记结点的后裔。
14
4、前缀码(5)
由前缀码和二叉树的对应关系可知,如果给定的前缀码 对应的二叉树是完全二叉树,则根据此前缀码可对任意二 进制序列译码。 例如,由前例中的前缀码{000,001,01,1}可对任意二 进制序列译码。随意写一个由0和1组成的字符串,例如: 00010011011101001 它可译为且只能译为: 000,1,001,1,01,1,1,01,001 如果被译的序列的最后部分不能构成前缀码中的序列, 可约定添加0或1,直到能译出为止。 如果前缀码对应的二叉树不是完全二叉树,例如{000, 001,1}也是前缀码,但它不能对任意二进制序列译码。上 述二进制序列,用这组编码就无法译出。
15
第7-8讲 作业
P337 5a
16
8
3、最优树(2)
定理5 设T为带权w1 w2 … wt的最优树,则 (1) 带权w1、 w2的树叶vw1、vw2是兄弟。 (2) 以树叶vw1、vw2为儿子的分枝点的通路最长。 这个定理简单的说法是:最优树中具有最小权的两片树叶 是兄弟,且其通路长度最大。 定理6 设T为带权w1 w2 … wt的最优树,如果将以带权 w1、 w2的树叶为儿子的分枝点改为带权w1+ w2的树叶得新 树T’,则T’也是最优树。 这个定理简单的说法是:求带t个权的最优树,可简化为求 带t-1个权的最优树。
7
3、最优树(1)
设二叉树有t片树叶,各片树叶分别带有权数w1, w2, ...wt, 则该二叉树称为带权二叉树。 定义5 设带权二叉树中权为wi的树叶的通路长度为L(wi),将
w(T ) wi L( wi )
i 1
t
称为带权二叉树的权。 在所有带权w1, w2, ...wt的二叉树中,w(T)最小的树称为最优 树,又称哈夫曼树。 问题:给定一组权w1, w2, ...wt,如何求相应的最优树呢?
2
1、有向树(2)
在一棵根树中,从根到某个结点的单向通路的长度(即边 数)是固定的,它叫做该结点的层次。
左图中, b称为a的儿子, a称为b的父亲; a称为c的祖先, c称为a的后裔。 对其它的结点 有类似的说法。
3
2、m叉树(1)
定义3 在根树中,若每个结点的出度小于等于m,则称该树 为m叉树。如果每个结点的出度恰好等于m或0,则称该树为 完全m叉树。如果完全m叉树所有树叶的层次都相同,则称 为正则m叉树。
9
3、最优树(3)
例2 假定字母a,b,c,d,e的使用频率为10%,17%,20%,23%,30%, 设计带该权数序列的最优树,并给出其二进制编码(哈夫曼编 码)。
编码:a:100, b:101, c:00, d:01, e:11
10
4、前缀码(1)
在远距离通信中,常以0和1组成的字符串来传送英文字母。 例如,可以用长度为5的0、1组成的字符串来表示大小写英文 字母和标点符号。但等长编码无法实现最高的效率。统计表 明,有些字母使用频率高,有的则低。用较短的字符串来表 示使用频率高的字母可以提高效率。 问题是如何进行编码?前面的例子已经演示了应用最优树 实现最优编码的可行性。然而,这种编码是唯一的吗?前例 对字母a,b,c,d,e的编码是{100,101,00,01,11},可否采 用编码{001,010,00,01,10}呢?假如用这个编码发送 “bd”,则相应编码是“01001”。然而接受方译码时,将得出 两个可能的结果:“010-01”和“01-001”,即“bd”和“da”。 产生二义性的原因是由于d的编码“01”是b的编码“010”的 前缀造成的。用前例的编码就不会出现这种二义性。
6
2、m叉树(4)
定义4 在根树中,从树根到某结点的通路的边数叫该结点的 通路长度。将分枝点的通路长度称为内部通路长度,树叶的 通路长度叫外部通路长度。 定理4设完全二叉树有n个分枝点(含根结点),且内部通路长 度的总和为L,外部通路长度的总和为E,则E=L+2n。 证:对分枝点数n进行归纳证明。当n=1时,E=2,L=0,故公 式成立。假设n=k-1时成立。 当n=k时,若删去一个分枝点v(即删除该分枝点的儿子)。 设该分枝点的通路长度为e,且v的两个儿子是树叶,得出的新 树为T’。与原树相比,T’减少了两片通路长度为e+1的树叶和 一个通路长度为e的分枝点,因T’有k-1个分枝点,所以 E’=L’+2(k-1)。而在原树中,E=E’+2(e+1)-e=E’+e+2,L=L’+e。 从这两式解出E’和L’代入前一式并整理得E=L+2k。证毕。
12
4、前缀码(3)
定理8 任意一个前缀码对应一棵二叉树。 证:设h是某个前缀码中最长序列的长度。作一棵高为h的 正则二叉树,将每个分枝点的左、右枝分别标以0和1,则 每片树叶对应一个0和1组成的序列,该序列是从树根到该 树叶的通路上各边标号组成的。因此,长度不超过h的每个 0和1组成的序列必对应一个结点。 将对应于前缀码中的每个序列的结点给予一个标记,并 删去标记结点的后裔及由它们射出的边。再删去未加标记的 树叶,得到一棵新的二叉树,其树叶就对应给定的前缀码。