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