Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 可变大小子集的有效枚举_Matlab_Performance_Combinations_Enumeration_Combinatorics - Fatal编程技术网

Matlab 可变大小子集的有效枚举

Matlab 可变大小子集的有效枚举,matlab,performance,combinations,enumeration,combinatorics,Matlab,Performance,Combinations,Enumeration,Combinatorics,有两个变量:i和j i从1运行到固定常数N.j从1运行到M(i),这意味着我们有一个数组 M=zeros(N,1); M=[3,2,5,4]; 另外,S是一组10个整数。对应于每个i,我必须找到所有可能的方法从S中选择数字,直到给定的最大限制M(i) 我的代码: desired_enumerations={}; for i=1:N for j=1:M(i) a = combnk(S,j); for k=1:size(a,1) desired_e

有两个变量:
i
j

i
从1运行到固定常数N.
j
从1运行到
M(i)
,这意味着我们有一个数组

M=zeros(N,1);
M=[3,2,5,4];
另外,
S
是一组10个整数。对应于每个
i
,我必须找到所有可能的方法从
S
中选择数字,直到给定的最大限制
M(i)

我的代码:

desired_enumerations={};
for i=1:N
   for j=1:M(i)
      a = combnk(S,j);
      for k=1:size(a,1)
          desired_enumerations{end+1,1}=a(k,:);
      end
   end
end
我的问题:

我想预先计算double for循环外部
S
max(M)
元素的所有可能子集,然后在for循环内部使用该数据,这样我就不必枚举double for循环内部的子集,避免重复计算

做这件事的有效方法是什么

编辑:


如果有人也能用big-O表示法给出代码的时间复杂度,这将是一个额外的收获。或者我可以打开一个新问题。

在M=65的情况下,s是[100x1]向量。你有足够的空间、内存和时间来计算。。。??你是谷歌吗?:)注意
M=0(N,1)M
时,code>无效。函数combnk返回n/K(n–k)!排。n=100,k=65,即1E27行65列。因此,您的
a
变量需要57.5个蓝白细胞:我见过一些这样的代码,即在逐个使用之前枚举所有的choose组合。而且内存管理是惊人的。相信我,你不会超过10个的。除了这种强烈的-公然的-劝阻,我强烈建议你在旅途中使用组合,也就是不要预先计算它。你用一些CPU时间换取内存。@Adiel我同意。我只是随便写下M来提出这个问题。我将不讨论有超过20个元素的S,最大值(M)将是5或6。在M=65的情况下,S是[100x1]向量。你有足够的空间、内存和时间来计算。。。??你是谷歌吗?:)注意
M=0(N,1)M
时,code>无效。函数combnk返回n/K(n–k)!排。n=100,k=65,即1E27行65列。因此,您的
a
变量需要57.5个蓝白细胞:我见过一些这样的代码,即在逐个使用之前枚举所有的choose组合。而且内存管理是惊人的。相信我,你不会超过10个的。除了这种强烈的-公然的-劝阻,我强烈建议你在旅途中使用组合,也就是不要预先计算它。你用一些CPU时间换取内存。@Adiel我同意。我只是随便写下M来提出这个问题。我将不会处理的S有超过20个元素和最大(M)将是5或6。