首页 > 解决方案 > 与 ASCII 值的常规求和相比,累积分量总和哈希码函数有什么好处?

问题描述

在常规哈希表编码文本的情况下。是不是因为数字范围更大,所以碰撞更少?

编辑:累积分量总和是返回字符串 ASCII 值的阶乘的函数。即 s="string" -> s[0] + (s[0]+s[1])+ (s[0]+s[1]+s[2]) ... 直到 len(s)。

常规总和只是 s[0]+s[1]+s[2]...

标签: algorithmhashtable

解决方案


通常几个英语单词使用完全相同的字母,但顺序不同。(这些词是彼此的字谜)。(例如,天使/角度/收集)。

因为在简单的加法中顺序并不重要,所以一个单词的所有字谜都有相同的和。因此,当两个不同的键是彼此的字谜时,使用简单的和作为散列函数总是会导致冲突。

我从未听说过“累积分量总和哈希码”一词,但根据您的描述,它与Fletcher's checksum的第二部分相同。

使用以不同顺序为相同字母提供不同结果的哈希函数,例如 Fletcher 校验和的第二部分(或整个 Fletcher 校验和),可以减少哈希表中的冲突。


推荐阅读