概率压缩。如何解压缩输出值?
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
如何解压输出值?
算法
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