微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

小多组字符的完美散列函数

如何解决小多组字符的完美散列函数

我有一个很大的无符号字符序列(即整数 0-255)的一些小的固定长度的列表,比如说 8。我希望能够将这些序列计为无序序列(或多重集),即如果两个序列因排列不同而不同,则应认为它们相等,然后我需要查找(大量)新序列的这些计数。所以我需要一个用于关联映射的散列函数。因为我有很多多重集,所以最好使用完美的散列函数,因为这样就不需要存储键了。

显而易见的方法是对序列进行排序,然后将有序的 8 个字符编码为单个 64 位整数。这定义了一个完美的散列函数,但是排序是我目前的瓶颈。

另一种方法是对每个字符进行散列,然后对结果求和。由于加法是可交换的,因此结果与元素的顺序无关。字符的散列可以存储在查找表中。这种方法消除了瓶颈,但仍有改进的空间。

我的问题:是否存在查找表的选择,即 256 个 64 位整数来散列字符,这将为长度为 m 的多集提供完美的散列函数,对于 m

对于 m > 10 没有,因为多重集太多。我有一个 m

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。