首先,定义两个整数N
和K
,其中N >= K
,都在编译时已知。例如:N = 8
和K = 3
。
接下来,定义一组整数[0, N)
(或者[1, N]
如果这使答案更简单)并将其命名为S
. 例如:{0, 1, 2, 3, 4, 5, 6, 7}
S
带有元素的子集的数量K
由公式给出C(N, K)
。例子
我的问题是:为这些子集创建一个完美的最小散列。示例哈希表的大小将为C(8, 3)
或56
。
我不关心排序,只关心哈希表中有 56 个条目,并且我可以从一组K
整数中快速确定哈希。我也不关心可逆性。
示例哈希:hash({5, 2, 3}) = 42
. (数字 42 并不重要,至少在这里不重要)
是否有适用于任何值N
和的通用算法K
?我无法通过搜索谷歌或我自己的天真努力找到一个。