加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

【SICP练习】97 练习2.70

发布时间:2020-12-13 20:04:45 所属栏目:PHP教程 来源:网络整理
导读:练习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

练习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。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读