Проблема разбиения Matlab - PullRequest
       30

Проблема разбиения Matlab

2 голосов
/ 07 сентября 2010

Моя голова застряла в поиске алгоритма для моей проблемы.

Предположим, у меня есть N числа (скажем, 4), и я хочу иметь ВСЕ X-разделы (X = N / 2)

Пример:

2-разделы {1,2,3,4}: (1,2) (1,3) (1,4) (2,3) (2,4) (3,4) [Просто : все комбинации]

Я понятия не имею, как генерировать эти комбинации. Если у кого-то из вас есть идея в Mind (мне все равно, на каком языке. Псевдокода не достаточно. Мне все равно, итерационный он или явный).

С наилучшими пожеланиями, Bigbohne

Ответы [ 3 ]

5 голосов
/ 07 сентября 2010

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 голос
/ 07 сентября 2010

Вот код Matlab,

myNums = [2,3,6,5];
for i = 1:size(myNums,2)
    combinationsSet{i} = nchoosek(myNums,i);
end
0 голосов
/ 07 сентября 2010
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

...