Matlab分区问题

时间:2010-09-07 15:38:08

标签: algorithm matlab set data-partitioning

我的头脑无法找到解决问题的算法。

假设我有N个数字(比方说4)我想拥有所有X分区(X = N / 2)

示例:

{1,2,3,4}的2-分区是:(1,2)(1,3)(1,4)(2,3)(2,4)(3,4)[简单] :所有组合]

我不知道如何生成这些组合。如果你有人有一个想法(我不在乎什么语言。伪代码是完全足够的。我不在乎它是迭代还是显式)。

祝你好运, Bigbohne

3 个答案:

答案 0 :(得分:5)

Matlab具有以下功能:

http://www.mathworks.com/help/techdoc/ref/nchoosek.html

>> x = [1,2,3,4]

x =

1     2     3     4

>> nchoosek(x, 2)

ans =

 1     2
 1     3
 1     4
 2     3
 2     4
 3     4

像maxwellb这样的循环结构在matlab中非常慢......

答案 1 :(得分:1)

这是matlab代码,

myNums = [2,3,6,5];
for i = 1:size(myNums,2)
    combinationsSet{i} = nchoosek(myNums,i);
end

答案 2 :(得分:0)

foreach i in SET
    foreach j in SET
        if i < j, SAY "I have a partition ($i,$j)"
    NEXT j
NEXT i

这取决于您的集合的迭代功能,并且在N ^ 2时间内运行。

对于Matlab,请查看为您提供的功能,例如 combnk