Finitude
Pour chaque partition de n, définie par la suite de ses termes dans l'ordre décroissant, la série associée (qui la caractérise) est strictement croissante, à valeurs entières strictement positives et de dernier terme n. Chaque partition peut donc être représentée par l'ensemble des valeurs de cette série. L'ensemble des partitions de n s'injecte donc dans l'ensemble des parties de l'intervalle d'entiers {1, ..., n}, de cardinal 2.
En pratique, la valeur n étant toujours atteinte par la série, il est possible de ne considérer que l'ensemble des valeurs de la série qui soient strictement inférieures à n, ce qui divise par deux la majoration du cardinal de l'ensemble des partitions.
Algorithme de construction
La liste de toutes les partitions de n dans l'ordre décroissant est donnée par un algorithme itératif. Si une partition est représentée par une suite finie décroissante (ai) dont au moins un terme est strictement supérieur à 1, la partition suivante (bi) est construite comme suit :
On note k le rang du dernier terme strictement supérieur à 1 et N le nombre de termes qui valent 1 dans (ai).
Pour tout j < k, on définit bj = aj.
On définit bk = ak − 1.
En notant N = bkq + r la division euclidienne de N par bk, on définit les termes bj pour k < j < k + q + 1 par bj = bk.
Si r est non nul, on définit un dernier terme bk + q + 1 = r.
Dénombrement
Le nombre de partitions de l'entier n est classiquement noté p(n). Pour de petites valeurs de n, il peut être obtenu en décomptant les partitions produites par l'algorithme ci-dessus, mais il peut aussi être calculé à l'aide de méthodes plus calculatoires.
Par une fonction récursive
En notant, pour n et k entiers strictement positifs, p(n,k) le nombre de partitions de n en k parties, la fonction p est récursive et vérifie
- la relation suivante pour tous n et k strictement supérieurs à 1 :
p(n,k) = p(n-1, k-1) + p(n-k, k) ;
- les conditions initiales :
- p(n, k) = 0 si n < k ,
- p(n, n) = p(n, 1) = 1.
La relation provient d'une disjonction de cas parmi ces partitions :
- soit la dernière partie (la plus petite) vaut 1, auquel cas la partition est obtenue à partir d'une partition de (n-1) en (k-1) parties, par adjonction de cette dernière partie ;
- soit toutes les parties valent au moins 2, auquel cas la partition est obtenue à partir d'une partition de (n-k) en k parties, par augmentation de chaque partie d'une unité.
Ce procédé permet de calculer le nombre de partitions d'un entier avec une complexité algorithmique quadratique, en additionnant toutes les valeurs de p(n,k) lorsque k varie entre 1 et n.
| 1 | 1 | | 1 |
| 2 | 1 | 1 | | 2 |
| 3 | 1 | 1 | 1 | | 3 |
| 4 | 1 | 2 | 1 | 1 | | 5 |
| 5 | 1 | 2 | 2 | 1 | 1 | | 7 |
| 6 | 1 | 3 | 3 | 2 | 1 | 1 | | 11 |
| 7 | 1 | 3 | 4 | 3 | 2 | 1 | 1 | | 15 |
| 8 | 1 | 4 | 5 | 5 | 3 | 2 | 1 | 1 | 22 |
Relation de récurrence
Une autre méthode de calcul du nombre de partitions d'un entier se déduit du théorème du nombre pentagonal d'Euler. Celui-ci donne une relation de récurrence qui s'écrit :
p(n) = p(n − 1) + p(n − 2) − p(n − 5) − p(n − 7) + p(n − 12) + p(n − 15)...
où les termes de cette somme sont de la forme (−1)(k+1)p(n−2k(3k−1)) lorsque cette expression a un sens, avec k entier relatif. Les nombres 2k(3k−1) sont les nombres pentagonaux généralisés.