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

问题描述

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

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

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

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

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)