【SICP练习】97 练习2.70

开发技术 作者: 2024-06-16 23:00:01
练习2.70既然要解码,那必须先将树给定义好了。(define tree (generate-huffman-tree ‘((A 2) (NA 16) (BOOM 1) (SHA 3) (GET 2) (YIP 9) (JOB 2) (WAH 1))然后就是来编码题目中给出的歌词了。(define

练习2.70

既然要解码,那必须先将树给定义好了。

(define tree (generate-huffman-tree((A 2) (NA 16) (BOOM 1) (SHA 3) (GET 2) (YIP 9) (JOB 2) (WAH 1))

然后就是来编码题目中给出的歌词了。

(define message(Get a job)) (define message(Sha na na na na na na na na)) (define message(Wah yip yip yip yip yip yip yip yip yip)) (define message(Sha boom)) (encode message tree) ;Value: (1 1 0 0 1 1 1 1 0 1 1 1 1 1) (encode message tree) ;Value: (1 1 1 0 0 0 0 0 0 0 0 0) (encode message tree) ;Value: (1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0) (encode message tree) ;Value: (1 1 1 0 1 1 0 1 1)

由于题目中还要求计算编码所需的2进制位树,我们可以用length来计算。

(length (encode message tree)) ;Value: 14 (length (encode message tree)) ;Value: 12 (length (encode message tree)) ;Value: 23 (length (encode message tree)) ;Value: 9

因此将这4个数乘以各自出现的次数然后相加便是所需的2进制位数了,即84。
如果要采取定长编码的话,题目中的8个字符由于每一个都要占用到3个2进制位以上,而歌词中1共用了36个字符,乘起来便是用定长编码最少需要的2进制位数了,也即便108。

原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_28324.html