310 likes | 487 Views
离散无记忆源. 字母表 A ={ a 1 ,…, a K }, 概率分别为 p 1 ,…, p K , 长为 L 的源输出序列 u L ={ u 1 ,…,u L } ,共有 K L 种序列 码符号字母表 B ={ b 1 ,…, b D }, 以码符号表示源输出序列, D 元码 等长 D 元码,不等长 D 元码的个数 单义可译码,每个消息都至少有一个码字与之对应。 单义等长可译码存在充要条件 D N ≥ K L 由此可得, N ≥ L log K /log D. DMS 的等长编码. N log D ≥ L H( U )
E N D
离散无记忆源 • 字母表A={a1,…,aK},概率分别为p1,…,pK,长为L的源输出序列uL={u1,…,uL},共有KL种序列 • 码符号字母表B={b1,…,bD},以码符号表示源输出序列,D元码 • 等长D元码,不等长D元码的个数 • 单义可译码,每个消息都至少有一个码字与之对应。 • 单义等长可译码存在充要条件DN≥KL由此可得,N≥LlogK/logD
DMS的等长编码 • NlogD≥LH(U) • H(U)是统计平均值,L达到无限时,一个具体的源输出序列的平均每符号的信息量才等于H(U) • 选L足够长,使 NlogD≥L[H(U)+eL] • L趋向于无穷,eL趋向于0,保证不降低效率。不能保证单义可译,但可以保证非单义可译引起的误差可以渐进的任意小。 如何证明?
弱、强e典型序列集 定义3.2.1:令H(U)是集{U, p(ak)}的熵,e是正数,集合 定义为给定源U输出的长为L的典型序列集。 ——弱e-典型序列集 定义3.2.2:令H(U)是集{U, p(ak)}的熵,e是正数,集合 定义为给定源输出的长为L的e-典型序列集,其中Lk 是在L长序列中符号ak出现的次数 ——强e-典型序列集
例3.2.2 典型二项序列出现的概率: 当L足够大,
信源划分定理 定理3.2.1:给定信源{U, p(ak)}和e>0,当L∞,Pr{T(L,e)}1,或对所有e>0,存在有正整数L0,使得当L>L0时有
信源划分定理 系1:特定典型序列出现的概率 若uL∈TU(L,e),则
信源划分定理 • 典型序列的数目: 系2:当L足够大时,对于给定的信源和e>0,典型序列的个数|TU(L,e)|满足
信源划分定理 • 信源消息可以分为2组:(渐进等同分割性) 1、典型序列 高概率集,渐进等概序列,AEP序列 2、非典型序列 低概率集
编码速率和等长编码定理 • 编码速率:R=(1/L)logM=(N/L)logD, M为码字总数 • 可达速率:对于给定信源和编码速率R以及任意e>0,若有L0,以及编译码方法,使得L>L0,错误概率小于e,R是可达的 • 等长编码定理: • R>H(U),R是可达的,R<H(U),R是不可达的 • 编码效率:h=H(U)/R
几个定义 • 唯一可译码 • 逗点码,无逗点码 • 字头或前缀 • 异字头码或异前缀码 • 树码,满树,非满树,全树 • 树码构造异字头码
Shannon-Fano编码 异字头码可以通过树图构成 • D元码 • 将信源符号按出现概率从大到小排列 • 每次信源符号化为概率近似相等的D个子集 • 这样可以保证D个码元近似等概,每个码字承载的信息量近似最大,码就近似最短。 • 理想情况I(ak)=nklogD, p(ak)=D-nk
异字头码存在的充分必要条件 • Kraft不等式 • 定理3.3.1: 长度为n1,n2,…,nk的D元异字头码存在的充分必要条件是: 异字头码不唯一,且满足上式的码不一定是异字头码
唯一可译码 • 定理3.3.2:唯一可译码必然满足Kraft不等式 系:任一唯一可译码可用各相应码字长度一样的异字头码代替
关于不等长编码的几个概念 • 不等长编码的速率: • 不等长编码的效率:h=H(U)/R • 码的多余度:1-h
两个定理 1.对于给定信源,存在最佳唯一二元可译码,最小概率的两个码字码长相等且最长,他们之间仅最后一位不同 2. 对辅助集为最佳的码,对原始集也是最佳的
二元Huffman编码 • 1、将符号(符号序列)概率从大到小排列 • 2、最后的2个符号分别分配为0,1 • 3、将最后的2个符号的概率值相加,合并起来作为一新的符号 • 4、重复第一步骤
Huffman编码 • 若pj>pk,则nj≤nk • 最长的2个码字码长相同 • 最长的2个码字除了最后一位不同外其余位置的值都相同
多元Huffman编码 number = 1+k (D - 1)
LZ编码 • 是否存在编码方法与信源的统计特性无关? • 基于字典编码的基本原理 • 定长码 LZ编码:适用于长消息序列的编码,信源符号间既可以相互独立也可以有一定的相关性,当消息序列较短时,码字可能不能达到压缩的目的,但当消息序列很长时,LZ编码方法相对于只对典型序列进行编码,因此压缩效果比较好,而且实际应用也很多。如计算机文件压缩。
Eg:对下面信息序列进行LZ编码10101101001001110101000011001110101100011011 分段phrases:1, 0, 10, 11, 01, 00, 100, 111, 010, 1000, 011, 001, 110, 101, 10001, 1011
算术编码 • Huffman编码的局限性 • 算术编码无需计算信源序列分布,直接对信源符号序列编码,可达到渐进最佳性能 • 思想:计算输入信源符号序列所对应的区间,在区间内任取一点,以其二进制表示适当截断作为序列的编码结果 • 例题1:设无记忆源U={0,1},其概率分布矢量为{0.25, 0.75}。对信源序列u=11011101做算术编码 • 例题2:无记忆信源U={1,2,3,4},概率矢量{0.5,0.25,0.125,0.125},对信源序列21134121算术编码
算术编码 经过算术编码,上例题的结果为1000011,用7比特 的码字表示了8比特的信息
算术编码 • 1、初始化:起点P=0,宽度A=1 • 2、如码元全部处理,转第五步 • 3、读入的码元为0,区间的起点P不变,宽度缩短为Ap,用公式P=P,A=Ap迭代计算,转第二步 • 4、读入的码元为1,区间的起点右移Ap,宽度缩短为A(1-p),用公式P=P+Ap,A=A(1-p)迭代计算,返回第二步 • 5、根据区间的最终宽度A,通过2-L≤A<2-(L-1)求得码字长度,将区间起点P截取小数点后L位,剩余部分若不为0,进位到小数点后第L位
Eg:s=011,说明U=(000, 001, 010, 011, …, 111), 所以 若 若 所以 其中
Eg:s=11111100,p(0)=1/4, p(1)=3/4, 所以有H(u)=0.81bit/符号; ,
A:通过计算来编码, F(s)=p(00000000)+p(00000001)+…+p(11111011) =1-p(11111111)-p(11111110)-p(11111101) -p(11111100)=1-p(1111111)-p(1111110) =1-p(111111) =1- =0.110100100111 所以C(s)=0.1101010