【发布时间】:2013-07-17 02:33:32
【问题描述】:
用于枚举所有大小为 k 的子集(来自一组大小 N)的股票算法(例如,如下所述:generate all subsets of size k from a set)倾向于使用“字典序" 顺序,其中最左边的元素变化最慢。我还发现了一种算法,可以最小化枚举中连续子集之间的差异,有点像Gray code。
我希望在每个步骤中生成一个与所有前面的子集最大不同的子集。 (这不与前面的问题表述中的“最大化连续子集之间的差异”相同。)例如,考虑一组大小为 8 的大小为 4 的子集,一个可接受的顺序开始
ABCD
EFGH
AB GH
CDEF
AB EF
CD GH
请注意,基集足够大,以至于在内存中保存 nCk 个项目是不切实际的。
【问题讨论】: