这是什么意思的散列函数是递增的?(What does it mean for a hash func

2019-07-31 10:41发布

我听说,例如,MurmurHash2不是“增量”,但MurmurHash3是增量。 这是什么意思? 为什么是它有用吗?

Answer 1:

适合那些有先前散列消息,男稍更新到一个新的消息,M *的情况下增量散列函数,那么它应该是相当快来计算更新的消息,M *的哈希值。 这是通过计算新的散列,M *进行,从旧的散列值,米,与此相反的是需要重新计算新的散列,从头米*,这需要较长的时间的常规散列函数。

http://www.cs.berkeley.edu/~daw/papers/inchash-cs06.pdf

他们是有用的,由于这样的事实,他们更容易计算,因此不太昂贵的计算能力和时间方面。

但是他们并不适合于每一种情况。 从伯克利那纸时,他们可以在引言部分有用的一些很好的例子。



Answer 2:

我不是这方面的专家,但我认为MurmurHash3不tommarshall描述感增量。

当人们形容为增量他们可能意味着你可以计算在O(1)内存流的哈希值,即你可以有一个让你做一个API以下(伪代码):

x = Hasher()
x.add("hello ")
x.add("world!")
x.get_hash()

这将产生字符串的哈希的“Hello World”没有在任何时间点保持整个字符串在内存中。

特别是, imurmurhash-JS的JavaScript包似乎在含义使用单词“增量”。

相同的意思似乎是在使用MetroHash文档。



文章来源: What does it mean for a hash function to be incremental?