- 问题描述
证明:如果我们将字母表中字符按频率单调递减排序,那么存在一个最优编码,其码字长度是单调递增的。 - 问题分析
任务是证明存在一个码字长度单调递增的最优编码,那么如果可以从它的反例推出码字长度单调递增的编码是最优编码,则问题可以求证。 - 问题求解
①假设字母表为: {c1,c2,...cn} ,字母出现的频率用 f 表示,字母对应的码字长度用d 表示。则用数学的语言描述待证明的问题是:如果 f(c1)≥f(c2)≥...≥f(cn) ,那么存在最优编码使得 d(c1)≤d(c2)≤...≤d(cn) 。
②假设在字母集的一个最优编码 T 中,存在i<j , f(ci)≥f(cj) , d(ci)>d(cj) 。通过交换 T 中ci 和 cj 的编码,可以得到编码 T′ 。 T′ 中字母的频率和字码长度分别用 f′ 和 d′ 表示,则 f′(ci)≥f′(cj) , d′(ci)<d′(cj) 。则
B(T)−B(T′)=∑k=1nf(ck)(d(ck)−d′(ck))=f(ci)[d(ci)−d′(ci)]+f(cj)[d(cj)−d′(cj)]=f(ci)[d(ci)−d(cj)]+f(cj)[d(cj)−d(ci)]=[f(ci)−f(cj)][d(ci)−d(cj)]≥0
因此 B(T)≥B(T′) 。由于 T 是字母集的一个最优编码,所以T′ 也是字母集的一个最优编码。
算法导论16.3-5
最新推荐文章于 2021-12-09 15:24:52 发布