- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
唯一可译码的判别程序实现
唯一可译码的判别
程序实现
姓名:周浩勇
学号:1023013455
专业:通信工程
一 引言
信源编码的设计准则是, 设计完成的编码必须是唯一可译码才能够被使用。根据唯一可译码的定义: 任意有限长的码元序列, 只能被唯一地分割成一个个的码字, 便被称为唯一可译码[ 2 ] , 希望在得到一组编码之后, 能够判断所设计出来的是否是唯一可译码。唯一可译码存在性的判别, 可以通过Kraft不等式给出唯一可译码存在的充分必要条件, 即: D进制码字集合C = {C1, C2,… ,Cn }, 码集中每一C i ( i =1, 2,…, n) 都是一个D 进制符号串, 设C1, C2,…,Cn 对应的码长分别是L1, L 2,… , Ln , 则存在唯一可译码的充要条件是i≤1 显然, 克劳夫特不等式只涉及唯一可译码的存在问题而不涉及具体的码。它强调的是存在, 但这并不是唯一可译码判断的充要条件。也就是说,唯一可译码一定满足克拉夫特不等式, 但是反之, 满足克拉夫特不等式的码不一定是唯一可译码。
二 算法的实现
目前, 常用的判别唯一可译码的方法有两种: 一种是根据异前缀码来进行判断的方法, 另一种是由A. A. Sardinas和G. W. patterson于1957年提出的算法。以下具体描述这两种算法。
方法一: 根据异前缀码是唯一可译码来进行判断。其步骤如下:首先, 观察是否为非奇异码。若是奇异码, 肯定不是唯一可译码;其次, 计算是否满足K raft不等式。若不满足一
定不是唯一可译码;最后, 将码画成一棵码树图, 观察是否满足异前缀码的码树图的构造, 若满足则是唯一可译码。这种方法的理论基础是异前缀码一定是唯一可译码, 通过经典的Kra ft不等式及码树图进行判别。但它的缺点也是显而易见的, 若不是异前缀码时, 则此方法无法判断是否是唯一可译码。
方法二: 使用A. A. Sardinas和G. W. Patterson设计的判断法。其判断准则为: 计算分组码C 中所有可能的尾随后缀集合F, 观察F 中有没有包含任一码字, 若无则为唯一可译码; 若有则一定不是唯一可译码。算法中的关键为尾随后缀集合F 的构造。步骤如下:
(1) 考查C中所有的码字,若Wi是Wj的前缀,则将相应的后缀作为一个尾随后缀放入集合F0中;
(2) 考查C和Fi两个集合,若Wj∈C是Wi∈Fi的前缀或Wi∈Fi 是Wj∈C的前缀,则将相应的后缀作为尾随后缀码放入集合Fi+1中;
(3)F=∪Fi即为码C的尾随后缀集合;
(4) 若F中出现了C中的元素,则算法终止,返回假(C不是唯一可译码);否则若F中没有出现新的元素,则返回真。
本文将以方法二来实现唯一可译码的判别。
一 算法流程:
输入码字集合X0
for 所有Wi,Wj∈X0
if 码字Wi 是码字Wj 的前缀,
即将相应的后缀作为一个尾随后缀放入新集合X1
end if
end for
for 所有Wi∈X0
for 所有Wj∈ Xn-1
if Wi 是Wj 的前缀,
即将相应的后缀作为一个尾随后缀放入新集合Xn中
else if Wj是Wi的前缀,
即将相应的后缀作为一个尾随后缀放入新集合Xn中
end if
end for
end for
构造尾随后缀集合X←Xi
if 有码字Wi∈X0,Wi∈X,则非唯一可译码
二 流程框图
Y
N
Y
N
Y
N
N
Y
三 数据结构:
本文需设计的程序中,码字可用如下结构(即条件限制)表示:
char c[100][50]
尾随后缀用如下结构(即条件限制)表示:
ch
文档评论(0)