没有对称重复的集合中的元素组合

时间:2014-11-07 14:50:20

标签: algorithm set combinatorics

我正在寻找一种适用于任何设定大小的算法,例如{A B C}我想要以下组合:

ABC (== CBA)
ACB (== BCA)
BAC (== CAB)

[编辑] 我认为像gray code之类的东西通过仅反转当前排列(p)中的2个元素来生成下一个排列(p + 1)可能会有所帮助,但我可以还没看到模式。

2 个答案:

答案 0 :(得分:2)

如果您确保集合中的元素不同并且假设它们具有可比性,则算法应如下所示:

1) Go through all permutations
2) For each permutation take it if and only if its first element is less than
   the last one.

第二步允许每对中只有一个排列

答案 1 :(得分:0)

我觉得这可能是家庭作业,所以这里只是一个提示。

查看每对组合。

  1. 对于任何此类"匹配的对#34;,我们希望保留其中一个组合并抛弃另一个组合。如果给你一个匹配的配对"对于组合,你可以对它们进行任何操作来决定保留两者中的哪一个吗?
  2. 鉴于一对的一半,你能计算另一半吗?