我有一个代码,使用循环多项式滚动哈希(Buzhash)来计算n-gram源代码的哈希值.如果我使用小哈希值(7-8位),则存在一些冲突,即不同的n-gram映射到相同的哈希值.如果我将哈希值中的位增加到31,则有0次冲突 - 所有ngrams都映射到不同的哈希值.
我想知道为什么会这样?碰撞是否取决于文本中的n-gram数量或n-gram可以具有的不同字符数量,还是n-gram的大小?
如何在散列n-gram时使用滚动哈希值选择哈希值的位数?
hash hash-collision n-gram
hash ×1
hash-collision ×1
n-gram ×1