运行时高效的算法,用有限的内存检查字符串冲突

时间:2016-07-22 07:56:14

标签: string algorithm comparison collision

我有一个很大但有限的字符串集,这些字符串中的任何两个都不太可能是相同的,但这正是我想检查的内容。 所有字符串的长度大约为+/- 1个字符。

让我们假设一个例子(但数字可能会改变),我有一组300亿个字符串,每个字符串长约30个字符。在一个天真的方法中,我会将所有这些都填入哈希并检查冲突。那实际上是O(n)运行时。

由于内存是限制因素,我无法将所有字符串填充到内存中,因此我必须对数据集进行分区。假设我可以在内存中填充1亿个字符串,并且针对这些1亿个字符串检查另一个字符串基本上是O(1)运行时。

我的高效算法(就运行时而言)如何?

1 个答案:

答案 0 :(得分:0)

如果您有N个字符串,并且可以将k保留在内存中,那么您应该有N/k个分区,每个字符串只需要进行一次哈希处理但比较N/k - 1次。因此,复杂性应为O(N^2 / k)