如何解决空间交易时间
只要花一点钱,就可以构建能够支持35 teraflops的服务器。大约每秒2 ^ 45次操作,考虑到开销和其他考虑因素,我认为可以在一秒钟内生成32-40位信息。一个1 MB的文件可能需要大约70个小时才能生成每秒32位的数据。
我有一个特定的用例,用700个小时从100KB中“解压缩” 1MB文件非常有用。我熟悉鸽子洞原理,生日悖论,以及为什么实际上不可能进行递归压缩。但是,固执地不禁想到我们可以枚举所有32位的可能性,并找到一些哈希函数输出或某种蛮力方法的匹配项,并利用数学的性质来帮助缩小问题空间。
我最初是通过使用sha-256或其他尚未发现冲突的哈希函数来思考这个问题的(尽管在给定鸽子洞的情况下,任何哈希函数都有无限次的冲突,如果我碰巧遇到了sha- 256,那么至少对研究而言是重要的。
提供224位原始数据,以及256位哈希。枚举信息的最后32位,直到找到散列的匹配项为止。现在存储224 + 256位信息来获取256位信息实际上并不是任何类型的数据压缩,但这是我首先想到的方法。
最大的开销是发送哈希,因此我尝试查看像CRC32这样的32位哈希函数,但是发生冲突的可能性太高了。似乎普通的散列是不可行的,您将需要散列的输出小于我们可以计算的合理值(〜40位),并且散列空间不足以避免冲突。现在,如果我们可以进行2 ^ 256次计算(量子?),则可以使用256位哈希,因为冲突的概率足够低,无法使用。
我仔细研究了对位置敏感的散列函数,希望给定局部性,即使散列大于32位,我也可以将问题空间限制为2 ^ 32个计算,但这并没有显示出有希望的
我正在寻找有关如何验证和生成数据的想法/建议,假设您说要在当今的计算能力(不到1万美元的设备,但ASIC / FPGA则是公平的竞争)下说约100天才能解压缩/生成。可以理解,我可能追逐的是不可行甚至不可能的事情,但是探索这些想法并扩展我的计算机科学知识比整天玩视频游戏要好。
解决方法
(顺便说一句,我部分理解了这个问题)
这个问题类似于从斐波那契数列中得出项。如果我要求某人算出斐波那契数列的第四项,他们会将第二和第三项加在一起,但是要做到这一点,您需要弄清楚第三和第二项。您会看到这花费了太长时间。您可以尝试通过将其分解为更小的步骤来简化您的工作,以便您有更多的空间或使用更少的空间来解决问题。
我不知道这是否有帮助,但我希望一切都能解决
祝你好运!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。