高分求解,计算文件的熵,并估计压缩极限!

a0002 2008-01-09 10:59:28
如题,数据见附件,由3个128Kbytes的二进制文件组成,我就是想知道这三个文件到底能压缩到多小?
...全文
489 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这...压缩前先把数据分析一遍,压缩比是高了,就是内存需求太大了。:)
a0002 2008-01-12
  • 打赏
  • 举报
回复
目前找到的压缩率最高的通用工具:

magic256.1----82.6KBytes
magic256.2----1.62KBytes
magic256.3----822Bytes

a0002 2008-01-12
  • 打赏
  • 举报
回复
paq系列,是基于神经网络预测的,慢如蜗牛!
a0002 2008-01-12
  • 打赏
  • 举报
回复
paq8o8
http://www.cs.fit.edu/~mmahoney/compression/

应该是目前压缩率最高的,Hutter Prize的得主。

http://prize.hutter1.net/
  • 打赏
  • 举报
回复
什么工具呀?
a0002 2008-01-11
  • 打赏
  • 举报
回复
等待高人出手!
ai_3621 2008-01-11
  • 打赏
  • 举报
回复
通用的工具: 不好估计。与工具自身的设置有关。

是瞎猫碰耗子问题,碰到了压缩率就高些,碰不到就小些。

特定的工具:估计也没有意义,如二楼所言,极限是3*128*1024*4。
  • 打赏
  • 举报
回复
第一个文件,用7zip可以压缩到122k,比bzip,winrar都高。
但是第三个文件,用winrar可以压缩到4k,其他工具都不能小于20k。
a0002 2008-01-10
  • 打赏
  • 举报
回复
如此规律性的数据,理论上应该可以得到极高的压缩率,可是那些流行的压缩工具的表现实在是差强人意!
a0002 2008-01-10
  • 打赏
  • 举报
回复
对附件中三个文件的说明:

  附件是一个压缩包,包括三个二进制文件,文件名:

  magic256.1
  magic256.2
  magic256.3

  这是三个很有规律的文件,实际上是三个256阶的幻方,每个幻方都是由0-65535共256^2个连续自然数组成,以二进制的方式存储,每个数占两个字节,所以三个文件大小都是128KBytes。

  magic256.1是加框法从一个4阶的幻方开始增加边框得到6阶的幻方,再加框得到8阶的幻方,如此层层加框最终得到256阶的一个幻方,生成过程不是确定性的,通过随机调整边框直到形成幻方;

  magic256.2是由两个256阶的正交拉丁方合成,生成正交拉丁方的算法及合成幻方的算法都是确定性的;

  magic256.3是我从网上找的,生成方法不详,但是可以确定的是生成算法也是确定性的;

  magic256.1这个幻方随机性比较强,后两个幻方规律性很强。

  
fire_woods 2008-01-10
  • 打赏
  • 举报
回复
我也是认真的,确实是无损的.

从信息论的角度来讲, 信息是确定性的增加,即通过信息,把不确定的事情变成明确.
比如去电影院, 我们如果不知道自己的座位,那么这时候有人告诉你,你是7排13座, 那么这就是一条有效的信息.
至于这条信息包含的信息量有多大,我们用熵来表示,如果这个影院有1024个你可以坐的位置,那么这条信息的熵就是log2(1024).

同样的,你问的问题的前提是 由3个128Kbytes的二进制文件, 那么如果只是要区分这3个文件的话,只需要log2(3)的数据量就可以了.

当然,如果你的前提是, 所有的文件都是随机产生的128Kbytes的二进制文件,而不特指这3个,那么一共有
2^(128k)种可能性的文件, 如果每种文件出现的概率是一样的,那么最好的压缩算法就是不压缩, 因为这个时候最大的压缩率就是1:1, 有的压缩算法虽然可以对某些文件压的比较小,但是对其他的文件反而会比原来的大.

但是,实际上我们碰到的文件,并不是2^(128k)中的平均分布.比如文本,如果是英文的,每个字节都是ASCII码,而且根据词频,每个ASCII出现的概率是不一样的,所以这时候,实际上是文件中存在了冗余信息,也就是在这种分布下, 熵不在是128k了.所有才可以压缩.

先去吃饭,下午再补充.
a0002 2008-01-10
  • 打赏
  • 举报
回复
我是认真的,不是脑筋急转弯啊^_^
a0002 2008-01-10
  • 打赏
  • 举报
回复
ls: 我需要无损压缩!
fire_woods 2008-01-10
  • 打赏
  • 举报
回复
理论上,对于3个独立的文件,我这个是压缩极限.
a0002 2008-01-10
  • 打赏
  • 举报
回复
to 6楼:计算没错,但是得不到压缩。

to 4、5、9楼,其实不需要编码,只要计算理论极限就行了。

a0002 2008-01-10
  • 打赏
  • 举报
回复
没有,我就做一个!

ckc 2008-01-10
  • 打赏
  • 举报
回复
想知道能压缩到多小,就多找些压缩工具压缩下试试好了
比如理论上能压缩到10K,可是你找不到这样的工具,对你也没什么意义
tailzhou 2008-01-10
  • 打赏
  • 举报
回复
我当时down的那个算法就是把信息当成二进制串,并且认为0,1等概率的;
tailzhou 2008-01-10
  • 打赏
  • 举报
回复
huffman需要传输码表,理论上的压缩比也比不上算术编码;

去年有学通讯专业的朋友做语音压缩的作业,我从网上down的一个算术编码算法,对有损压缩后的数据再进行算术编码,对当时的测试文件,大约还可以压缩到1/3,如果用自适应的算术编码,应该还可以更好;
fire_woods 2008-01-10
  • 打赏
  • 举报
回复
流行的压缩工具只是对现有比较流行的文件的,不考虑特殊的文件的.
所以特殊的文件即使内部有规律,一般的压缩软件也没有办法达到很高的压缩比的.

比如BMP图像,如果压缩软件有图像压缩算法,那么会有很高的压缩比,但是如果没有,按照普通的文本模式去压缩,效果当然就不好了.
加载更多回复(8)

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧