perms
Génère le tableau des permutations des éléments donnés
Séquence d'appel
y = perms(x) y = perms(x, "unique")
Arguments
- x
Vecteur ligne ou colonne de tout type de données pour lesquelles les opérateurs size(), ==, et [] sont définis, incluant le type cell.
- "unique"
indicateur texte optionnel, pour calculer et produire uniquement les permutations uniques, sans aucun doublon. Cette option est utilisable uniquement si
x
est ordonnable : booléen, entier, réel, ou texte.- y
Tableau du type de x, avec n=size(x,"*") colonnes. Chaque ligne contient une permutation. Sans utiliser l'option "unique",
y
comprend n! lignes. Sinon, le nombre de lignes size(y,1) ≤ n! dépend de la multiplicité des valeurs dédoublonnées de x.
Description
Etant donné un vecteur x
de n
éléments,
perms(..)
calcule le nombre attendu de permutations attendues,
et vérifie qu'il y a suffisamment de mémoire vive disponible pour les calculer et les
stocker en résultat.
S'il n'y a pas suffisamment de mémoire vive, aucun calcul effectif n'est effectué, et une erreur est générée.
Sinon, les permutations sont calculées et retournées en résultat.
Lorsque "unique" est utilisé,
x est conservé, et l'ordre
des permutations dans y en tient compte. Ainsi x
pourra si besoin être trié selon l'ordre choisi par l'utilisateur,
avant d'appeler perms() . |
Pour mémoire, le poids n*n!*8 de y en octets
est listé ci-dessous en fonction du nombre n d'éléments de
x , pour x nombres décimaux, et sans
l'option "unique" : |
n | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
y [octets] | 32 | 144 | 768 | 4800 | 34560 | 288240 | 2.58×106 | 26.1×106 | 290×106 | 3.51×109 | 46.0×109 | 648×109 |
Exemples
x = [4, 7, 10]; y = perms(x) x = ["a" "b" "c" "d"]; y = perms(x)' c = {"bonjour", %pi, %t}; perms(c)
--> x = [4, 7, 10]; --> y = perms(x) y = 10. 7. 4. 10. 4. 7. 7. 10. 4. 7. 4. 10. 4. 10. 7. 4. 7. 10. --> x = ["a" "b" "c" "d"]; --> perms(x)' ans = !d d d d d d c c c c c c b b b b b b a a a a a a ! !c c b b a a d d b b a a d d c c a a d d c c b b ! !b a c a c b b a d a d b c a d a d c c b d b d c ! !a b a c b c a b a d b d a c a d c d b c b d c d ! --> c = {"bonjour", %pi, %t}; --> perms(c) ans = [1x1 boolean ] [1x1 constant] [1x1 string ] [1x1 boolean ] [1x1 string ] [1x1 constant] [1x1 constant] [1x1 boolean ] [1x1 string ] [1x1 constant] [1x1 string ] [1x1 boolean ] [1x1 string ] [1x1 boolean ] [1x1 constant] [1x1 string ] [1x1 constant] [1x1 boolean ]
Avec des éléments de multiplicité > 1 (doublons ou plus) :
perms([1 0 0]) perms([1 0 0], "unique") perms([0 1 2 0], "unique")' p = perms([0 0 0 0 1 1 1 2 2 3], "unique"); size(p)
--> perms([1 0 0]) ans = 0. 0. 1. 0. 1. 0. 0. 0. 1. 0. 1. 0. 1. 0. 0. 1. 0. 0. --> perms([1 0 0], "unique") ans = 0. 0. 1. 0. 1. 0. 1. 0. 0. --> perms([0 1 2 0], "unique")' ans = 0. 0. 0. 0. 0. 0. 1. 1. 1. 2. 2. 2. 0. 0. 1. 1. 2. 2. 0. 0. 2. 0. 0. 1. 1. 2. 0. 2. 0. 1. 0. 2. 0. 0. 1. 0. 2. 1. 2. 0. 1. 0. 2. 0. 0. 1. 0. 0. --> p = perms([0 0 0 0 1 1 1 2 2 3], "unique"); --> size(p) ans = 12600. 10. // au lieu de 10! = 3628800 lignes
Voir aussi
- grand(n,'prm',x) — Générateur de nombres pseudo-aléatoires
- factorial — factorial function : product of the n first positive integers
- unique — extrait (et trie) les éléments distincts d'un vecteur, matrice, hypermatrice
- gsort — sorts boolean, numerical and string arrays
- try — mot clé de début du bloc try dans une instruction de contrôle try-catch
Historique
Version | Description |
6.1.0 | Option "unique" ajoutée. |
Report an issue | ||
<< ones | Matrice - génération | repmat >> |