为了纪念Hutter奖,文本压缩的顶级算法(以及每个算法的快速描述)是什么?
注意:这个问题的目的是获得压缩算法的描述,而不是压缩程序的描述.
如果我误用了标题中的大字,请原谅我; 我不太了解他们,但希望他们描述我的问题.我写了一个精心设计的方案来尝试根据这些要求对字符串进行编码.对于长度为10 ^ 4或更高的字符串,我编写的代码非常慢,我想知道 - 因为它一次处理200个块(尽管有时仅向前移动一个字符以获取下一个块),是否可以被修改以更快或更线性地输出结果(例如,立即输出处理的每200个字符的结果).任何有关该或其他明显优化的帮助将不胜感激.
根据电话的建议,我简化了我的例子:
encode xs = encode' xs [] where
encode' [] result = result
encode' (z:zs) result
| null test = encode' zs (result ++ [z])
| otherwise = encode' (drop numZsProcessed zs) (result ++ processed)
where test = ..some test
toProcess = take 200 (z:zs)
processed = ..do something complicated with toProcess
numZsProcessed = ..number of z's processed
Run Code Online (Sandbox Code Playgroud) 我正在构建一个网络应用程序,用于处理用户和客户端之间的内部电子邮件和其他频繁的中小型文本块。存储这些数据的最佳方法是什么?在数据库 (MySQL) 中还是作为数千个单独的文件?压缩它怎么样(PHP 的 gzcompress() 或 MySQL 的压缩功能)?
这不会是一个公共应用程序,因此用户负载将是最小的(一次少于 20 个用户)。但是,应用程序中每天都会有很多来回通信,所以我预计数据量会随着时间的推移而增长(这就是我想压缩它的原因)。
我想将数据保存在数据库中以便于访问和移植,但是我在这里看到的一些关于图像的线程建议使用文件存储。你怎么认为?
谢谢你,赛斯
编辑澄清:我不需要对文本进行任何类型的搜索,这就是为什么我倾向于压缩它以节省空间。
几年前我读到了一个非常轻量级的文本压缩算法,现在我找不到引用或记住它的名字.
它使用了每个连续字符对之间的差异.例如,由于小写字母预测下一个字符也将是小写字母,因此差异往往很小.(它可能在减去之前抛出前一个字符的低位;我不记得.)即时复杂性降低.它是Unicode友好的.
当然有一些铃声和口哨,以及产生比特流的细节,但它超级轻巧,适合嵌入式系统.没有重要的字典存储.我很确定我看到的摘要是在维基百科上,但我找不到任何东西.
我记得它是在谷歌发明的,但它不是Snappy.
我正在尝试将任何给定的字符串压缩为更短的版本,复制不包含任何换行符的可粘贴的压缩字符串.
我尝试了gzcompress,但随后将结果复制/粘贴到不同的php脚本中并尝试gzuncompress抛出"警告:gzuncompress():数据错误"
是否存在压缩字符串的本机php函数,结果是没有任何换行符的字符串?
谢谢.
我只是想知道是否有人可以向我介绍将Unicode文本压缩到其原始大小的10%到20%的算法?实际上,我已经阅读了Lempel-Ziv压缩算法,该算法将文本大小减小到原始大小的60%,但我听说有些算法具有这种性能
我有一些随机文本大小= 27 GB的文件,压缩后它变成40 MB左右.
压缩后3.5 GB的sql文件变为45 Mb.
但是一个109 MB的文本文件在压缩后会变成72 MB,所以它可能会出错.
为什么这么少压缩,它必须10 mb左右,否则我会遗漏一些东西.
我能看到的所有文件只有英文文本和一些语法符号(/,. - = + etc)
为什么?
如果没有,你能告诉我如何超级压缩文本文件?
我可以在PHP中编码,np就可以了.
我有这样的文字:
2,3,5,1,13,7,17,11,89,1,233,29,61,47,1597,19,37,41,421,199,28657,23,3001,521,53,281,514229,31,555 19801,3571,141961,107,73,9349,135721,2161,2789,211,433494437,43,109441,139,2971215073,1103,963910,37,37,35,4,5,3,7,3,5,5 2521,4513,3010349,35239681,1087,14736206161,9901,269,67,137,71,6673,103681,9375829,54018521,230686501,29134601,988681,79,157,1601,2269,370248451,99194853094755497,83,9521,6709, 173,263,1069,181,741469,4969,4531100550901,6643838879,761,769,193,599786069,197,401,743519377,919,519121,103,8288823481,119218851371,1247833,11128427,827728777,331,1459000305513721,10745088481,677,229,1381,347, 29717,709,159512939815855788121,
这是从我的生成器程序生成的数字,现在问题有源代码限制,所以我不能在我的解决方案中使用上述文本,所以我想压缩它并将其放入 python 中的数据结构中,以便我可以打印他们通过索引像:
F = [`compressed data`]
Run Code Online (Sandbox Code Playgroud)
并且F[0]会给予2 F[5]会给予7这样的...请建议我一种合适的压缩技术。
PS:我是python的新手,所以请解释你的方法。