首先,定义两个整数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?我无法通过搜索谷歌或我自己的天真努力找到一个。