对此问题的进一步说明:确定文件身份的算法
回顾:我正在寻找一种廉价的算法来确定在绝大多数时间都有效的文件身份。
我继续实施了一种算法,该算法为每个文件提供了一个“非常独特”的哈希值。
我的算法的工作方式是:
对于小于某个阈值的文件,我使用完整文件内容作为身份哈希。
对于大于阈值的文件,我会随机抽取 N 个 X 大小的样本。
我将文件大小包含在散列数据中。(意味着所有不同大小的文件都会产生不同的哈希值)
问题:
我应该为 N 和 X 选择什么值(我应该取多少个随机样本,大小是多少?)我选择了 4 个 8K 的样本,但无法验证算法。我发现快速增加样本量会降低算法的速度(因为搜索非常昂贵)
数学一:我的文件需要有多大的不同才能让这个算法崩溃。(具有相同长度的 2 个不同文件最终具有相同的哈希值)
优化一:有什么方法可以优化我的具体实现以提高吞吐量(我似乎能够在我的系统上每秒处理大约 100 个文件)。
这个实现看起来合理吗?你能想到任何现实世界的例子,这会失败吗?(我的重点是媒体文件)
相关信息:
谢谢你的帮助!