生成具有异常/条件的唯一排列

时间:2017-10-12 04:31:37

标签: r algorithm matlab permutation

我有一个"计算问题"我需要简化。似乎也在讨论类似的主题(例如post),但我在找到一个好的示例/解决方案/算法时遇到了问题。

我想要的是生成一种算法,该算法在向量中找到元素的唯一排列,并且如果满足某个条件则不会生成排列,因此肯定会减少所需的排列和计算的数量。

让我们从没有条件/例外的简单示例开始:

找到可以生成唯一排列的算法是没有问题的(参见例如John D'Errico's MATLAB代码)。假设我们有以下二进制向量:

 x = [1,1,0,0]

载体有六种独特的排列,包括载体本身:

y1 = [1,1,0,0]
y2 = [1,0,1,0]
y3 = [1,0,0,1]
y4 = [0,1,1,0]
y5 = [0,1,0,1]
y6 = [0,0,1,1]

根据条件:

我真正想要的是过滤满足特定条件的所有排列: 两个条件的例子:

  • 不要分别在第3列和第4列中生成值为1和0的排列。
  • 不会分别生成第1列和第2列中值为1和1的排列。

在这种情况下,唯一生成的排列应为:

y3 = [1,0,0,1]
y5 = [0,1,0,1]
y6 = [0,0,1,1]

生成所有排列非常容易,只需过滤不满足条件的所有行;但是,我无法弄清楚如何生成一种算法,从一开始就排除条件的排列......

0 个答案:

没有答案