找回密码
 欢迎注册
查看: 10039|回复: 2

[讨论] 能否用连分数来压缩数据

[复制链接]
发表于 2015-7-4 20:45:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
假设要压缩一串数据,我们可以将其看作一个整数,首先我们用某个基去除这个整数,就得到商和余数,如果我们选取的基较为合适,就得到商和余数相同大小的尺寸,因此我们也得到了连分数的分子和分母,再将这个分数表示为连分数,最终我们得到一串数据,则这些数据有可能被较好的压缩和表示
下面举例说明
假设我们要压缩的数据为
         20!+7!+11=2432902008176645051 共19位数字,21C3677C82B413BB  (十六进制)
用3^20作为基,去除这个数,得到商697749481,余数2019999170,然后把商/余数表示为连分式
{0, 2, 1, 8, 1, 1, 9, 4, 3, 1, 1, 13, 1, 2, 3, 1, 2, 10, 3, 1, 5},现在得到的这一串数据我们可以看到1的含量比较多,而且相邻的两个数大小都比较靠近,也就是说比较光滑(一般的分数都有此性质),如果选取的基使得这一串数据中的某个元素值特别大,我们则称为不光滑的,这时我们可以选取其他基,以达到较好的效果,那对现在得到的新数据有无较好的压缩方法或者适合计算机表示的形式呢
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2015-7-9 12:27:03 | 显示全部楼层
   我认为这个方法不能压缩数据,相对于10进制的表示法,连分数的每项的系数变小了,但项数变多了,在用哈夫曼算法压缩后,总的信息量不会减少。就好比用2进制来表示一个数一样,相对于10进制,每个数的范围从0-9变为0-1(系数变小了),但位数变多了,增加到10进制表示法的3.32倍,总的信息量并没有减少。
  我所知的最有效的压缩算法是算法编码,一个具体的实现是PAQ,其压缩率非常高,压缩后的数据量甚至比香农公式计算出来的信息量还少。可参考我的一个帖子http://bbs.csdn.net/topics/390042776
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2016-7-13 21:24:05 来自手机 | 显示全部楼层
熵是无损压缩的极限。能够超越必然是有损压缩
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-5-22 02:09 , Processed in 0.042192 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表