计算理论文本文件的大小

3
我正在撰写一篇关于人口普查局到2060年的人口预测的文章,其中包括一个3.3 MB的.csv文件(未压缩时)。
该文件由539,781个值组成,每个值为5-7位数字,占用3,455,372个字符。当我对文件进行gzip压缩时,它的大小变为1550063字节,即1.47 MB。
我想真实地说明它可以放在一个3.5英寸的软盘上,最大容量为1.44 MB。这只是一个参考点,而不是给需要如何操作的用户提供指导。
有没有办法根据上述字符计数计算文本文件的理论大小?如果我们真的有一个3.5英寸的软盘和一个驱动器,是否可能将此文件存储到磁盘上而不会丢失信息?谢谢!

计算熵是可能的(如果自动化,甚至相当容易)。但需要检查整个文件的内容。如果我们知道值的范围:最小值和最大值是多少?那么可以进行过度估计。 - user395760
最小值为0,最大值为420267733 在此处计算 https://gist.github.com/4287201 - Chris Wilson
2个回答

3
不,仅根据字符计数就无法估计文件压缩后的大小。不同的字符串可以以不同的效率进行压缩;由纯一种字符组成的字符串将比由纯随机生成的字符组成的字符串更容易压缩。
在信息论中,有一个科尔莫戈洛夫复杂度的概念,它是(多或少)重构一个字符串所需的最小信息量。并非所有字符串都可以压缩为更小的字符串,并且不可能构建一个通用算法来找到任意字符串的科尔莫戈洛夫复杂度。此外,一旦字符串变得足够长,即使找到了最优编码,也不可能证明已找到最优编码。
希望这有所帮助!

2

如果你想说它适合存储在1.44 MB软盘上,那就用更好的压缩工具来证明。尝试使用7-Zip或xz(取决于您的平台)。你已经接近了,我相信那样做会奏效。(您是否使用过gzip -9?)

顺便说一句,我不确定这个有多有用,因为许多人听到你描述这个“软盘”时会一头雾水。

正如已经指出的那样,无法计算出理论上最佳的压缩率。只需使用最好的压缩工具来获得估计值即可。

更新:

已下载。 xz 将其压缩为1177180字节。所以,它适合存储在软盘上。


谢谢!我得链接到软盘的概念 :) - Chris Wilson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接