Algorithm 矩阵中所有可能的组合,使得所有数字之和等于一个固定值
假设我有Algorithm 矩阵中所有可能的组合,使得所有数字之和等于一个固定值,algorithm,matlab,vector,combinatorics,Algorithm,Matlab,Vector,Combinatorics,假设我有Q向量,如下所示: A_1 = [x_1,x_2,...,x_m]; A_2 = [y_1,y_2,...,y_n]; . . . A_Q = [z_1,z_2,...,z_q]; 基本上,m,n,q是正整数,不一定相等。每个向量元素x,y,z是介于(0,1)之间的数字。这些向量的一个可能组合可以是: B_1 = [x_1,y_1,...,z_1]; 在每个组合中,每个向量的一个元素应该被包含。因此,我们可以有不同的组合。现在,我想找到这样的组合,它们的元素的平均值等于一个特定的数字
Q
向量,如下所示:
A_1 = [x_1,x_2,...,x_m];
A_2 = [y_1,y_2,...,y_n];
.
.
.
A_Q = [z_1,z_2,...,z_q];
基本上,m,n,q
是正整数,不一定相等。每个向量元素x,y,z
是介于(0,1)之间的数字。
这些向量的一个可能组合可以是:
B_1 = [x_1,y_1,...,z_1];
在每个组合中,每个向量的一个元素应该被包含。因此,我们可以有不同的组合。现在,我想找到这样的组合,它们的元素的平均值等于一个特定的数字W
,即mean(B_1)=W.
注意W
是一个介于(0,1)之间的数字。
一种低效的方法是计算所有排列,然后将W
与其元素的平均值进行比较。然而,随着Q,m,n,Q的增加,计算机(MATLAB)无法处理它,这是显而易见的
你能帮我找到一个有效的方法在合理的时间内解决这个问题吗
可以说,可能没有向量,其中元素的平均值等于W。是的,这是真的。然后,是否可以找到组合,使其元素的平均值介于(W-T,W+T)之间,
其中T
介于(0,1)
之间
非常感谢。结果中每个向量最多需要一个元素,还是只需要一个?如果您的组合包含每个向量中的一个元素,则可以排除所有具有值的元素。
>Q*T
。此外,元素值是连续的还是离散的?@gdelab,正好一个。我编辑了文本。“m,n,q
是整数,>1
”这无助于我们理解问题的潜在规模。你试过了吗?我们可以迭代地生成组合,但速度要慢得多。