The coolest way to generate combinations
The coolest way to generate combinations
复制标题
生成组合的最酷方法
DOI:
10.1016/j.disc.2007.11.048
复制
发表时间:
2009
期刊:
影响因子:
--
通讯作者:
A. Williams
中科院分区:
文献类型:
--
作者:
F. Ruskey;A. Williams
We present a practical and elegant method for generating all (s,t)-combinations (binary strings with s zeros and t ones): Identify the shortest prefix ending in 010 or 011 (or the entire string if no such prefix exists), and rotate it by one position to the right. This iterative rule gives an order to (s,t)-combinations that is circular and genlex. Moreover, the rotated portion of the string always contains at most four contiguous runs of zeros and ones, so every iteration can be achieved by transposing at most two pairs of bits. This leads to an efficient loopless and branchless implementation that consists only of two variables and six assignment statements. The order also has a number of striking similarities to colex order, especially its recursive definition and ranking algorithm. In the light of these similarities we have named our order cool-lex!