具有偶数元素的集合的划分

时间:2015-10-27 16:07:39

标签: algorithm discrete-mathematics

是否有任何有效的方法可以将{1, ... , 2*n}集的所有分部列入n对?

最简单的想法是列出所有排列,然后排列(a1, a2, ... , a8)表示除{{a1,a2}, ... , {a7,a8}}。在这种情况下,每个部门都有2^n * n!个排列。这是O((2n)!)

我能找到更有效的方法吗?

1 个答案:

答案 0 :(得分:0)

这是我的铅笔和纸算法:

f(set,result):
  if the set is empty:
    return result
  otherwise:
    pair one item from the set with
    each of the remaining items,
    calling f again with the pair added to
    the result and out of the set

123456
12 34 56
   35 46
   36 45
13 24 56
   25 46
   26 45
14 23 56
   25 36
   26 35
...