2012-09-07 34 views

回答

6

增量散列函数,其中如果以前 散列消息,男稍更新到一个新的消息,M *,那么它 应该是相当快速的计算更新 消息的哈希值, M *。这是通过计算来自旧的 散列值m的新散列m *来完成的,与传统的散列函数相比,散列函数必须 重新计算需要较长时间的新散列m *。

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

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

但是,它们并不适合所有情况。伯克利的这篇论文提供了一些很好的例子,介绍它们在介绍部分的用处。

+0

谢谢!病毒的例子很棒(来自纸面)。 –

+1

我很困惑这个答案。这个问题特别提到了MurmurHash3是什么意思,但我不认为它在答案中描述的意义上是递增的。也许我只是没有看到如何。 – Rotsor

3

我不是这方面的专家,但我认为MurmurHash3在tommarshall描述的意义上并不是增量的。

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

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

并且会产生一个字符串“hello world”的散列,而不会在任何时间点将整个字符串保存在内存中。

特别是,imurmurhash-js JavaScript包似乎在该含义中使用了“增量”一词。

相同的含义似乎用于MetroHash文档。

+1

也许它应该被称为“流哈希”。 – CMCDragonkai