概率压缩。如何解压缩输出值?

Probabilistic compression. How to decompress output values?

如何解压输出值?

算法

1 用零初始化 256*256 table(对于符号代码)

2初始化table地址(x,y)为00(x轴)00(y轴)

3 如果输入符号等于存储在table符号(x,y)中:输出符号=0,否则输出符号=前缀1+输入符号(1symbol)和table值更改为输入符号的值

4 new address - (x-value of address = y-value), y-value=input symbol

5 使用新地址检查下一个交易品种

例如

用零初始化 256*256 table

输入 - 30(h), 30, 30, 30, 35

地址 00 00

input=30,value(00,00)不一样,value(00,00)=30,output=130(加前缀1)

新地址(x=y,y=input)=00 30,input=30,value(00,30)不一样,value(00,30)=30,output=130

新地址=30 30,输入=30,值(30,30)不一样,值(30,30)=30,输出=130

新地址=30 30,输入=30,值(30,30)相同,输出=0

新地址=30 30,输入=35,值(30,30)不一样,输出=135

OUTPUT = 130 130 130 0 135.如何获取输入(30 30 30 30 35)?

想法是交替解压缩下一个符号并更新 table 与压缩程序相同的方式。

address is now 0,0
read 130
begins with a 1, so table[0,0] <- 30
write table[0,0] -> 30
address is now 0,30
read 130
begins with a 1, so table[0,30] <- 30
write table[0,30] -> 30
address is now 30,30
read 130
begins with a 1, so table[30,30] <- 30
write table[30,30] -> 30
address is still 30,30
read 0
is 0, so don't update table
write table[30,30] -> 30
address is still 30,30
read 135
begins with a 1, so table[30,30] <- 35
write table[30,30] -> 35
address is now 30,35