我有一个"计算问题"我需要简化。似乎也在讨论类似的主题(例如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]
根据条件:
我真正想要的是过滤满足特定条件的所有排列: 两个条件的例子:
在这种情况下,唯一生成的排列应为:
y3 = [1,0,0,1]
y5 = [0,1,0,1]
y6 = [0,0,1,1]
生成所有排列非常容易,只需过滤不满足条件的所有行;但是,我无法弄清楚如何生成一种算法,从一开始就排除条件的排列......