Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
combinaisons [2010/01/09 08:57] tyrtamos |
combinaisons [2010/01/10 07:31] tyrtamos |
||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
**//En construction// | **//En construction// | ||
- | Voir pour la définition (entre autres): [[http:// | + | ===== Objectif ===== |
- | Par exemple, on cherche les combinaisons de 3 objets pris 2 à 2: %%['A',' | + | Exemple pour des combinaisons de 3 objets pris 2 à 2. Soit une liste d'objets |
- | Contrairement aux permutations, | + | * on veut connaitre toutes les façons de les présenter 2 à 2, sans tenir compte de l' |
- | ==== Nombre de combinaisons de n objets pris k à k ==== | + | * en tenant compte si nécessaires de répétitions |
+ | |||
+ | * et on veut savoir combien | ||
+ | |||
+ | NB: Contrairement aux permutations et aux arrangements, | ||
+ | |||
+ | \\ | ||
+ | Référence externe pour la définition: | ||
+ | |||
+ | ===== Nombre de combinaisons de n objets pris k à k ===== | ||
Le calcul du nombre de combinaisons de n objets pris k à k est donnée par la formule: | Le calcul du nombre de combinaisons de n objets pris k à k est donnée par la formule: | ||
Ligne 19: | Ligne 28: | ||
Cnk = fact(n)/ | Cnk = fact(n)/ | ||
- | === Solution non-récursive === | + | ==== Solution non-récursive |
Puisque nous sommes sous Python qui sait calculer des nombres entiers énormes, nous pouvons utiliser brutalement les factorielles en prenant la fonction fact(n) présentée ailleurs sur ce site: | Puisque nous sommes sous Python qui sait calculer des nombres entiers énormes, nous pouvons utiliser brutalement les factorielles en prenant la fonction fact(n) présentée ailleurs sur ce site: | ||
Ligne 68: | Ligne 77: | ||
</ | </ | ||
- | === Solution récursive === | + | ==== Solution récursive |
La solution récursive est particulièrement simple: | La solution récursive est particulièrement simple: | ||
Ligne 150: | Ligne 159: | ||
A ne conserver que pour des considérations théoriques. | A ne conserver que pour des considérations théoriques. | ||
- | ==== Liste des combinaisons d'une liste de n objets pris k à k ==== | + | ===== Liste des combinaisons d'une liste de n objets pris k à k ===== |
+ | |||
+ | Nous savons maintenant calculer le **nombre** de combinaisons, | ||
- | Par exemple, nous voulons trouver la liste de toutes les combinaisons de de 3 objets | + | Par exemple, nous voulons trouver la liste de toutes les combinaisons de de 3 objets %%[1, |
- | Nous allons reprendre tout simplement le principe de " | + | Nous allons reprendre tout simplement le principe de " |
Cela donnera comme code: | Cela donnera comme code: | ||
Ligne 184: | Ligne 195: | ||
Comme vu précédemment, | Comme vu précédemment, | ||
- | ==== Liste des combinaisons d'une chaine de n caractères pris k à k ==== | + | ===== Liste des combinaisons d'une chaine de n caractères pris k à k ===== |
- | C'est le même principe, à part que la donnée est une chaîne de caractères, | + | C'est le même principe, à part que la donnée est une chaîne de n caractères, |
La solution la plus simple est d' | La solution la plus simple est d' | ||
Ligne 202: | Ligne 213: | ||
</ | </ | ||
- | ==== Combinaisons avec répétition ==== | + | ===== Combinaisons avec répétition |
- | Jusqu' | + | Jusqu' |
Quand l'un des éléments au moins apparait plusieurs fois dans la liste des objets, il y a deux effets dans la liste des combinaisons. | Quand l'un des éléments au moins apparait plusieurs fois dans la liste des objets, il y a deux effets dans la liste des combinaisons. | ||
- | Par exemple dans les combinaisons de [1,2,2] pris 2 à 2 qui donne [[1, 2], [1, 2], [2, 2]]: | + | Par exemple dans les combinaisons de [1,2,2] pris 2 à 2 qui donne %%[[1, 2], [1, 2], [2, 2]]%%: |
* présence de séquences contenant des répétitions. Ici: [2,2] | * présence de séquences contenant des répétitions. Ici: [2,2] |