2010-09-07 6 views
2

Ma tête est coincée pour trouver un algorithme pour mon problème.Problème de partition Matlab

Supposons que je N Nombres (permet de dire 4) et je veux avoir ALL X-Partitions (X = N/2)

Exemple:

2-Partitions de {1,2,3, 4} sont: (1,2) (1,3) (1,4) (2,3) (2,4) (3,4) [Simplement: toutes les combinaisons]

Je n'ai pas de indice comment générer ces combinaisons. Si quelqu'un d'entre vous a une idée en tête (je me fiche de la langue, le pseudo-code est assez, je m'en fous si c'est itératif ou explicite).

Meilleures salutations, Bigbohne

Répondre

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

cela dépend d'une fonction itérer pour votre jeu et fonctionne en N^2 temps. Pour Matlab, vérifiez les fonctions qui vous ont été fournies, .combnk

+0

fwiw, ce sont, comme vous le dites "combinat ions ", une PARTITION est une définition différente lorsqu'on se réfère à des ensembles: une partition d'un SET {1,2,3,4} est une manière distincte de placer les éléments du SET dans différents conteneurs (sous-ensembles). Donc, {{1,2}, {3}, {4}}, est un partitionnement de {1,2,3,4}. – maxwellb

+0

cela va générer des doublons – second

+0

Fine ... MAIS !!!! Et si "X" devient plus grand que 2? ... disons ... j'ai {1,2,3,4,5,6,7,8} et je veux avoir toutes les 4-Combinaisons? comme: {1,2,3,4}, {1,2,3,5} ... – Bigbohne

1

Code est ici Matlab,

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

la boucle est pour changer le nombre d'éléments à choisir, – blueskin

Questions connexes