第四次作业
1、 参考书《数据压缩导论(第4版)》 Page 121 7,8
7、使用LZ77算法对一个序列进行编码。给定C(a)=1,C(b)=2,C(c)=3,C(t)=5,对以下三组序列进行解码:
<0,0,3><0,0,1><0,0,4><2,8,2><3,1,2><0,0,3><6,4,4><9,5,4>
假定窗口的大小为20,先进性缓冲区的大小为10.对解码所得到的序列进行解码,确保得到相同的三元组序列。
解:(1)三组序列: <0,0,C(r)> <0,0,C(a)> <0,0,C(t)> <2,8,C(b)> <3,1,C(b)> <0,0,C(r)> <6,4,C(t)> <9,5,C(t)>
对<0,0,C(c)>解码得到序列为:r
对<0,0,C(a)>解码得到序列为:ra
对<0,0,C(t)>解码得到序列为:rat
对<2,8,C(b)> 解码得到序列为:ratatatatatb
对<3,1,C(b)> 解码得到序列为:ratatatatatbab
对<0,0,C(r)> 解码得到序列为:ratatatatatbabr
对<6,4,C(t)> 解码得到序列为:ratatatatatbabratbat
对<9,5,C(t)>解码得到序列为:ratatatatatbabratbatbabrat
(2)编码:由于窗口的大小为20,先进性缓冲区的大小为10,则编码缓冲区的大小为10
开始解码序列为:ratatatatatbabratbatbabrat
输入序列为: || ratatatatatbabratbatbabrat 没有与r匹配的项 则输出三元组为:<0,0,3>
输入序列为:| r | atatatatatbabratbatbabrat 没有与a匹配的项 则输出三元组为:<0,0,1>
输入序列为:| ra | tatatatatbabratbatbabrat 没有与t匹配的项 则输出三元组为:<0,0,4>
输入序列为:| rat | atatatatbabratbatbabrat 有匹配串atatatat 则输出三元组为:<2,8,2>
输入序列为:ra | tatatatatb | abratbatbabrat 则输出三元组为: <3,1,2>
输入序列为:rata | tatatatbab | ratbatbabrat 则输出三元组为: <0,0,3>
输入序列为:ratat | atatatbabr | atbatbabrat 则输出三元组为: <6,4,4>
输入序列为:ratatatata | tbabratbat | babrat 则输出三元组为: <9,5,4>
8、给定以下初始词典和接受序列,构建一个LZW词典,并对所发送的序列进行解码。
接收序列:4,5,3,1,2,8,2,7,9,7,4
初始词典:
索 引 | 项 |
1 | S |
2 | b |
3 | I |
4 | T |
5 | H |
答:(1)可知输入为4,5,3,1,2,8,2,7,9,7,4
输入4:
输出:T
P=T
输入5:
输出:TH
P=TH
输入3:
输出:THI
P=HI
输入1:
输出:THIS
P=IS
输入2:
输出:THISb
P=Sb
输入8:
输出:THISbIS
P=bIS
输入2:
输出:THISbISb
P=ISb
输入7:
输出:THISbISbHI
P=bHI
输入9:
输出:THISbISbHISb
P=HISb
输入7:
输出:THISbISbHISbHI
P=SbHI
输入4:
输出:THISbISbHISbHIT
P=HIT
索引 | 项 |
1 | S |
2 | b |
3 | I |
4 | T |
5 | H |
6 | TH |
7 | HI |
8 | IS |
9 | Sb |
10 | bI |
11 | ISb |
12 | bH |
13 | HIS |
14 | SbH |
15 | HIT |