zoukankan      html  css  js  c++  java
  • 第四次作业

    参考书《数据压缩导论(第四版)》P121

    7、使用LZ77算法对一个序列进行编码。给定C(a)=1,C(p)=2,C(r)=4。对以下三元组序列进行解码:

    <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。对解码所得到的序列进行编码,确保得到相同的三元组序列。

    答:由题意知:W=20,S=10

          解码:<0, 0, 3>

                增加一个‘r ’:| r,此时元组序列为:r |

          解码:<0 , 0, 1>

                增加一个‘a ’:r | a

          解码:<0, 0, 4>

                增加一个‘t’:ra | t

          解码:<2, 8, 2>

                从第2个字母‘a’开始拷贝2个字母,得:rat | at

                再拷贝2个字母,得:rat|atat

                再拷贝2个字母,得:rat|atatat

                再解码2,此时序列为:rat|atatatb   //b 表示空格,对应2

          解码:<3,1,2>

                从第八个字母a开始拷贝一个字母,得:|ratatatatb |a

                再解码2,增加一个b,此时序列为: ratatatatb| ab //b表示空格,对应2

          解码:<0,0,3>
                增加一个‘ r ’: ra|tatatatbab| r          //b表示空格,对应2
          解码:<6,4,4>
                从第八个字母a开始拷贝四个字母,得: rat|atatatbabr | atba
                再解码4,增加一个‘t’,此时序列为: rat|atatatbabr |atbat            //b表示空格,对应2
          解码:<9,5,4>
                从第十个字母b开始拷贝五个字母,得: ratatata | tbabratbat | babra
                再解码4,增加一个‘t’,此时序列为: ratatata | tbabratbat | babrat            //b表示空格,对应2

     解码结束,得到序列 ratatatatbabratbatbabrat     //b表示空格,对应2

    对所得序列ratatatatbabratbatbabrat进行编码过程如下:

    W=20,S=10

    |ratatatatbabratbatbabrat

    对于r,没有匹配的字符串

    发送<0,0,3>

    r | atatatatbabratbatbabrat

    对于a,没有匹配的字符串

    发送<0,0,1>

    ra | tatatatbabratbatbabrat

    对于t,没有匹配的字符串

    发送<0,0,4>

    rat| atatatbabratbatbabrat

    rat| atatatbabratbatbabrat

    rat| atatatbabratbatbabrat

    发送<2,8,2>

    ratatatatb | abratbatbabrat

    发送<3,1,2>

    ra| tatatatbab | ratbatbabrat

    对于r,没有匹配的字符串

    发送<0,0,3>

    rat|atatatbabr | atbatbabrat

    发送<6,4,4>

    ratatata| tbabratbat | babrat

    发送<9,5,4>

    编码完成

    8、给定以下初始词典和接受序列,构建一个LZW词典,并对所发送的序列进行解码。接收序列:4,5,3,1,8,2,7,9,7,4

    初始词典:

    索引

    1

    S

    2

    P

    3

    I

    4

    T

    5

    H

    解: 由初始词典和接收序列知(注:B表示空格,对应第2项):

    第一个索引值4对应的字母是T,所以接收序列第1个元素为T

    第二个索引值5对应的字母是H,所以接收序列第2个元素为H

    TH连接在一起,组成模式TH,由于模式TH没有在词典中出现过,所以将TH添加到词典中作为第6

    第三个索引值3对应的字母是I,所以接收序列第3个元素为S

    HI连接在一起,组成模式HI,由于模式HI没有在词典中出现过,所以将HI添加到词典中作为第7

    第四个索引值1对应的字母是S,所以接收序列第4个元素为I

    IS连接在一起,组成模式IS,由于模式IS没有在词典中,出现过,所以将IS添加到词典中作为第8

    第五个索引值2对应的字母是B,所以接收序列第5个元素为B

    SB连接在一起,组成模式SB,由于模式SB没有在词典中出现过,所以将SB添加到词典中作为第9

    索引值8对应字母IS,所以序列第6、7个元素为IS

    BI连接在一起,组成模式BI,由于模式BI没有在词典中出现过,所以将BI添加到词典中作为第10

    第六个索引值2对应的字母是B,所以接收序列第8个元素为B

     把SB连接在一起,组成模式SB,由于模式SB已经在词典中出现过,所以不用再添加

    索引值7对应字母HI,所以序列第9、10个元素为HI

    BH串接在一起,组成模式BH,由于模式BH没有在词典中出现过,所以将BH添加到词典中作为第11

    索引值9对应字母SB,所以序列第11、12个元素为SB

     把HI串接在一起,组成模式HI,由于模式HI已经在词典中出现过,所以不用再添加

    索引值7对应字母HI,所以序列第1314个元素为HI

    BH连接在一起,组成模式BH,由于模式HI已经在词典中出现过,所以不用再添加

    索引值4对应字母T,所以序列第15个元素为T

     把IT串接在一起,组成模式IT,由于模式IT没有在词典中出现过,所以将IT添加到词典中作为第12

    综上所述得到完整词典如下图所示:

    索引

    项   

    1

    S

    2

    B

    3

    I

    4

    T

    5

    H

    6

    TH

    7

    HI

    8

    IS

    9

    SB

    10

    BI

    11

    BH

    12

    IT

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    由词典对发送序列进行解码得到原始序列为:THISBISBHISBHIT

  • 相关阅读:
    C#基础知识之GC 垃圾回收
    获取地址栏参数并转化为对象
    input type属性为number时,去掉右边的上下箭头
    vscode用服务打开html
    富文本的原理和插件使用
    原生js拖拽、jQuery拖拽、vue自定义指令拖拽
    js的call()方法
    js继承
    网页禁止复制和解除禁止复制
    ES6-解构赋值
  • 原文地址:https://www.cnblogs.com/wangchaoqiong/p/4848691.html
Copyright © 2011-2022 走看看