Combinatoire

Introduction

Nous allons étudier dans ce chapitre le paradoxe des anniversaires. Il s'agit d'un paradoxe au sens où la réponse au problème posé n'est pas conforme à ce que l'on pourrait attendre, il ne s'agit pas d'un paradoxe logique, il ne recèle aucune contradiction.

La question est la suivante :

Dans un amphi, à partir de combien d'étudiants est-il plus probable d'en trou­ver qui soient nés le même jour plutôt qu'ils soient tous nés un jour différent ?

Pour préciser la question, on ne tient compte que du jour et du mois de naissance, pas de l'année ni des années bissextiles, on ne considère donc que les 365 jours, il ne s'agit pas de compliquer inu­ti­le­ment l'énoncé. D'autre part, pour éviter toute ambiguïté, on ne cherche pas à trouver exactement deux étudiants nés le même jour, mais s'il existe dans cette classe au moins deux étudiants nés le même jour.

Les sondages réalisés auprès des étudiants pour estimer le nombre en question, aboutissent im­man­qua­blement à une majoration très nette de la valeur réelle. En effet, il y a \(365\) jours dans l'année et il est tentant de penser qu'il faut beaucoup d'étudiants pour espérer en trouver deux nés le même jour. Le nombre proposé le plus fréquemment est \(182\). L'origine de cette réponse est sans doute liée au seuil de probabilité recherché \(1/2\) et le nombre de jours dans une année, mais aucune justification sensée de cette estimation n'a jamais été proposée.

Nous ne ferons pas durer le suspens, le seuil est de \(23\) étudiants et ce résultat peut paraître dé­con­cer­tant (d'où le qualificatif de paradoxe au sens de la langue naturelle). Par conséquent l'expérience est systématiquement menée grandeur nature avec les étudiants qui suivent ce cours. La réalité est bien sûr conforme au résultat. L'objectif de ce chapitre est d'introduire les concepts mathématiques (pour la plupart élémentaires) qui vont permettre de le prouver. Nous verrons également que ce paradoxe constitue un avertissement très sérieux lors de la conception de certains protocoles en cryptographie.

Ensembles finis et infinis

L'ensemble des entiers naturels

Comme son nom l'indique, l'ensemble des entiers naturels collecte les nombres qui nous semblent naturels, tout au moins depuis que les hommes se sont interrogés sur le dénombrement et l'ordre. Par extrapolation, on a bien conscience qu'énumérer les nombres pourrait durer éternellement malgré la finitude de nos existences et du monde qui nous entoure. Les questionnements phi­lo­so­phi­ques, religieux et scien­ti­fi­ques autour de l'existence et la nature de l'ensemble des entiers naturels ont tellement ob­sé­dés les hommes que le fruit de ces cogitations pourrait occuper un rayon complet de bi­blio­thè­que.

Il a fallu patienter jusqu'au début du siècle dernier pour que cet ensemble soit parfaitement caractérisé, c'est-à-dire défini grâce à des propriétés intrinsèques qu'il est le seul à posséder une fois dépouillé de tout autre attribut que de sa relation d'ordre :

On appelle ensemble naturel tout ensemble \(({\mathscr N},\preceq)\) ordonné qui satisfait les trois propriétés suivantes :
  1. Toute partie non-vide de \({\mathscr N}\) admet un plus petit élément.
  2. Toute partie non-vide et majorée de \({\mathscr N}\) admet un plus grand élément.
  3. L'ensemble \({\mathscr N}\) n'admet pas de plus grand élément.

En mathématiques, l'existence d'un ensemble naturel est acquise grâce à un axiome de la théorie des ensembles, l'axiome de l'infini.*(*) La construction ef­fec­ti­ve des entiers naturels est étudiée en lo­gi­que. C'est in­du­bi­ta­ble­ment l'ensemble séminal de cette théo­rie.

Une relation d'ordre sur un ensemble qui satisfait la première propriété est appelé bon ordre et l'ensemble est dit bien ordonné.
Il existe un ensemble naturel.
Démontrez qu'un ensemble naturel est totalement ordonné.
Considérons deux éléments \(a\) et \(b\) distincts d'un ensemble naturel \({\mathscr N}\), ce qui est possible sans quoi l'ensemble \({\mathscr N}\) serait majoré et contredirait la troisième propriété des ensembles na­tu­rels. D'après l'axiome de la paire, l'ensemble \(\{a,b\}\) existe, n'est pas vide et admet donc un plus petit élément d'après la première propriété des ensembles na­tu­rels, i.e. \begin{equation*} \exists m\in\{a,b\}\quad (m\preceq a)\wedge (m\preceq b) \end{equation*} Comme \(m\in{\mathscr N}\) on a \((m=a)\vee(m=b)\) et on en déduit que \((a\preceq b) \vee (b\preceq a)\) donc tous les éléments de \({\mathscr N}\) sont comparables.

On peut démontrer, mais ce n'est pas l'objet de ce cours, que si l'on se donne deux ensembles na­tu­rels, il existe toujours entre eux une unique bijection croissante telle que sa bijection réciproque est elle aussi croissante (il s'agit d'un isomorphisme d'ensembles ordonnés, comme nous le verrons au prochain chapitre). Ceci signifie que même si ces deux ensembles naturels ne sont pas à strictement parler égaux, ils sont jumeaux, rien ne les distingue du point de vue de leurs relations d'ordres res­pec­ti­ves. Autrement dit, nous pouvons toujours identifier un ensemble naturel quelconque à un seul d'entre eux. John Von Neuman a imaginé un processus inductif de construction des éléments d'un ensemble naturel où l'ordre naturel \(\leq\) est hérité de la relation d'ordre constituée par l'inclusion ensembliste \(\subseteq\). Chaque nouvel ensemble ainsi construit contient un élément de plus que le précédent et chaque entier naturel \(n\) est codé par un ensemble de référence qui contient précisément \(n\) éléments.

Considérons \(X:=\{\upsilon,\zeta,\tau\}\) muni de l'ordre alphabétique grec et \(Y:=\{z,t,u\}\) muni de l'or­dre alphabétique latin. Démontrez qu'il existe une unique bijection croissante entre \(X\) et \(Y\) et que sa bi­jec­tion réciproque est croissante elle aussi.
L'ensemble des bijections de \(X\) dans \(Y\) n'est pas vide, prendre par exemple \(f:X\rg Y\) définie par \(f(\upsilon)=z\), \(f(\zeta)=t\) et \(f(\tau)=u\) où il est facile de vérifier que deux éléments dif­férents ont des images différentes et que tous les élements de \(Y\) ont bien un antécédent. Soit donc \(f\) une bijection quelconque de \(X\rg Y\). L'ordre alphabétique grec et l'ordre alphabétique latin nous fournissent les inégalités suivantes (nous avons utilisé le même symbole pour les deux relations d'ordre par abus de langage)‮: \begin{align} \label{eq:hyp1} \zeta &\leq \tau \leq \upsilon\\ \label{eq:hyp2} t &\leq u \leq z\\ \end{align} Puisque \(f\) est croissante, d'après \((\ref{eq:hyp1})\), elle doit satisfaire les inégalités suivantes : \begin{equation*} \label{eq:exoord} f(\zeta) \leq f(\tau) \leq f(\upsilon)\\ \end{equation*} Si \(f(\tau)\not=u\), nécessairement l'une des deux inégalités de \((\ref{eq:hyp2})\) ne sera pas satisfaite donc \(f(\tau)=u\) et il est facile de vérifier qu'alors seules les valeurs \(f(\zeta)=t\) et \(f(\upsilon)=z\) con­vien­nent. On vérifie aisément que la fonction réciproque est elle aussi croissante.

Soit \(n\in\N\), la demi-droite \(\rrbracket n,\,\rightarrow\llbracket\) n'est pas vide, sans quoi \(n\) serait le plus grand élément de \(\N\), ce qui est absurde d'après la propriété 3 d'un ensemble naturel. Donc \(\rrbracket n,\rightarrow\llbracket\) admet un plus petit élément d'après la pro­prié­té 1 et on l'appelle le successeur de \(n\) que l'on note \(\succ(n).\)*(*) Il s'agit bien sûr de l'entier \(n+1\) mais nous n'avons pas encore défini l'addition. D'après la première propriété d'un ensemble naturel, \(\N\) contient un plus petit élément, on le note \(0\), son successeur \(1\), etc. et c'est une façon d'achever l'identification de cet ensemble à l'ensemble des entiers naturels bien connu du lecteur. Dans la suite du cours, on notera \(\N^*:=\N\setminus\{0\}\).

Inspirez vous de la construction d'un successeur pour définir le prédécesseur \(\text{prec}\,(n)\) d'un entier \(n\in{\N^*}\). Indication : construisez un segment auquel vous appliquerez la propriété 2 d'un ensemble naturel.
On considère le segment \(\llbracket 0,\,n\llbracket=\{k\in\N\such k < n\}\) qui est non-vide car \(n > 0\) et qui est majoré par \(n\). Il admet donc un plus grand élément, c'est le prédécesseur de \(n\).
Démontrez que : \begin{align} \label{eq:predsucc} \forall n\in\N^{\phantom{*}}\quad &\text{pred}(\text{succ}(n))=n.\\ \label{eq:succpred} \forall n\in\N^*\quad &\text{succ}(\text{pred}(n))=n. \end{align}
Notons \(p:=\text{succ}(n)\) et \(m:=\text{pred}(p)\). Montrons que \(m=n\) par l'absurde. Supposons donc que \(m\not=n.\) Comme l'ordre naturel est un ordre total, tous les entiers naturels sont comparables, donc \(m\geq n\) ou \(m\leq n\) et si \(m\not=n\) alors \(m > n\) ou \(m < n\). Si \(m > n\) alors \(m\) est un majorant de \(n\), mais par définition \(p\) est le plus petit des majorants de \(n\), donc \(p\leq m\) ce qui est absurde puisque \(m < p\) car \(m\) est le prédécesseur de \(p\). On a donc à ce stade \(\color{#FF8}m\leq n\). Si \(m < n\) alors \(m\) ne serait plus le plus grand des minorants de \(p\) puisque \(n < p\), donc \(\color{#FF8}m\geq n\) et finalement \(n=m\). La seconde proposition se démontre de manière similaire.
Démontrez que l'ap­pli­ca­tion \(\succ\,:\N\rightarrow{\N^*}\) est une bi­jec­tion crois­san­te. En déduire que l'en­semb­le \({\N^*}\) est un ensemble naturel.
Les identités \((\ref{eq:predsucc})\) et \((\ref{eq:succpred})\) expriment que \(\text{succ}\circ\text{pred} =\text{Id}_{\N}\) et que \(\text{pred}\circ\text{succ} =\text{Id}_{\N^*}\) et ce théo­rème permet de conclure que \(\text{succ}\) et \(\text{pred}\) sont des bijections, réciproques l'une de l'au­tre. Montrons que \begin{equation} \label{eq:croissex} \forall (x,y)\in\N^2\quad x\leq y\Rightarrow\text{succ}(x)\leq \text{succ}(y). \end{equation} Par contraposition, sup­po­sons que \(\text{succ}(y) < \text{succ}(x)\). Dans ce cas \(\text{succ}(y) \leq x\) et comme \(y < \text{succ}(y)\) on en dé­duit par tran­si­ti­vi­té que \(y < x\). L'application est donc croissante.

Les trois propriétés caractéristiques d'un ensemble naturel se transportent aisément de \(\N\) à \(\N^*\). Soit \(A\) une partie non-vide de \(\N^*\), son image \(\text{pred}(A)\) par le prédécesseur est une partie non-vide de \(\N\) qui admet un plus petit élément \(a\), soit \begin{align*} \forall x\in \text{pred}(A)\quad a\leq x \end{align*} Mais d'après la croissance de l'application \(\text{succ}\), on a \(\forall x\in \text{pred}(A)\) \(\text{succ}(a)\leq\text{succ}(x)\) ce qui entraîne \(\forall x\in A\) \(\text{succ}(a)\leq x\), or \(\text{succ}(a)\in A\), c'est donc le plus petit élément de \(A\).

On procède de manière similaire pour une partie non-vide et majorée et on montre aisément que si \(\N^*\) admettait un plus grand élément alors son prédecesseur serait un plus grand élément de \(\N\) ce qui est absurde.

Il faut retenir que l'existence d'un successeur (resp. prédecesseur) n'est possible que grâce à la première (resp. deuxième) propriété d'un ensemble naturel.

L'ensemble ordonné \((\N,\leq)\) est archimédien, c'est-à-dire satisfait la propriété suivante : \begin{equation} \forall (a,b)\in(\N^*\!\times\N)\ \ \exists n\in\N\quad na > b. \end{equation}
Si \(a > b\) l'entier \(n=1\) convient. Dans le cas contraire, on considère l'ensemble \(P:=\{ka\ \mid (k\in\N)\ \wedge\ (1\leq ka\leq b)\}\). Cette partie de l'ensemble \(\N\) n'est pas vide puisque \(a\in P\) et elle est majorée par \(b\). D'après la deuxième propriété axiomatique de \(\N\), la partie \(P\) admet donc un plus grand élément \(\kappa a\). Notons \(n:=\text{succ}(\kappa)\), alors \(\kappa a < na\) et par conséquent \(na\not\in P\), soit \(b < na \).

Récurrences

Le principe de ré­cur­ren­ce (on dit parfois induction) est intimement lié à la structure d'ordre sur l'ensemble des entiers na­tu­rels. Il est parfaitement illustré par les vidéos spectaculaires de circuits de dominos qui tombent en cascade. Si l'on place correctement les dominos (i.e. si l'on s'assure qu'à tout endroit du circuit la chute d'un domino fera tomber le suivant, l'hérédité) et que l'on fait tomber le premier du circuit (l'initialisation), alors tous les dominos vont tomber à partir du premier.

Toute partie de \(\N\) qui contient \(0\) et sta­ble pour l'ap­pli­ca­tion successeur est égale à \(\N\).
Considérons une partie \(X\subseteq\N\) qui contient 0 et stable pour l'application successeur, c'est-à-dire telle que \(\succ(X)\subseteq X\). Nous allons démontrer que \(X=\N\) en faisant un rai­son­ne­ment par l'absurde en sup­po­sant que la partie \(Y:=\N\setminus X\) de \(\N\) n'est pas vide. Dans ce cas, d'après la propriété 1 d'un ensemble naturel, \(Y\) admet un plus petit élément \(y\) qui ne peut être nul puisque \(0\not\in Y\) car \(0\in X\). L'entier \(y\) admet donc un prédécesseur \(x\) qui ne peut ap­par­te­nir à \(Y\) sans quoi \(y\) ne serait plus le plus petit élément de \(Y\) puisque \(x < y\), donc \(x\in X\). Mais \(y=\succ(x)\) (cf. exercice) donc \(y\in X\) puisque \(\succ(X)\subseteq X\), ce qui contredit \(y\in Y\).

Dans les différents théorèmes de récurrence qui vont suivre (récurrence simple, récurrence forte, récurrence multiple, récurrence finie), nous avons anticipé l'étude de l'addition dans \(\N\) pour écrire \(n+1\) au lieu de \(\succ(n)\) pour respecter les notations conventionnelles utilisées pour leurs énoncés.

Soit \(P(n)\) un prédicat sur \(\N\) et \(a\in\N\). Si les deux pro­po­si­tions sui­van­tes sont satisfaites
  1. \(P(a)\)  (initialisation),
  2. \(\forall n\in\N\ \ P(n)\Rightarrow P(n+1)\) (hérédité).
alors \(\forall n\in\llbracket a,\rg\llbracket\ \ P(n)\).
On définit le prédicat \(Q(n)\) par \(P(\succ^a(n))\) sur \(\N\) où \(\succ^a\) est le \(a\)-ème itéré de la fonc­tion successeur. La partie \(\{n\in\N\such Q(n)\}\) contient 0 et est stable pour l'ap­pli­ca­tion suc­ces­seur. On applique le principe de récurrence et on déduit que \(\forall n\in\N,\ Q(n)\), autrement dit que \(\forall n\geq a,\ P(n)\).

Pour démontrer que \(P(n+1)\) est vrai, nous aurons parfois besoin de supposer que \(P(k)\) est vrai pour tous les entiers \(k\) compris entre \(a\) et \(n\).

Soit \(P(n)\) un prédicat sur \(\N\) et \(a\in\N\). Si les deux pro­po­si­tions sui­van­tes sont satisfaites
  1. \(P(a)\)  (initialisation),
  2. \(\forall n\in\N\ \ (\forall k\in\llbracket a,\,n\rrbracket \ \ P(k)) \Rightarrow P(n+1)\) (hérédité forte).
alors \(\forall n\in\llbracket a,\rg\llbracket\ \ P(n)\).
D'autres versions du théorème de récurrence peuvent s'avérer utiles. Par exemple quand il est plus facile de faire tomber un domino sur \(3\) (plus généralement un domino sur \(k\)) : \begin{matrix} {\color{#F44}\boxed{\mathbf 0}} & & {\color{#F44}\boxed{3}} & & {\color{#F44}\boxed{6}} & & {\color{#F44}\boxed{9}} & \cdots& \\ & {\color{#FF8}\boxed{\mathbf 1}} & & {\color{#FF8}\boxed{4}} & & {\color{#FF8}\boxed{7}} & & {\color{#FF8}\boxed{10}} & \cdots \\ &&{\color{#88F}\boxed{\mathbf 2}} & & {\color{#88F}\boxed{5}} & & {\color{#88F}\boxed{8}} & & {\color{#88F}\boxed{11}}&\cdots& & \end{matrix}

Dans ce cas, il suffit de faire tomber les trois premiers (les \(k\) premiers) pour tous les faire tomber.

Soit \(P(n)\) un prédicat sur \(\N\), \(a\in\N\) et \(k\in\N\). Si les deux pro­po­si­tions sui­van­tes sont satisfaites
  1. \(\forall i\in\llbracket 0,\, k-1\rrbracket\) \(P(a+i)\)  (initialisation),
  2. \(\forall n\in\N\quad P(n)\Rightarrow P(n+k)\) (hérédité)
alors \(\forall n\in\llbracket a,\rg\llbracket\ \ P(n)\).

On peut également avoir besoin de démontrer une propriété pour un nombre fini de valeurs.

Soit \(P(n)\) un prédicat sur \(\llbracket 0,\,m\rrbracket\) et \(a\in\N\). Si les deux pro­po­si­tions sui­van­tes sont satisfaites
  1. \(P(a)\)  (initialisation),
  2. \(\forall n\in\llbracket a,\,m-1\rrbracket\quad P(n)\Rightarrow P(n+1)\) (hérédité)
alors \(\forall n\in\llbracket a,\,m\rrbracket \ \ P(n)\).

En guise d'exercice, le lecteur pourra énoncer et prouver le théorème de récurrence fini descendante où l'on fait tomber un nombre fini de dominos mais en partant du dernier.

Soit \(n\) un entier naturel. Démontrez par récurrence que \begin{equation} \label{eq:sumcar} \sum_{k=0}^nk^2 = \frac{n(n+1)(2n+1)}{6}. \end{equation}
On considère le prédicat \(P(n)\) défini par l'identité \((\ref{eq:sumcar})\). C'est vrai pour \(n=0\) et on a \begin{align*} \sum_{k=0}^{n+1}k^2 &= \sum_{k=0}^{n}k^2 + (n+1)^2\\ &= \frac{n(n+1)(2n+1)}{6} + (n+1)^2\quad\text{d'après l'hypothèse de récurrence}\\ &= \frac{n(n+1)(2n+1)+6(n+1)^2}{6}\\ &= \frac{(n+1)\big(n(2n+1)+6(n+1)\big)}{6}\\ &= \frac{(n+1)(2n^2+7n+6)}{6} \end{align*} L'équation \(2n^2+7n+6=0\) admet \(-2\) et \(-3/2\) pour solutions donc \begin{align*} 2n^2+7n+6 &=2(n+2)(n+3/2)\\ &=(n+2)(2n+3) \end{align*} et finalement \begin{equation*} \sum_{k=0}^{n+1}k^2 = \frac{({\color{#FF8}n+1})(({\color{#FF8}n+1})+1)(2({\color{#FF8}n+1})+1)}{6} \end{equation*} donc \(P(n+1)\) est vrai.
Démontrez par récurrence que pout tout entier naturel \(n\), le nombre \(3^{2n}-1\) est divisible par \(8.\)
On considère le prédicat \(P(n)\) suivant : \(3^{2n}-1\) est divisible par \(8\). On a \(P(0)\) puisque \(0\) est divisible par tout entier naturel. D'autre part, \begin{align*} 3^{2(n+1)}-1&=9.3^{2n}-1\\ &=9({\color{#FF8}3^{2n}-1})+8 \end{align*} Mais d'après l'hypothèse de récurrence il existe un entier naturel \(k\) tel que \({\color{#FF8}3^{2n}-1}={\color{#FF8}8k}\), donc \begin{align*} 3^{2(n+1)}-1&=9({\color{#FF8}8k})+8\\ &=8(9k+1) \end{align*} donc \(3^{2(n+1)}-1\) est divisible par \(8\) et \(P(n+1)\) est vrai.
Démontrez par récurrence que pour tout entier naturel \(n\geq 2\), \(3^n+4^n\leq 5^n\).
On considère le prédicat \(P(n)\) suivant : \(3^n+4^n\leq 5^n\). On a l'identité bien connue des maçons \(3^2+4^2=5^2\) donc \(P(2)\) est vrai. D'autre part, \begin{align*} 3^{\color{#FF8}n+1}+4^{\color{#FF8}n+1}&=3.3^n+4.4^n\\ &\leq 5.3^n+5.4^n\\ &\leq 5(3^n+4^n)\\ &\leq 5.5^n\quad\text{d'après l'hypothèse de récurrence}\\ &\leq 5^{\color{#FF8}n+1} \end{align*} donc \(P(n+1)\) est vrai.
Démontrez que le quotient d'un entier naturel impair et d'un entier naturel pair n'est jamais entier.
Soit \(p\) un entier et \(q=2k\) un entier pair. Considérons le quotient \[\frac{p}{2k}.\] Ce quotient est entier si et seulement si \(2k\mid p\), ce qui équivaut à l'existence d'un entier naturel \(l\) tel que \(2kl=p\), et prouve que \(p\) est pair. Par contraposition si \(p\) est impair et \(q\) pair alors le quotient \(\frac{p}{q}\) n'est pas entier.
Soit \(n\in\N\setminus\{0\}\). On définit la suite réelle \((H_n)_{n\in\N\setminus\{0\}}\) par \[H_n:=\sum_{k=1}^n\frac{1}{k}.\] Démontrez par récurrence que pour \(n\geq 2\), \(H_n\not\in\N\) en montrant que \(H_n\) est le quotient d'en entier naturel impair et d'un entier naturel pair (distinguez le cas où \(n\) est pair et impair).
Considérons le prédicat le nombre \(H_n\) est un quotient dont le numérateur est un entier naturel impair et le dénominateur est un entier naturel pair. On a \(H_2=1+\frac{1}{2}=\frac{3}{2}\) donc \(P(2)\) est vrai. Supposons tout d'abord que \(n\) soit pair, soit \(n=2m\). Alors \begin{equation*} H_{n+1} = H_n + \frac{1}{2m+1} \end{equation*} mais l'hypothèse de récurrence \(P(n)\) nous permet d'écrire que \({\color{#88F}H_n}={\color{#88F}\frac{2u+1}{2v}}\), autrement dit \begin{align*} H_{n+1} &= {\color{#88F}\frac{2u+1}{2v}}+ \frac{1}{2m+1}\\ &= \frac{(2m+1)(2u+1)+2v}{2v.(2m+1)}\\ &= \frac{4mu+2m+2u+1+2v}{2v.(2m+1)}\\ &= \frac{2(2mu+m+u+v)+1}{2v.(2m+1)}\\ \end{align*} Donc \(H_{n+1}\) est le quotient \(\frac{2x+1}{2y}\) d'un nombre impair et d'un nombre pair qui n'est jamais entier.

Supposons à présent que \(n\) soit impair, soit \(n=2m-1\). Dans ce cas on regroupe les fractions dont les dénominateurs ont la même parité : \begin{align*} H_{n+1} &= H_n + \frac{1}{2m}\\ &= 1+\frac{1}{2} + \frac{1}{3} + \frac{1}{4} + \frac{1}{5} +\cdots +\frac{1}{2m-1} + \frac{1}{2m}\\ &=(1+\frac{1}{3}+\frac{1}{5}+\cdots+\frac{1}{2m-1}) + (\frac{1}{2}+ \frac{1}{4}+\cdots+ \frac{1}{2m} )\\ &=(1+\frac{1}{3}+\frac{1}{5}+\cdots+\frac{1}{2m-1}) + \frac{1}{2} (1+ \frac{1}{2}+\frac{1}{3}\cdots+ \frac{1}{m})\\ &=({\color{#FF8}1+\frac{1}{3}+\frac{1}{5}+\cdots+\frac{1}{2m-1}}) + \frac{1}{2} {\color{#88F}H_m} \end{align*} En réduisant au même dénominateur, la somme à gauche dans la dernière expression et en la notant \(\color{#FF8}\frac{a}{2w+1}\) car le dénominateur est un produit de nombres impairs donc impair. Si on fait l'hypothèse de récurrence forte, on sait que \({\color{#88F}H_m}={\color{#88F}\frac{2u+1}{2v}}\) et donc \begin{align*} H_{n+1} &= {\color{#FF8}\frac{a}{2w+1}} + {\color{#88F} \frac{2u+1}{4v}}\\ H_{n+1} &= \frac{2av+(2u+1)(2w+1)}{4bv}\\ H_{n+1} &= \frac{2(av+2uw+u+w)+1}{2(2bv)}\\ \end{align*} Le numérateur est impair et le dénominateur est donc pair.

Démontrez par récurrence qu'une relation d'ordre total définie sur un ensemble fini est nécessairement un bon ordre.
Le prédicat \(P(n)\) considéré est Une relation d'ordre total définie sur un ensemble fini de cardinal \(n\) est un bon ordre. Pour un ensemble réduit à un élément, cet élément est le minimum et \(P(1)\) est vrai. Considérons un ensemble totalement ordonné \((X,\preceq)\) de cardinal \(n+1\) et notons \(y\) l'un quelconque de ses éléments. L'ensemble \((X\setminus\{y\},\preceq)\) muni de l'ordre induit est totalement ordonné et de cardinal \(n\), l'hypothèse de récurrence nous permet d'affirmer qu'il admet un plus petit élément \(m\) : \[\forall x\in X\setminus\{y\}\ \ m\preceq x.\] Mais comme \((X,\preceq)\) est totalement ordonné, on peut comparer \(m\) à \(y\), c'est-à-dire que l'on a \[(m\preceq y)\vee(y\preceq m).\] Par transitivité de \(\preceq\), soit \(m\) est le plus petit élément de \(X\) soit c'est \(y\), mais dans les deux cas \(X\) admet un plus petit élément, il est donc bien ordonné.

Cardinaux.

Dans toutes les activités scientifiques, compter, dénombrer, estimer des quantités sont des pratiques essentielles et en apparence inoffensives. Malheureusement dès que l'on manipule des ensembles in­fi­nis, la notion de quantité s'avère délicate à généraliser et notre intuition est passablement mise en défaut. Il est par exemple logique de penser qu'il y a deux fois plus d'entiers naturels que d'entiers naturels pairs, or ce n'est pas le cas en un certain sens qu'il faudra préciser.

Plutôt que de dire que deux ensembles ont la même taille parce qu'ils ont le même nombre d'éléments, ce qui n'a de sens que si ces ensembles sont finis, on considère que deux ensembles sont de même taille si l'on est capable d'apparier chaque élément du premier avec un unique élément du second et réciproquement, à la manière des couples durant le slow du bal de promo où chaque étudiant a sa cavalière et qu'aucun ne se morfond sur le banc de touche. Les deux approches sont bien sûr équivalentes quand les ensembles sont finis, mais l'appariement a l'avantage de prolonger le concept si les ensembles sont infinis.

Deux ensembles \(X\) et \(Y\) sont dits équipotents s'il existe une bijection de \(X\) sur \(Y.\) Dans ce cas, on note \(X\approx Y\).

Le mot équipotent, contraction des mots latin equi (égal) et potent (puissant), signifie littéralement même puissance, au sens militaire du terme. L'équipotence est la bonne manière d'aborder la notion de cardinalité, elle permet de comparer la taille d'en­sem­bles quand bien même on ne peut pas les dénombrer. L'équipotence définit une relation d'équivalence sur une famille d'ensembles.

Soit \(n\in\N\). On note \(\N_n\) l'intervalle \(\llbracket 1,\,n\rrbracket \) pour l'ordre naturel avec la convention \(\N_0=\varnothing\), et on note \(\N^*\) l'en­semb­le \(\N\setminus\{0\}\). Il suffit d'observer le diagramme sagittal d'une injection, d'une surjection et d'une bijection entre deux ensembles finis pour se convaincre de la justesse de la proposition suivante (sans que cela ne constitue pour autant une preuve).

Soit \(n\) et \(m\) deux entiers naturels. Alors
  1. Il existe une injection \(f:\N_n\rightarrow\N_m\) si et seulement si \(n\leq m\),
  2. Il existe une surjection \(f:\N_n\rightarrow\N_m\) si et seulement si \(n\geq m\),
  3. Il existe une bijection \(f:\N_n\rightarrow\N_m\) si et seulement si \(n=m\).
1. La condition \(n\leq m\) est suffisante pour avoir l'injectivité, en effet si \(n\leq m\) alors l'injection canonique de \(\llbracket 1,\,n\rrbracket \) dans \(\llbracket 1,\,m\rrbracket \) fait l'affaire. Montrons qu'elle est nécessaire. Considérons le prédicat \(P(n)\) suivant : pour tout \(m\in\N\), s'il existe une injection de \(\llbracket 1,\,n\rrbracket \) dans \(\llbracket 1,\,m\rrbracket \) alors \(n\leq m\). On a \(P(0)\) car toute application dont l'ensemble de départ est vide est injective. Soit \(m\) un entier quelconque et \(f:\llbracket 1,\,n+1\rrbracket\rightarrow\llbracket 1,\,m\rrbracket \) une injection. On vérifie aisément que l'application \begin{equation*} g:\ab{1}{n} \rightarrow\ab{1}{m} \setminus\{f(n+1)\} \end{equation*} définie par \(g(x):=f(x)\) est une injection. D'autre part en renumérotant les éléments de l'en­semb­le \(\llbracket 1,\,m\rrbracket \setminus\{f(n+1)\}\) à partir du trou laissé par \(f(n+1)\) dans l'ensemble \(\llbracket 1,\,m\rrbracket \) grâce à la bijection (à vérifier par le lecteur) \(\sigma:\llbracket 1,\,m\rrbracket \setminus\{f(n+1)\}\rg\llbracket 1,\,m-1\rrbracket\) définie par \begin{equation*} \sigma(i):=\begin{cases} f(i) & \text{si}\ f(i) < f(n+1),\\ f(i)-1 &\text{si}\ f(i) \geq f(n+1) \end{cases} \end{equation*} l'application \(\sigma\circ g\) est une injection de \(\llbracket 1,\,n\rrbracket \) dans \(\llbracket 1,\,m-1\rrbracket\) et l'hypothèse de récur­ren­ce nous donne \(n\leq m-1\) soit \(n+1 \leq m\).

2. Supposons que \(f:\llbracket 1,\,n\rrbracket \rightarrow\llbracket 1,\,m\rrbracket \) soit surjective. Par définition, pour tout entier \(k\in\llbracket 1,\,m\rrbracket \) son image réciproque \(f^{-1}(k)\) n'est pas vide, elle admet donc un plus petit élément \(x_k\) d'après la première propriété d'un ensemble naturel. Ceci prouve que l'on définit bien une application \(x:\llbracket 1,\,m\rrbracket \rightarrow\llbracket 1,\,n\rrbracket \) par \[\forall k\in\llbracket 1,\,m\rrbracket\quad x_k:=\min f^{-1}(k).\] Elle est injective car si \(x_k=x_l\) alors \(f(x_k)=f(x_l)\) or \(f(x_k)=k\) et \(f(x_l=l\). On applique alors le résultat précédent.

3. C'est la conséquence des deux premières propositions.

D'après la troisième assertion de la proposition ci-dessus, si un ensemble \(X\) est en bijection avec deux ensembles \(\N_m\) et \(\N_n,\) on a né­ces­sai­re­ment \(n=m\). En effet, en notant \(f:X\rg\N_n\) et \(g:X\rg\N_m\) ces deux bijections, la composée \(g\circ f^{-1}\) définit une bijection de \(\N_n\) dans \(\N_m\). Ceci légitime la définition suivante :

Un ensemble \(X\def\count#1{\,|#1|\,}\) équipotent à un ensemble \(\N_n\) est dit fini et l'entier \(n\) est appelé son cardinal. Dans le cas contraire, il est dit infini.

On ne parle de cardinal d'un ensemble que si cet ensemble est fini, dans le cas contraire il faut parler d'ensemble infini et non pas d'ensemble de cardinal infini, même si cet abus de langage est souvent pratiqué. Le cardinal d'un ensemble fini \(X\) est noté in­dif­fé­rem­ment \(\#X\) (usuel chez les anglo-saxons), \(\count{X}\) ou \(\text{card}(X)\).

Si la proposition précédente ne s'applique qu'aux ensembles finis, l'utilisation des in­jec­tions/­sur­jec­tions/­bi­jec­tions permet de comparer les ensembles en toute généralité. Qu'ils soient finis ou non, on évite la comptabilité. On comprend intuitivement que si l'on dispose d'une application \(f:X\rg Y\) injective entre deux ensembles infinis \(X\) et \(Y\), alors \(Y\) est au moins aussi gros que \(X\), et inversement si \(f\) est surjective.

Toute partie de \(\N\) est finie si et seulement si elle est majorée.
Nous nous contenterons de donner ici les grandes lignes de la preuve, la rédaction est laissée en exercice. La condition est nécessaire : si \(P\) est une partie finie de \(\N\), par définition on peut numéroter ses éléments, i.e. \(P=\{p_1,p_2,\ldots,p_n\}\). Nous allons trier \(P\) dans l'ordre croissant. Pour cela, on définit inductivement les ensembles \(P_j\) et les entiers \(m_i\) par \begin{align*} P_{k}&:=\begin{cases} P_{k-1}\setminus\{m_{k-1}\}&\text{si}\ k > 1\\ P&\text{si}\ k=1 \end{cases}\\ m_k&:=\min P_k\quad\forall k\in\llbracket 1,\,n\rrbracket . \end{align*}

On cherche pour chaque \(i\) le minimum de la partie \(P_i\) (c'est l'algorithme du tri sélection). L'existence du minimum \(m_k\) se prouve par récurrence finie sur le prédicat \(P_k\) n'est pas vide pour pouvoir appliquer la première propriété des ensembles naturels. Pour chaque valeur de \(i\) il existe un unique \(j\) tel que \(m_i=p_j\), on définit ainsi une bijection croissante \(\sigma:\llbracket 1,\,n\rrbracket \rightarrow\llbracket 1,\,n\rrbracket \) (il s'agit d'une permutation) telle que \(m_i=p_{\sigma(i)}\). Par conséquent \(m_k\) est le plus grand élément de \(P\) et donc un majorant de \(P\).

La condition est suffisante. En effet, si \(P\) est majorée on note \(n\) le plus petit de ses majorants (il existe puisque l'ensemble des majorants de \(P\) n'est pas vide). Si \(P\) est vide, il n'y a rien à montrer, sinon d'après la deuxième propriété des ensembles naturels, ce plus petit majorant est le plus grand élément de \(P\), on le note \(p_1\). Cette fois on va chercher inductivement le plus grand élément \(p_2\) de \(P\setminus\{p_1\}\), etc. Ce procédé de construction doit s'arrêter avec une valeur \(p_k\) sans quoi on prouverait que \(P\) n'était pas une partie finie de \(\N\). Nous aurons finalement exhibé une bijection entre un intervalle \(\llbracket 1,\,k\rrbracket \) et \(P\).

L'ensemble \(\N\) est infini.
En effet si \(\N\) était fini, il admettrait un majorant et la deuxième propriété d'un ensemble naturel impliquerait que \(\N\) admettrait alors un plus grand élément ce qui est en con­tra­dic­tion avec la troisième propriété d'un ensemble naturel.

Soit \(X\) et \(Y\) deux ensembles et \(f:X\rightarrow Y\) une application. On démontre que :

  1. Toute partie \(A\) d'un ensemble fini \(X\) est finie et \(\count{A}\leq\count{X}\).
  2. L'intersection d'une famille quelconque d'ensembles finis est fini,
  3. Si \(X\) est fini alors \(\count{f(X)}\leq \count{X}\) avec égalité si et seulement si \(f\) est injective.
  4. Si \(X\) est fini et \(f\) surjective, alors \(Y\) est fini et \(\count{Y}\leq \count{X}\) avec égalité si et ssi \(f\) est bijective.
  5. Si \(f\) est injective et \(f(X)\) est fini alors \(X\) est fini et \(\count{X}=\count{f(X)}\).

On déduit de ces résultats le théorème suivant :

Soit \(X\) et \(Y\) deux ensembles finis de même cardinal et \(f:X\rightarrow Y\) une ap­pli­ca­tion. Alors les trois assertions suivantes sont équivalentes :
  1. \(f\) est injective,
  2. \(f\) est surjective,
  3. \(f\) est bijective.
Autrement dit, si \(f\) est injective ou surjective et que l'on note respectivement \(a\) (resp. \(b\)) les bijections entre \(X\) (resp. \(Y\)) et \(\N_n\) le diagramme suivant est commutatif : \begin{equation*} \begin{CD} X @>{f}>> Y\\ @VaVV\swarrow\!\!{}_b \\ \N_n \end{CD} \end{equation*}

On définit l'addition de deux entiers naturels comme l'application \(+:\N\times\N\rightarrow\N\) définie par \begin{equation} \label{def:loiadd} x+y:=\count{X\cup Y} \end{equation} où \(X\) et \(Y\) sont deux ensembles quelconques disjoints et de cardinaux respectifs \(x\) et \(y\). On définit également le produit ou la multiplication de deux entiers naturels comme l'application \(\times:\N\times\N\rightarrow\N\) définie par \begin{equation} \label{def:loiprod} x\times y:=\count{X\times Y} \end{equation} mais cette fois les deux ensembles peuvent ne pas être disjoints. Notons que nous avons écrit ces applications avec une notation infixe plutôt que préfixe, \(x+y\) au lieu de \(+(x,y)\). Nous verrons au chapitre VI consacré aux structures que ces applications cons­ti­tuent des lois de compositions internes sur l'ensemble \(\N\) et nous étudierons leurs propriétés générales qui sont déjà bien connues du lecteur pour l'ensemble \(\N\).

La relation binaire notée \(\mid\) et définie sur \(\N\) par \begin{equation} a\mid b\ \Leftrightarrow\ \exists c\in {\N}\ \ ac=b \end{equation} est une relation d'ordre appelée divisibilité.

Si \(a\mid b\), on dit que \(a\) divise \(b\) ou que \(a\) est un diviseur de \(b\) ou encore que \(b\) est un multiple de \(a\). C'est une relation d'ordre partiel (cf. exercice).

On dit qu'un entier naturel est premier s'il admet exactement deux diviseurs.

D'après cette définition, le nombre entier \(1\) n'est pas un nombre premier, il n'admet qu'un seul diviseur. Le plus petit nombre premier est donc l'entier naturel \(2\) et c'est le seul qui soit pair. On définit le plus grand commun diviseur comme le plus grand entier qui divise à la fois \(a\) et \(b\), on le note à la manière d'un couple \((a,b)\) ou parfois \(a\wedge b\), le contexte évitant toute confusion en général :

\[(a,b):=\text{max}\{k\in\N\such (k\mid a)\wedge(k\mid b)\}.\]

On définit le plus petit commun multiple de deux entiers \(a\) et \(b\), parfois noté \([a,b]\) ou encore \(a\vee b\) :

\[ [a,b]:=\text{min}\left(\{ka\mid k\in\N\}\cap \{kb\mid k\in\N\}\right).\]

Si \((a,b)=1\), on dit que \(a\) et \(b\) sont premiers entre eux. Nous re­vien­drons en détail sur cette relation particulière et les interactions entre les deux lois additive et mul­tip­li­ca­ti­ve dans le chapitre consacré à l'Arithmétique.

Un ensemble équipotent à \(\N\) est dit dénombrable. Un ensemble fini ou dé­nom­bra­ble est dit au plus dénombrable.
Définissez l'ensemble des nombres premiers \(\mathscr P\) en logique des prédicats.
Par exemple, \[{\mathscr P}:=\big\{n\in\N\such\#\{d\in\ab{1}{n}\such d\mid n\}=2\big\}\] ou plus proche de la définition du lycée \[{\mathscr P}:=\big\{n\in\N\such (n\geq 2)\wedge\big(\forall k\in\N\ \ (k\mid n)\then (k=1)\vee(k=n)\big)\big\}\]
Attention au vocabulaire ! En français dénombrable signifie que l'on est ca­pa­ble de compter les éléments, donc synonyme de fini, alors qu'en ma­thé­ma­ti­ques un ensemble dénombrable est toujours infini. Le mot dénombrable signifie dans notre contexte que l'on peut énumérer. Ce qu'il faut absolument retenir c'est que l'on peut toujours numéroter les éléments d'un ensemble \(X\) au plus dénombrable (fini ou dénombrable). S'il est fini on peut l'écrire \(X=\{x_i\such i\in\N_n\}\) et s'il est dé­nom­bra­ble alors \(X=\{x_i\mid i\in\N\}\). Ce n'est que la stricte ap­pli­ca­tion des définitions. Dans les deux cas, \(x\) est une application à valeur dans \(X\) et on écrit \(x_i\) au lieu de \(x(i)\) pour décrire l'élément de \(X\) dont le numéro est \(i\).

Il existe des ensembles non-dénombrables, autrement dit des ensembles tellement gros, qu'il est impossible de numéroter tous leurs éléments. Un résultat très important dû à Cantor, est qu'aucun ensemble \(X\) ne peut être équipotent à l'ensemble de ses parties \({\mathscr P}(X)\). Par exemple, il n'existe donc aucune bijection entre \(\N\) et l'ensemble des parties des entiers naturels \({\mathscr P}(\N)\). Comme l'application \(i:\N\rg{\mathscr P}(\N)\) définie par \(n\mapsto\{n\}\) est injective, il devient évident que \({\mathscr P}(\N)\) est plus gros que \(\N\). Un autre ensemble bien connu et qui n'est pas dénombrable est l'ensemble des nombres réels \(\R\). Nous ne le démontrerons pas dans ce cours.

On dit parfois qu'un ensemble est discret s'il est au plus dénombrable, dans le cas con­trai­re on dit qu'il est continu. Le terme discret qualifie plus généralement tout processus (au sens large) dans lequel le temps ou l'espace est indexé par un ensemble au plus dé­nom­bra­ble. Exemple : une horloge dont l'aiguille des secondes fait un bond à la position suivante à chaque seconde (processus discret) versus une horloge dont l'aiguille des secondes tourne continument autour du cadran (processus continu).

Nous pouvons à présent illustrer ce que nous disions en introduction au sujet des ensembles infinis et de la nécessité de se méfier de nos intuitions. Prenons par exemple l'ensemble des entiers naturels pairs : \[P:=\{n\in\N \such \exists k\in\N\ \ n=2k\},\] (parfois noté \(2\N\)) et soit \(f:\N\rightarrow P\) l'application définie par \(f(n):=2n\). Elle est injective car \(f(n)=f(m)\iff 2n=2m\iff n=m\). Elle est surjective car tout élément \(y\in P\) est pair ce qui signifie par définition qu'il existe un entier \(k\) tel que \(y=2k\), autrement dit \(k\) est l'antécédent de \(y\) que l'on cherchait. En conclusion, l'ensemble des entiers naturels pairs est équipotent à l'ensemble des entiers naturels, ce qui contredit l'idée informelle qu'il y a deux fois plus d'entiers que d'entiers pairs. C'est un résultat contre-intuitif puisque \(P\) est strictement inclus dans \(\N\) et pourtant les éléments de ces deux ensembles sont en bijection.

Démontrez que les ensembles \(\N\) et \(\Z\) sont équipotents.
On considère par exemple l'application \(f:\N\rightarrow\Z\) définie par \begin{equation*} f(n):=\begin{cases} k&\text{si}\ n=2k,\\ -(k+1)&\text{si}\ n=2k+1. \end{cases} \end{equation*} autrement dit les entiers pairs sont redéployés sur les entiers relatifs positifs et les entiers impairs sur les entiers relatifs négatifs.

L'application \(f\) est injective : si \(n\) et \(m\) n'ont pas la même parité, alors leurs images n'ont pas le même signe; s'ils sont tous les deux pairs i.e. \(n=2k\) et \(m=2l\) alors \(f(n)=k\) et \(f(m)=l\), donc \(f(n)=f(m)\Rightarrow n=m\) et s'ils sont tous les deux impairs, i.e. \(n=2k+1\) et \(m=2l+1\) alors \(f(n)=f(m)\Rightarrow -(k+1)=-(l+1)\) donc \(k=l\) et finalement \(n=m\).

L'application est surjective : soit \(k\in\Z\), si \(k\geq 0\), alors l'entier \(n:=2k\) est un antécédent de \(k\) puisque \(f(2k)=k\) et si \(k < 0\) alors l'entier \(-(2k+1)\) est un antécédent de \(k\) puisque \begin{align*} f(-(2k+1))&=f(2{\color{#FF8}(-k-1)}+1)\\ &=-({\color{#FF8}(-k-1)}+1)\\ &=k. \end{align*}

Analyse combinatoire

Il s'agit à présent d'étudier les cardinaux de certains ensembles finis. Cela va nous permettre (enfin) d'étudier le paradoxe des anniversaires. Plus généralement, calculer le cardinal d'ensembles est in­dis­pen­sa­ble en probabilités discrètes. Nous admettrons les propositions les plus difficiles à démontrer.

La définition de la multiplication de deux entiers \(n\) et \(m\) justifie immédiatement la proposition suivante et fournit au pas­sa­ge l'ex­pli­ca­tion de la notation du produit cartésien :

Soit \(X\) et \(Y\) deux ensembles finis. Alors \begin{equation} \label{eq:countXtimesY} \count{X\times Y}=\count{X}\times\count{Y}. \end{equation}
Un bar propose des boissons composées d'un liquide (eau, lait, thé) et d'un sirop (fraise, pêche, orange, citron, ananas, grenadine, cassis, pomme, poire). Combien de boissons différentes le bar peut-il concevoir ?
On considère l'ensemble \(L\) des liquides, de cardinal \(3\) et l'ensemble \(S\) des sirops de cardinal \(9\). On modélise une boisson comme un couple du produit cartésien \(L\times S\) dont le cardinal fournit le nombre de boissons différentes : \(27=3\times 9\).

En itérant cette proposition \(n-1\) fois, on obtient le corollaire

Soit \(X\) le produit cartésien \(X_1\times X_2\times\cdots\times X_n\) de \(n\) ensembles finis. Alors \begin{equation} \label{eq:cardprodcart} \count{X}=\prod_{i=1}^n\count{X_i}. \end{equation}
On considère le prédicat \(P(n)\) suivant : Le produit cartésien de \(n\) ensembles finis \((X_i)_{i\in\llbracket 1,\,n\rrbracket }\) est un ensemble fini de cardinal \(\prod_{i=1}^n\count{X_i}.\)

Notons \(\Pi_k:=\prod_{i=1}^kX_i\) le produit cartésien des ensembles \(X_i\). D'après la proposition pré­cé­den­te, \(\count{\Pi_2}=\count{X_1}.\count{X_2}\) donc \(P(2)\) est vrai. Soit \(k\in\llbracket 1,\,n\llbracket \). On a \begin{align*} \Pi_{k+1} &=\prod_{i=1}^{k+1}X_i\\ &=(\prod_{i=1}^{k}X_i)\times X_{k+1}\\ &=\Pi_k\times X_{k+1} \end{align*} D'après la proposition précédente, on en déduit que \(\count{\Pi_{k+1}} = {\color{#FF8}\count{\Pi_k}}.\count{X_{k+1}}\) et l'hypothèse de récurrence \({\color{#FF8}\count{\Pi_{k}}} = {\color{#FF8}\prod_{i=1}^k\count{X_i}}\) nous permet de conclure que \begin{equation*} \count{\Pi_{k+1}}=\left({\color{#FF8}\prod_{i=1}^k\count{X_i}}\right).\count{X_{k+1}} = \prod_{i=1}^{k+1}\count{X_i}. \end{equation*} On a donc montré \(P(k+1)\) et le théorème de récurrence finie achève la preuve.

La carte d'un restaurant propose \(3\) entrées, \(4\) plats et \(4\) desserts. Combien de menus différents constitués d'une entrée suivie d'un plat puis d'un dessert peut-il composer ?
Il faut tout d'abord modéliser le problème, c'est-à-dire trouver l'objet formel mathématique qui le représente le mieux possible. On note \(E\), \(P\) et \(D\) les ensembles des entrées, plats et desserts de cardinaux \(3\), \(4\) et \(4\) respectivement. Un menu peut-être représenté par un triplet \((e,p,d)\in E\times P\times D\), qui non seulement intègre les éléments cons­ti­tu­tifs du menu mais également leur ordre d'apparition. Le nombre de menus différents est donc le cardinal de l'ensemble \(E\times P\times D\) qui vaut \(3\times4\times 4=48\) d'après le corollaire.

Nous déjà rencontré la notation \(Y^X\) pour désigner l'ensemble des applications d'un ensemble \(X\) dans un ensemble \(Y\), en voici la justification :

Soit \(X\) et \(Y\) deux ensembles finis. Alors \begin{equation} \label{eq:nbapplications} \count{Y^X}=\count{Y}^{|X|}. \end{equation}
Puisque \(X\) est fini, notons \(n\) son cardinal et posons \(X=\{x_1,x_2,\ldots,x_n\}\) et \(X_i:=\{x_i\}\times Y\). D'après \((\ref{eq:countXtimesY})\) on a \begin{align*} \forall i\in\llbracket 1,\,n\rrbracket \quad\count{X_i} &=\count{\{x_i\}\times Y}\\ &=\count{\{x_i\}}\times\count{Y}\\ &=\count{Y}. \end{align*} donc en appliquant l'identité \((\ref{eq:cardprodcart})\) du corollaire précédent, on en déduit que \[ \count{\prod_{i=1}^nX_i}=\count{Y}^n=\count{Y}^{\count{X}}. \]

Il ne reste plus qu'à montrer que \(Y^X\) est équipotent à \(\prod_{i=1}^nX_i\), il nous faut donc construire une bijection \(\color{#FF8}s\) entre ces deux ensembles. Soit \(f=(X,G,Y)\) une application de \(X\) dans \(Y\) de graphe \(G\). Par dé­fi­ni­tion d'une application, on a : \[ G=\left\{(x_i,f(x_i))\;\mid\; i\in\N_n\right\}. \] On définit alors l'ap­pli­ca­tion \({\color{#FF8}s}:Y^X\rightarrow\prod_{i=1}^nX_i\) par \[ {\color{#FF8}s}(f)=(c_1,c_2,\ldots,c_n)\ \ \text{où}\ c_i:=(x_i,f(x_i)) \] L'application \(s\) est évidemment injective, deux applications distinctes de \(X\) dans \(Y\) ont des graphes distincts, on associe donc bien deux \(n\)-uplets de couples distincts à des applications distinctes. Elle est également surjective car tout \(n\)-uplet \(\big((x_1,y_1),\ldots,(x_n,y_n)\big)\) de \(\prod_{i=1}^nX_i\) définit le graphe d'une application de \(X\) dans \(Y\).

Soit \(X\) un ensemble fini, alors \begin{equation} \label{eq:cardparties} \count{{\mathscr P}(X)}=2^{\count{X}}. \end{equation}
Puisque \(X\) est fini, notons \(n\) son cardinal et posons \(X=\{x_1,x_2,\ldots,x_n\}\). Montrons que l'ensemble \({\mathscr P}(X)\) est équipotent au produit cartésien \(\{0,1\}^n\), il suffira alors d'appliquer \((\ref{eq:cardprodcart})\). On dé­fi­nit l'application \(\chi:{\mathscr P}(X)\rightarrow \{0,1\}^n\) par \begin{equation} \label{eq:vecteurcaract} \chi(A):=(1_A(x_1),1_A(x_2),\ldots,1_A(x_n)), \end{equation} où \(1_A\) est l'indicatrice de la partie \(A\), i.e. \begin{equation*} 1_A(x):=\begin{cases}1&\text{si}\ x\in A,\\0&\text{sinon}.\end{cases} \end{equation*} L'application \(\chi\) est injective, à deux parties distinctes de \(X\) elle associe deux \(n\)-uplets distincts, et surjective puisqu'à un \(n\)-uplet \((b_1,b_2,\ldots,b_n)\) de \(\{0,1\}^n\) on associe la partie \(A:=\{x_i\mid b_i = 1\}\) de \(X\).
Le \(n\)-uplet dans l'égalité \((\ref{eq:vecteurcaract})\) dans la démonstration de ce corollaire est appelé vecteur caractéristique de la partie \(A\). C'est une représentation des parties d'un ensemble extrêmement utilisée en informatique, les vecteurs caractéristiques ne sont en effet ni plus ni moins que des séquences binaires que les processeurs des ordinateurs manipulent parfaitement. Ainsi les opérations ensemblistes sont particulèrement efficaces quand les ensembles sont codés sous cette forme.

Certains auteurs utilisent la notation \(2^X\) pour désigner l'ensemble des parties d'un ensemble \(X\), identifiant implicitement les parties de \(X\) aux applications de \(X\) dans l'ensemble \(\{0,1\}\) (voir la construction des entiers naturels par J. Von Neumann).

De combien de façons différentes peut-on colorier les \(27\) pays de l'union européeenne sur une carte de géographie si l'on dispose de \(5\) couleurs ?
En codant les pays à l'aide des entiers de l'intervalle \(\ab{1}{27}\) et les couleurs par les entiers de l'intervalle \(\ab{1}{5}\), choisir une couleur pour chacun des \(27\) définit une application \(c:\ab{1}{27}\rg\ab{1}{5}\), et il y en a \(5^{27}\) différentes d'après (\ref{eq:nbapplications}).
Soit \((X_i)_{i\in I}\) une partition d'un ensemble fini \(X.\) Alors l'ensemble d'indexation \(I\) et les ensembles \(X_i\) sont finis et on a la formule de sommation : \begin{equation} \label{eq:sommation} \count{X} = \sum_{i\in I}\count{X_i}. \end{equation}
Les \(X_i\) sont finis car ce sont des parties d'un ensemble fini. L'application de \(I\) dans \({\mathscr P}(X)\) définie par \(i\mapsto X_i\) est injective car les ensembles \(X_i\) sont deux-à-deux disjoints par définition d'une partition. D'autre part, \({\mathscr P}(X)\) est fini d'après \((\ref{eq:cardparties})\). On dispose donc d'une injection de \(I\) dans un ensemble fini, donc \(I\) est fini. La formule \((\ref{eq:sommation})\) provient de la définition de l'addition dans \(\N\) grâce à une récurrence finie (laissée au lecteur).
Soit \(X\) et \(Y\) deux ensembles finis distincts tels que \(X\cap Y\neq\varnothing\). Montrez que \(|X\cup Y|=|X\setminus Y|+|Y\setminus X|+|X\cap Y|\).
Il suffit de montrer que les trois ensembles \(X\setminus Y\), \(Y\setminus X\) et \(X\cap Y\) forment une partition de \(X\cup Y\) et la formule de sommation permet de conclure. Les ensembles \(X\setminus Y\), \(Y\setminus X\) ne peuvent être vides puisque \(X\neq Y\) et \(X\cap Y\neq\varnothing\) par hypothèse. Montrons qu'ils sont deux-à-deux disjoints. Par l'absurde, supposons que \((X\setminus Y)\cap(Y\setminus X)\neq\varnothing\) et notons \(x\) un élément de cette intersection. Comme \(x\in X\setminus Y\) on a \((x\in X)\wedge(x\not\in Y)\) et ce qui est absurde puisque \(x\in Y\setminus X\). D'autre part si \(x\in X\cap Y\), il ne peut appartenir ni à \(X\setminus Y\), ni à \(Y\setminus X\) puisqu'il doit appartenir à \(X\) et à \(Y\). Reste à montrer que la réunion des trois ensembles est égale à \(X\cup Y\). La preuve que leur réunion est incluse dans \(X\cup Y\) est évidente, et si \(x\in X\cup Y\) alors \((x\in X)\vee(x\in Y)\) ce qui est logiquement équivalent à \[\big((x\in X)\wedge(x\not\in Y)\big)\vee\big((x\in Y)\wedge(x\not\in X)\big)\vee\big((x\in X)\wedge(x\in Y)\big)\] qui exprime que \(x\) appartient à l'un des trois ensembles.
La carte d'un restaurant propose \(3\) entrées, \(4\) plats et \(4\) desserts (cf. cet exercice). Combien de menus différents le client peut-il constituer si son menu ne contient pas nécessairement l'intégralité des trois éléments ?
On reprend le même modèle où \(E\), \(P\) et \(D\) désignent les ensembles des entrées, plats et desserts de cardinaux respectifs \(3\), \(4\) et \(4\). Si le client peut constituer son menu comme il l'entend, il contient un seul, deux ou trois des éléments entrée, plat, dessert. Autrement dit, son menu est un élément de l'ensemble : \[({\color{#FF8}\underset{3}{E}\sqcup\underset{4}{P}\sqcup\underset{4}{D}})\sqcup{(\color{blue}\underset{3\times4}{(E\times P)}\sqcup\underset{3\times4}{(E\times D)}\sqcup\underset{4\times4}{(P\times D)}})\sqcup({\color{darkgreen}\underset{3\times4\times 4}{E\times P\times D}}).\] et ces \(7\) ensembles constituent une partition de l'ensemble des menus possibles, on peut donc en calculer le cardinal grâce à la formule de sommation (\ref{eq:sommation}) : \[{\color{#FF8}3+4+4}+{\color{blue}12+12+16}+{\color{darkgreen}48}=99.\]

Soit \(f\) une surjection entre deux ensembles finis \(X\) et \(Y\). S'il existe un entier \(k\) tel que \(\forall y\in Y\ \ \count{f^{-1}(\{y\})}=k\) alors \begin{equation} \count{X} = k\,\count{Y}. \end{equation} Cette propriété est appelée principe des bergers.
On applique la formule de sommation à la partition associée à la relation d'équivalence définie sur \(X\) par \(f(x)=f(y)\).
Formalisez et démontrez le principe des tiroirs : si \(n\) caleçons sont rangées dans \(m\) tiroirs (peu importe dans quel ordre) avec \(n > m\), un tiroir contient au moins \(2\) caleçons.

On définit l'application factorielle de \(\N\) dans \(\N\) par

\begin{equation} n\mapsto\begin{cases} 1&\text{si}\ n=0,\\ n\times(n-1)\times(n-2)\times \cdots\times 3\times 2\times 1&\text{si}\ n>0. \end{cases} \end{equation}

Et on note \(n!\) l'image d'un entier \(n\) pour cette application. C'est une fonction qui croît ex­trê­me­ment ra­pi­de­ment, bien plus rapidement que la fonction exponentielle. On a par exemple \(10!=3\,628\,800\) alors que \(\text{exp}(10)\approx 22\,026\).

Soit \(X\) et \(Y\) deux ensembles finis de cardinaux \(p:=\count{X}\) et \(n:=\count{Y}\) tels que \(0\leq p \leq n\). Le nom­bre d'injections de \(X\) dans \(Y\) est l'entier \begin{equation} \label{eq:nbinjections} \frac{n!}{(n-p)!} \end{equation}
Une injection de \(X\) dans \(Y\) est avant tout une application et pour la construire il est né­ces­sai­re d'associer une image \(f(x)\) à chaque élément \(x\in X\) en s'assurant que cette image n'est pas celle d'un autre élément de \(X\). Puisque \(X\) est fini de cardinal \(p\), par définition on peut numéroter ses éléments de \(1\) à \(p\), i.e. \(X=\{x_1,x_2,\ldots,x_p\}\). Pour définir inductivement l'image de chacun des \(x_i\) pour \(i\) allant de \(1\) à \(p\) en assurant l'injectivité, il faut compter combien d'éléments dans \(Y\) n'ont pas encore d'antécédents. Pour fixer une image à \(x_1\), tous les éléments de \(Y\) sont disponibles, il y a donc \(n\) images possibles. À ce stade, il ne reste que \(n-1\) images possibles pour \(x_2\) et ceci pour chacun des \(n\) choix de \(x_1\) soit \(n(n-1)\) images possibles pour \(x_1\) et \(x_2\). On continue ce procédé constructif avec les \(p-2\) éléments de \(X\) restants pour obtenir \[n(n-1)(n-2)\cdots(n-(p-1))=\frac{n!}{(n-p)!}\]
Combien de codes secrets à quatre chiffres tous distincts peut-on créer ?
Il faut attribuer à chaque chiffre du code secret une valeur différente, ce qui revient à considérer une application injective \(c:\ab{1}{4}\rg\ab{0}{9}\) (deux chiffres différents doivent avoir des valeurs différentes), soit \(10!/6!=10\times 9\times 8\times 7=5040.\)
Le nombre de bijections entre deux ensembles finis de même car­di­nal \(n\) est égal à \begin{equation} n! \end{equation}
Une injection entre deux ensembles finis de même cardinal \(n\) est une bijection d'après ce théorème. Il suffit donc de remplacer \(p\) par \(n\) dans \((\ref{eq:nbinjections})\) : \begin{equation*} \frac{n!}{(n-n)!}=n! \end{equation*}

Une bijection d'un ensemble fini sur lui-même s'appelle une permutation, une grande partie du prochain chapitre est consacrée à l'étude de ces bijections particulières.

De combien de façons différentes peut-on empiler 8 tee-shirts sur une étagère ?
On peut coder à la fois la position d'un tee-shirt sur la pile et un tee-shirt avec un entier de l'intervalle \(\ab{1}{8}\), autrement dit les différentes façons d'empiler les tee-shirts est représenté par une bijection de l'ensemble \(\ab{1}{8}\) sur lui-même et il est de cardinal \(8!=40\,320.\)

La suite logique du cours serait de calculer le nombre de surjections d'un ensemble fini \(X\) dans un ensemble fini \(Y\), mais c'est un résultat plus difficile à établir, il faut donc patienter un peu.

Soit \(X\) un ensemble fini de cardinal \(n\) et \(p\in\llbracket 0,n \rrbracket\). On note \({\mathscr P}_p(X)\) l'ensemble des parties à \(p\) éléments de \(X\).
Soit \(X\) un ensemble de cardinal \(n\) et \(p\in\N\) tel que \(p\leq n.\) Alors \begin{equation} \label{coefbinomial} |{\mathscr P}_p(X)|=\frac{n!}{(n-p)!p!} \end{equation} Ce nombre est appelé coefficient binomial, on le note \(\binom{n}{p}\).
La preuve qui va suivre n'est pas la plus directe ni la plus simple, mais elle met en œuvre les notions introduites dans les chapitres précédents et permet d'illustrer un mécanisme très général utilisé pour calculer le nombre d'éléments d'un ensemble : le mettre en bijection avec un autre ensemble dont le cardinal est connu ou plus facile à calculer.

Soit \(f\) une injection de \(\llbracket 1,\,p\rrbracket \) dans \(X\), alors \(P:=f(\llbracket 1,\,p\rrbracket )\) est une partie finie de \(X\) de cardinal \(p\). Il suffit pour cela de vérifier que l'application \(g:\llbracket 1,\,p\rrbracket \rightarrow P\) définie par \(g(x):=f(x)\) qui coïncide avec \(f\) sur \(\llbracket 1,\,p\rrbracket \) est une bijection. Réciproquement, si \(P\) est une partie de \(X\) de cardinal \(p\), alors par définition, il existe une bijection \(\pi:\llbracket 1,\,p\rrbracket \rightarrow P\) et son prolongement sur \(X\) est une injection de \(\llbracket 1,\,p\rrbracket \) dans \(X\). Notons \({\mathscr I}\) l'ensemble des injections de \(\llbracket 1,\,p\rrbracket \) dans \(X\) et \(v:{\mathscr I}\rightarrow{\mathscr P}(X)\) l'application définie par \(v(f)=f(\llbracket 1,\,p\rrbracket )\). On vérifie aisément que la relation binaire \({\mathscr R}\) définie sur l'ensemble \({\mathscr I}\) par \(f\,{\mathscr R}\,g\Leftrightarrow f(\llbracket 1,\,p\rrbracket )=g(\llbracket 1,\,p\rrbracket )\) est une relation d'équi­va­len­ce. Autrement dit deux injections de la même classe d'équivalence fournissent la même partie à \(p\) éléments de l'ensemble \(X\). La décomposition canonique \(\color{#FF8}\overline{v}\) de l'application \(v\) est donc une bijection de l'ensemble quotient \({\mathscr I}/{\mathscr R}\) dans l'ensemble \({\mathscr P}_p(X)=v({\mathscr I})\) des parties à \(p\) éléments de \(X\) : \begin{equation} \begin{CD} {\mathscr I} @>{v}>> {\mathscr P}(X)\\ @V{\varphi}VV @AAjA \\ {{\mathscr I}/{\rel}} @>>{\color{#FF8}\overline{v}}> {\mathscr P}_p(X) \end{CD} \end{equation}

Il nous reste à dénombrer l'ensemble quotient \({\mathscr I}/{\mathscr R}\). On veut appliquer le principe des bergers à la surjection canonique \(\varphi:{\mathscr I}\rightarrow{\mathscr I}/{\rel}\) pour montrer que \begin{align*} \count{{\mathscr I}}&=p!\count{{\mathscr I}/{\rel}}\\ &=p!\count{{\mathscr P}_p(X)} \end{align*} ce qui achèvera la preuve en appliquant \((\ref{eq:nbinjections})\). On vérifie aisément que la surjection canonique \(\varphi\) est compatible avec la relation \({\mathscr S}\) définie sur \({\mathscr I}\) par \(f\,{\mathscr S}\,g\) si et seulement s'il existe une permutation \(\sigma:\llbracket 1,\,p\rrbracket \rightarrow\llbracket 1,\,p\rrbracket \) telle que \(g=f\circ\sigma\) et que toutes les classes d'équivalence ont le même cardinal \(p!\) car l'application définie par \(f\mapsto f\circ\sigma\) est injective puisque \(\sigma\) est une bijection. L'image réciproque \(\varphi^{-1}(\{\overline{f})\}\) d'un élément de \({{\mathscr I}/{\rel}}\) est la classe d'équivalence d'un de ses représentants pour la relation d'équivalence \({\mathscr S}\).

Une classe de \(36\) étudiants veut élire un groupe de \(4\) représentants. Combien y-a-t-il de groupes de représentants possibles ?
Il faut choisir \(4\) étudiants parmi \(36\), il y a donc \(\binom{36}{4}=58\,905\) groupes de représentants possibles. Attention ! on pourrait être tenté de calculer le nombre d'injections de \(\ab{1}{4}\) dans \(\ab{1}{36}\) puisqu'il faut choisir un étudiant différent pour chacun des \(4\) postes de représentants possibles. En procédant ainsi, on tient compte de l'ordre dans lequel on les a choisis, en effet l'injection \((1,2,3,4)\mapsto(12,32,2,7)\) est différente de l'injection \((1,2,3,4)\mapsto(7,32,12,2)\) qui décrit pourtant le même groupe de représentants. Il faudrait donc diviser le résultat par le nombre de permutations possibles de ces \(4\) valeurs, à savoir \(4!\) et on retrouverait évidemment le coefficient binomial. Autrement dit une injection définit un quadruplet au lieu d'une partie à \(4\) éléments et les \(4!\) permutations des termes du quadruplet définissent la même partie.
Combien de mots de passe différents de longueur \(8\) constitués de chiffres, de lettres peut-on créer si un mot de passe doit respecter les conditions ci-dessous ?
  1. Tous les symboles doivent être différents.
  2. Il contient exactement deux chiffres.
  3. Il contient au moins deux majuscules.
  4. Il contient au moins une minuscule.
On commence par constituer tous les ensembles de \(8\) symboles différents possibles. En effet par hypothèse, ils doivent tous être distincts. Chaque permutation des \(8\) symboles de chaque ensemble définit un nouveau mot de passe, il y aura donc \(8\,!\) mots de passes différents par ensemble. Pour constituer l'un de ces ensembles, il faut choisir :
  1. \(2\) chiffres, soit \(\binom{10}{2}=45\) combinaisons.
  2. \(2\) majuscules soit \(\binom{26}{2}=325\) combinaisons.
  3. \(1\) minuscule, soit \(\binom{26}{1}=26\) combinaisons.
  4. \(3\) symboles parmi les majuscules et les minuscules restantes uniquement puisque l'on ne peut plus rajouter de chiffres, soit \(\binom{52-3}{3}=18\,424\) combinaisons.
Finalement on peut constituer \[8\,!\,(45\times 325\times 26\times 18\,424)=282\,470\,872\,320\,000\] mots de passe différents.

Les coefficients binomiaux sont très utilisés en combinatoire, à tel point qu'il existe des ouvrages spécifiquement consacrés à leur étude, il faut donc en connaître les propriétés élémentaires. Soit \(p\) et \(n\) deux entiers tels que \(0\leq p\leq n\). On a

\begin{align} \label{id:comb1} \binom{n}{p}&=\binom{n}{n-p},\\ \label{id:comb2} \binom{n+1}{p+1}&=\binom{n}{p}+\binom{n}{p+1}. \end{align}
Démontrez les identités \((\ref{id:comb1})\) et \((\ref{id:comb2})\).

D'autre part,

\begin{equation} \label{eq:sommebinom} \sum_{p=0}^n\binom{n}{p}=2^n. \end{equation}

Ce dernier résultat s'obtient simplement. L'équipotence définit une relation d'équivalence sur l'en­semb­le \({\mathscr P}(X)\) et les \(n+1\) classes d'équivalence sont constituées des parties \({\mathscr P}_p(X)\) de \(X\) à \(p\) éléments, \(p\in\llbracket 0,\,n\rrbracket \) formant une partition de \({\mathscr P}(X)\). L'égalité \((\ref{eq:cardparties})\) et la formule de sommation \((\ref{eq:sommation})\) permettent de conclure.

Soit \(p\) et \(n\) deux entiers tels que \(0\leq p\leq n\). Démontrez que si \(p\geq 1\) alors on a l'égalité suivante, appelée formule du pion \[p\binom{n}{p}=n\binom{n-1}{p-1}.\] Puis en déduire que \begin{equation*} \sum_{p=1}^np\binom{n}{p} = n2^{n-1}. \end{equation*}
On a \begin{align*} p\binom{n}{p} &=\frac{n!\;p}{(n-p)!\;p(p-1)!}\\ &=\frac{n(n-1)!}{(n-p)!\;(p-1)!}\\ &=n\frac{(n-1)!}{(n-1-(p-1))!\;(p-1)!}\\ &=n\binom{n-1}{p-1}. \end{align*} Et par conséquent \begin{align*} \sum_{p=1}^np\binom{n}{p} &=\sum_{p=1}^n n\binom{n-1}{p-1}\\ &=n\sum_{p=1}^n\binom{n-1}{p-1}\\ &=n2^{n-1}\quad\text{d'après (\ref{eq:sommebinom})} \end{align*}

Le Triangle de Pascal est une table à deux entrées qui contient à la ligne \(n\) et à la colonne \(p\), le coefficient binomial \(\binom{n}{p}\). La \(n\)-ème ligne contient donc les \(n+1\) coefficients \(\binom{n}{p}\) pour \(p\in\llbracket 0,\,n\rrbracket \), ce qui explique la formation en triangle de ces nombres dans la table (il y a un coefficient de plus d'un eligne à la suivante). Il est construit ligne après ligne à l'aide d'un algorithme itératif qui s'appuie sur la formule \((\ref{id:comb2})\) : \begin{equation*} \begin{matrix} \ \ \ \text{ligne}~:\ \\ \text{colonne}~:\ \end{matrix} {\color{#FF8}\binom{n+1}{p+1}} ={\color{#88F}\binom{n}{p}}+{\color{#88F}\binom{n}{p+1}}. \end{equation*}

En effet, cette formule montre qu'en additionnant deux coefficients binomiaux côte à côte sur la ligne \(n\), on obtient le coefficient binomial à la ligne suivante \(n+1\) en-dessous du deuxième. Les valeurs \(\binom{n}{0}=1\) et \(\binom{n}{n}=1\) permettent d'initialiser les valeurs aux extrémités de chaque ligne. Vous pouvez ob­ser­ver la cons­truc­tion de ce triangle en saisissant une valeur maximale \(n=\) ou en cliquant sur le bouton ci-dessous.

Calcul des coefficients binomiaux du triangle de Pascal pour \(n\leq\ \).

Quel est le plus grand entier \(n\) pour lequel votre calculatrice est capable de calculer la factorielle de \(n\) ? En quoi le triangle de Pascal permet-il de calculer plus efficacement des coefficients binomiaux que par la formule \((\ref{coefbinomial})\) ?

La formule du binôme de Newton fait apparaître les coefficients binomiaux dans le développement de \((x+y)^n\). Cette formule est valable dès que l'ensemble auquel appartiennent \(x\) et \(y\) est un anneau*(*) Nous étudierons cette structure dans le cha­pi­tre consacré à l'ari­thmé­ti­que. et que ces deux éléments commutent.

Soit \(n\in\N\) et soient \(x\) et \(y\) deux éléments d'un anneau qui commutent. Alors \begin{equation} \label{eq:binomenewton} (x+y)^n = \sum_{p=0}^n\binom{n}{p}x^{n-p}y^{p}. \end{equation}
Considérons le prédicat \(P(n)\) définit par l'égalité \((\ref{eq:binomenewton})\). On a \(P(0)\) puisque par convention \(a^0=1\). Montrons que \(\forall n\in\N\) , \(P(n)=\Rightarrow P(n+1)\). On a \begin{align*} (x+y)^{n+1}&=(x+y)(x+y)^n\\ &=(x+y)\sum_{p=0}^n\binom{n}{p}x^{n-p}y^{p}\quad\text{hypothèse de récurrence}\\ &=\sum_{p=0}^n\binom{n}{p}x^{n-p+1}y^{p}+\sum_{p=0}^n\binom{n}{p}x^{n-p}y^{p+1}\\ &=x^{n+1}+\sum_{p=1}^n\binom{n}{p}x^{n-p+1}y^{p}+\sum_{p=0}^{n-1}\binom{n}{p}x^{n-p}y^{p+1}+y^{n+1}\\ &=x^{n+1}+\sum_{\color{#88F}p=0}^{\color{#88F}n-1}\binom{n}{\color{#88F}p+1}x^{\color{#88F}n-p}y^{\color{#88F}p+1}+\sum_{p=0}^{n-1}\binom{n}{p}x^{n-p}y^{p+1}+y^{n+1}\quad{\color{#88F}\text{réindexation}}\\ &=x^{n+1}+\sum_{p=0}^{n-1}\left(\binom{n}{p+1}+\binom{n}{p}\right)x^{n-p}y^{p+1}+y^{n+1}\\ &=x^{n+1}+\sum_{p=0}^{n-1}\binom{n+1}{p+1}x^{n-p}y^{p+1}+y^{n+1}\quad\text{d'après}\ (\ref{id:comb2})\\ &=x^{n+1}+\sum_{\color{#F84}p=1}^{\color{#F84}n}\binom{n+1}{\color{#F84}p}x^{\color{#F84}n+1-p}y^{\color{#F84}p}+y^{n+1}\quad{\color{#F84}\text{réindexation}}\\ \text{Finalement}\ \ (x+y)^{n+1}&=\sum_{p=0}^{n+1}\binom{n+1}{p}x^{n+1-p}y^{p}. \end{align*}

Savoir construire le triangle de Pascal permet de retrouver très rapidement les coefficients des dif­fé­rents termes de cette somme plutôt que d'apprendre par cœur les coefficients binomiaux.

Développez l'expression \((x-y)^6\). Soit \(n\) un entier naturel, quels sont les coefficients du polynôme \(P(X):=(1+X)^n\) une fois développé ?
On a \begin{align*} (x-y)^6 &=x^6+x^5(-y)^1+x^4(-y)^2+x^3(-y)^3+x^2(-y)^4+x(-y)^5+(-y)^6\\ &=x^6y+x^5y+x^4y^2-x^3y^3+x^2y^4+-xy^5+y^6. \end{align*} et \begin{align*} P(X)&=\sum_{p=0}^n\binom{n}{p}1^pX^{n-p}\\ &=\sum_{p=0}^n\binom{n}{p}X^{n-p}\\ &=\sum_{p=0}^n\binom{n}{p}X^{p}\quad\text{car}\ \binom{n}{p}=\binom{n}{n-p}.\\ \end{align*} Les coefficients du polynôme \(P(X)\) sont donc les coefficients binomiaux.

Si l'on se donne deux ensembles \(X\) et \(Y\), le cardinal de leur réunion est égal à la somme de leurs car­di­naux moins le nombre d'éléments qu'ils ont en commun, soit

\[\count{X\cup Y}=\count{X}+\count{Y}-\count{X\cap Y}.\]

Nous admettrons le théorème suivant appelé principe d'inclusion/exclusion et qui gé­né­ra­li­se ce résultat.

Soit \((X_i)_{i\in\llbracket 1,\,n\rrbracket}\) une famille d'ensembles fi­nis. Alors \begin{equation} \label{eq:somminout} \Big|\;\bigcup_{i=1}^{n}X_i\;\Big| = \sum_{k=1}^{n}(-1)^{k-1}\sum_{\color{#88F}1\leq i_{1}\,<\,i_2\,<\,\cdots\,<\,i_{k}\leq n}\left|X_{i_{1}}\cap X_{i_{2}}\cap \ldots \cap X_{i_{k}}\right| \end{equation}

La sommation de l'expression \((\ref{eq:somminout})\) se fait sur toute suite d'indices \((i_j)_{i\in\llbracket 1,\, k\rrbracket}\) strictement croissante et bornée par les valeurs \(1\) et \(n\).

Paradoxe des anniversaires

Nous avons à présent tous les outils pour étudier le paradoxe des anniversaires. La modélisation du problème passe par un encodage, c'est-à-dire une représentation des éléments concrets impliqués dans le problème à l'aide d'objets mathématiques abstraits. Il nous faut trouver un support pour re­pré­sen­ter les étudiants et un autre pour représenter les dates de naissance. Cette première phase est certainement aussi difficile à franchir que celle qui consiste à résoudre un problème mathématique déjà formulé de manière abstraite, tout au moins pour un débutant.

Comment coder un étudiant mathématiquement ? Quelle information le concernant doit-on garder dans notre modèle ? Comment va-t-on représenter une date d'anniversaire ? Si l'on calque di­rec­te­ment l'expérience dans une salle de classe, on conserverait le nom, et éventuellement le prénom en cas d'homonymie*(*) deux per­son­nes dis­tinc­tes doivent avoir des identifiants dis­tincts, on veut donc une injection., des étudiants. Autrement dit, un étudiant serait naturellement codé par un couple \((p,n)\) constitué par son prénom et son nom, ces mots étant eux-mêmes codés par deux mots (des séquences) de lettres, i.e. d'éléments de l'alphabet (un ensemble fini) latin \({\mathscr A}=\{a,b,\ldots,z\}\). Une date de naissance serait représentée par le quantième du jour et le quantième du mois de naissance, autrement dit un couple \((j,m)\in\llbracket 1,\,31\rrbracket\times\llbracket 1,\,12\rrbracket.\)

C'est un modèle tout à fait convenable, mais il est bien trop riche pour nos besoins. En effet, le problème ne demande pas d'identifier les étudiants qui sont potentiellement nés le même jour, ni les autres d'ailleurs. D'autre part, les dates de naissance de ces éventuelles coïncidences ne sont pas exigées non plus. C'est le nombre d'étudiants dans la classe et le nombre de jours dans l'année qui sont déterminants. Il est donc plus pertinent de coder la classe par un ensemble fini à \(n\) éléments, l'entier naturel \(n\) désignant le nombre d'étudiants, et d'encoder la date de naissance par un entier naturel compris entre \(1\) et \(365\) en faisant abstraction du jour et du mois.

On a donc, d'un côté l'ensemble des étudiants \(X\) et de l'autre l'ensemble des dates de naissance \(Y\:=\ab{1}{365}\). Si l'ensemble des étudiants est de cardinal \(n\), par définition il est équipotent à l'ensemble \(\ab{1}{n}\), autant supposer que \(X=\ab{1}{n}\). Notons que si le problème demandait également d'identifier les étu­diants, nous pourrions malgré tout continuer à utiliser l'intervalle \(\ab{1}{n}\) pour les représenter. Il suffirait de conserver la bijection qui lie \(\ab{1}{n}\) à \(X\) pour retrouver le couple \((p,n)\). C'est exactement ce que fait l'administration avec le numéro qui vous identifie sur votre carte d'étudiant.

Une relation lie les éléments de ces deux ensembles, chaque numéro \(x\) d'étudiant est associé à un quan­tième \(y\) de l'année codant la date de naissance de l'étudiant. Il s'agit bien sûr d'une application \(f:\ab{1}{n}\rightarrow \ab{1}{365}\). Avec ce modèle, dire qu'il n'existe pas d'étudiants nés le même jour se traduit par deux étudiants distincts ont des dates de naissances distinctes qui est la propriété caractérise des injections.

Notons qu'il est impossible d'obtenir une injection \(f:X\rightarrow Y\) entre deux ensembles finis \(X\) et \(Y\) si \(\count{Y} < \count{X}\). Autrement dit, si la classe contient strictement plus de \(365\) étudiants, il est certain qu'il existe deux étudiants nés le même jour.

Résumons la situation. Un amphi particulier contenant \(n\) étudiants définit une instance du problème, à savoir une ap­pli­ca­tion \(f:\ab{1}{n}\rightarrow\ab{1}{365}\). Nous savons que si cette application est injective, tous les étudiants sont nés un jour différent. Sans même introduire le langage du calcul des pro­ba­bi­li­tés, qui sera étudié au prochain chapitre, si l'on se donne la taille \(n\) d'une classe et que l'on est capable de calculer le nombre d'ap­pli­ca­tions injectives possibles (c'est-à-dire le nombre de façons d'attribuer \(n\) dates de naissance de manière à ce que tous les étudiants soient nés un jour différent), et le nombre total d'applications, le ratio \(R_n\) de ces deux nombres nous fournira la probabilité qu'un amphi de \(n\) étudiants ne contiennent jamais deux étudiants nés le même jour. Comme nous cherchons la probabilité de l'évènement complémentaire, à savoir la probabilité qu'il existe au moins deux étudiants nés le même jour, il ne restera qu'à trouver la plus petite valeur de \(n\) telle que \(1-R_n>1/2\), soit \(R_n<1/2\).

Le problème mathématique à résoudre est à présent cerné, mais nous reviendrons plus bas sur la pertinence de notre modélisation :

Trouver le plus petit entier naturel \(n\) tel que le rapport entre le nombre d'in­jec­tions et le nom­bre d'applications d'un ensemble à \(n\) éléments vers un ensemble à \(365\) éléments est inférieur à \(50\)%.

Si l'on note \(X\hookrightarrow Y\) l'ensemble des injections d'un ensemble \(X\) dans un ensemble \(Y\), l'entier en question est défini formellement de la manière suivante : \begin{equation} \min{\left\{{\color{white}n\in\N\mid \frac{{\color{#FF8}\#(\ab{1}{n}\hookrightarrow\ab{1}{365})}}{{\color{blue}\#\ab{1}{365}^{\ab{1}{n}}}}<\frac{1}{2}}\right\}}. \end{equation} Ce minimum existe puisque cet ensemble est une partie non-vide de \(\N\), elle contient au moins les entiers strictement supérieurs à \(365\), et admet donc un plus petit élément d'après la 3ème propriété caractéristique d'un ensemble naturel.

Revenons au calcul. La formule \((\ref{eq:nbapplications})\) nous fournit le nombre d'applications et la formule \((\ref{eq:nbinjections})\) le nombre d'injections entre deux ensembles finis. Il suffit de les appliquer pour obtenir le ratio attendu :

\begin{equation} \label{eq:RN} R_n:=\frac{\color{#FF8}\frac{365!}{(365-n)!}}{\color{blue}365^n} =\frac{365\times364\times\cdots\times(365-(n-1))}{365^n}. \end{equation}

On cherche donc la plus petite valeur entière \(n\leq 365\) telle que

\begin{equation} \label{ineq:anniv} \frac{365}{365}\times\frac{364}{365}\times\cdots\times\frac{(365-(n-1))}{365} < \frac{1}{2} \end{equation}

Il ne semble pas facile d'isoler la variable \(n\) dans cette inégalité. On peut bien sûr éviter de se triturer les méninges en faisant travailler une machine qui calcule les différentes valeurs de \(R_n\) jusqu'à ce que le seuil soit atteint. Par exemple avec ce petit script en Python :

def R(n):
   P = 1
   for i in range(n):
      P = P * ((365 - i) / 365)
   return P

n = 2
while R(n) >= 0.5:
   n = n + 1
print("R(" + str(n) + ") = " + str(R(n)))
La valeur renvoyée par ce script est \(n=23\). Comment évolue cette probabilité si la taille de la classe augmente ? Pour une classe de \(n:=\,\) étudiants, la probabilité de trouver deux étudiants nés le même jour est égale à \(1-R_n\approx\;\) Comme on peut le constater, à partir d'un am­phi de \(69\) étudiants, il n'y a plus qu'une chance sur \(1000\) pour que tous les étudiants soient nés un jour différent !

On pourrait se contenter de ce programme pour répondre à la question, mais il faut réaliser dès à présent que nombre de problèmes ne peuvent être résolus à l'aide d'un programme informatique, parfois parce qu'un tel programme n'existe pas ou parce que le temps qu'il faudrait à ce programme pour nous fournir la réponse attendue est démesuré (Ces questions seront abordées en théorie de la calculabilité, en algorithmique et en théorie de la complexité). Il est donc important d'être en mesure d'analyser un problème, soit pour y répondre directement ou à défaut pour écrire des programmes plus efficaces.

On repart de l'expression de \(R_n\) à gauche dans \((\ref{ineq:anniv})\) pour obtenir

\begin{equation} \label{eq:RNBIS} R_n=\big(1-\frac{1}{365}\big)\big(1-\frac{2}{365}\big)\cdots\big(1-\frac{(n-1)}{365}\big). \end{equation}

Nous allons exploiter quelques résultats vus dans le cours d'analyse du premier semestre pour évaluer ce produit. On rappelle que l'exponentielle réelle \(\text{exp}:\R\rg\R\) est définie par la somme de la série convergente de terme général \(\frac{x^n}{n!}\) :

\begin{align} \notag{\text{exp}\,}(x)&:= \lim_{n\rightarrow+\infty}\sum_{i=0}^{n}\frac{x^i}{i!}\\ &= \lim_{n\rightarrow+\infty}\left({\color{#88F}1+\frac{x}{1}}+\frac{x^2}{2}+\frac{x^3}{6}+\cdots+\frac{x^n}{n!}\right). \end{align}

On en déduit que \({\color{#88F}1-x} \approx \text{exp}\;(-x)\) si \(x\) est proche de \(0\), puisque dans ce cas les termes de degré supérieur ou égal à 2 deviennent négligeables comparés à \(x\). On réécrit \((\ref{eq:RNBIS})\) : \begin{align*} R_n&\approx \prod_{i=1}^{n-1}\text{exp}\,(-\frac{i}{365})\\ &\approx \text{exp}\,(-\frac{1}{365}{\sum_{i=1}^{n-1}i})\\ &\approx \text{exp}\,(-\frac{n(n-1)}{730})\\ \end{align*}

On doit finalement trouver la plus petite valeur de \(n\) telle que

\begin{equation*} \text{exp}\,(-\frac{n(n-1)}{730})<\frac{1}{2}. \end{equation*}

Comme la fonction réciproque de la fonction exponentielle est la fonction logarithme et que cette dernière est croissante, on obtient

\begin{equation*} \frac{-n(n-1)}{730} < \text{ln}\,(\frac{1}{2})\ \iff\ n(n-1) > 730\;\text{ln}\,(2)\ \iff\ \underbrace{n^2-n-730\;\text{ln}\,(2)}_{P(n)}> 0. \end{equation*}

Ce qui nous amène à étudier le signe du polynôme \(P(x)=x^2-x-730\,\ln(2)\). On calcule le discriminant \(\Delta=1+2920\;\text{ln}\,(2)\) qui est strictement positif puisque \(\text{ln} > 0\). Pour que \(P(n)\) soit positif, donc du même signe que le coefficient de son monôme de degré 2, il faut que \(x\) soit à l'extérieur de l'intervalle \([x_1,x_2]\) formé par les deux racines de \(P(x)\). On peut passer au calcul effectif : \[ \Delta\approx 2\,025=(9\times 5)^2 \] et on en tire les deux racines \(x_1\approx -22\) et \(x_2\approx \mathbf{23}\) ce qui permet de retrouver le résultat numérique obtenu à l'aide de notre script Python.

Il ne faut pas limiter la portée de cette étude à la résolution d'un problème ludique. Nous allons voir que le paradoxe des anniversaires intervient en cryptographie. De la même manière qu'une signature manuelle ou une empreinte digitale est une très petite quantité qui résume et caractérise un individu, on peut construire l'empreinte numérique d'un document. Le calcul de cette empreinte est généralement réalisé par une fonction de hachage.

Il n'est pas question d'étudier ici les fonctions de hachage, nous n'en donnerons qu'une vision in­for­mel­le et intuitive. Une fonction de hachage \(h:X\rightarrow Y\) relie deux ensembles de tailles très dif­fé­ren­tes, l'ensemble de départ \(X\) est très grand et contient tous les documents possibles (n'importe quel texte, lettre, mode d'emploi, journal, encyclopédies, ce cours, etc.). L'ensemble d'arrivée est quant à lui très petit comparativement à l'ensemble \(X\), et contient donc les empreintes de ces documents.

Pour donner un ordre d'idée des cardinaux mis en jeu dans cette problématique, imaginons que les documents ne soient constitués qu'avec des symboles d'un alphabet minimaliste \(\mathscr A\) constitué des 26 lettres de l'alphabet et de l'espace. C'est nettement insuffisant pour représenter les documents qui nous entourent, puisque ni les majuscules, ni les chiffres, ni les symboles diacritiques (accents, cédille, etc.), ni une multitude de signes très communs ne sont disponibles, néanmoins contentons nous de cet alphabet. Un simple courrier manuscrit d'une page comporte environ \(1000\) symboles, le contenu d'un tel courrier peut donc être codé par un \(1000\)-uplet de \({\mathscr A}^{1000}\) et la formule \((\ref{eq:cardprodcart})\) sur le cardinal d'un produit cartésien nous donne immédiatement le nombre possible de courriers différents, il y en a

\[27^{1000}=10^{1000\,\text{log}_{10}(27)}\approx 2.31\times 10^{1431},\]

ce qui dépasse de très loin tout nombre représentant une quantité réelle puisque les physiciens estiment que le nombre d'atomes contenus dans l'univers observable est de l'ordre de \(10^{81}\)…

Nous savons d'après cet exercice que si l'ensemble des empreintes \(Y\) est petit par rapport à l'en­semb­le des documents, la fonction \(h\) ne peut certainement pas être injective. On souhaite ce­pen­dant que la fonction \(h\) satisfasse des conditions extrêmement contraignantes :

  1. Calculer l'empreinte \(h(x)\) d'un document \(x\) donné est rapide,
  2. Calculer l'image réciproque \(h^{-1}(y)\) d'une empreinte \(y\) donnée est infaisable,
  3. Calculer deux documents \(x_1\) et \(x_2\) de même empreinte est infaisable,
  4. Calculer un document \(x_2\) de même empreinte qu'un document \(x_1\) donné est infaisable.

Le terme infaisable signifie ici que le temps et/ou l'espace nécessaires pour obtenir le résultat dé­pas­sent de très loin les capacités des machines. Ces conditions permettent de vérifier l'intégrité d'un document ou d'assurer qu'un document est bien celui qu'on croit. En effet, toute modification d'un document se décèle facilement en calculant son empreinte et en la comprarant à l'empreinte ori­gi­na­le, les deux seront nécessairement différentes. D'autre part, si l'on connaît l'empreinte d'un do­cu­ment \(x_1\), et que quelqu'un présente un document \(x_2\) et prétend qu'il s'agit du document \(x_1\), il suffit de com­pa­rer leurs deux empreintes, si elles sont égales, c'est qu'il s'agissait bien du même document \(x_2=x_1\).

Les conditions 3 et 4 demandées aux fonctions de hachage nécessitent de s'intéresser au paradoxe des anniversaires. Si l'ensemble \(X\) des documents jouent le rôle de l'ensemble des étudiants et l'ensemble \(Y\) des empreintes le rôle de l'ensemble des dates d'anniversaire, nous savons déjà qu'il est certain qu'il existe deux documents qui ont la même empreinte puisqu'ici \(\count{X} > \count{Y}\), mais cette fois il s'agit de les trouver. Combien de documents doit-on tirer au hasard dans \(X\) pour que la probabilité d'en trouver qui ont la même empreinte soit supérieure à \(\frac{1}{2}\) ? Il nous faut donc déterminer le cardinal \(n\leq\count{Y}\) d'un sous-ensemble \(E\subset X\) d'échantillons qui assure que la probabilité que la restriction \(h|_E\) de la fonction de hachage à la partie \(E\) soit injective est inférieure à \(\frac{1}{2}\).

Comme ce sont des ordinateurs qui calculent des empreintes, elles sont vues comme des séquences binaires de longueur \(b\), i.e. \(Y:=\{0,1\}^b\), et on parle d'empreintes de \(b\) bits.*(*) binary digit.

On note \(E\subset X\) l'espace des échantillons, \(n:=\count{E}\) son cardinal, et \(Y:=\{0,1\}^b\) l'espace des empreintes sur \(b\) bits. Quel est le cardinal de l'espace \(Y\) ? Vérifiez que la probabilité \(R_n\) que tous les do­cu­ments de \(E\) aient des empreintes différentes est donnée par \[R_n=\prod_{i=1}^{n-1}\left(1-\frac{i}{2^b}\right).\] En approximant \(1-x\) par \(\text{exp}\;(-x)\), montrez que \[R_n\approx\text{exp}\;\left(-\frac{n(n-1)}{2^{b+1}}\right).\] Inspirez-vous des calculs effectués pour le paradoxe des anniversaires pour montrez que la plus petite valeur de \(n\) telle que \(R_n < \frac{1}{2}\) est égale à \(2^{\frac{b}{2}}\).

En supposant que l'on dispose de machines capables de calculer \(10^{12}\) empreintes par seconde, combien de temps faudrait-il pour traiter suffisamment d'échantillons pour atteindre la probabilité \(\frac{1}{2}\) si les empreintes sont codées sur \(96\) bits ?

À la lumière de cet exercice, il apparaît que la taille des échantillons à prélever est de l'ordre de la racine carrée de la taille de l'espace des empreintes, ce qui est considérablement plus faible et au­to­ri­se une attaque si la taille des empreintes n'est pas assez grande.

Le modèle que nous avons établi pour le paradoxe des anniversaires est im­par­fait. En effet, il suppose implicitement que les dates de naissances des élèves d'une classe suivent une distribution uniforme sur l'intervalle \(\ab{1}{365}\), autrement dit que la pro­ba­bi­li­té qu'un étudiant soit né un jour \(j\in\ab{1}{365}\) est exactement \(365^{-1}\). Les études démographiques montrent que la répartition des naissances n'est pas tout à fait uni­for­me, bien que la pla­ni­fi­ca­tion de la conception des enfants ait tendance à dis­pa­raî­tre. Les questions de cette nature seront étudiées dans le cours de probabilités discrètes.
On considère le polynôme \(P(X):=(X+1)^n\).

1. Calculez son polynôme dérivé.

2. Utilisez la formule du binôme pour développer \(P(X)\) et calculez le polynôme dérivé du polynôme ainsi obtenu.

3. En déduire que si \(p\) et \(n\) sont deux entiers tels que \(0\leq p\leq n\), alors \begin{equation*} \sum_{p=1}^np\binom{n}{p} = n2^{n-1}. \end{equation*}
Soit \(n\) un entier naturel. Démontrez que \begin{align*} \prod_{k=1}^n(2k) &=2^n n!\\ \prod_{k=1}^n(2k-1) &=\frac{(2n)!}{2^n n!} \end{align*} Indication : séparez les termes pairs et impairs dans le calcul de \((2m)!\).
Soit \(q\) un entier naturel. Démontrez que \begin{equation*} \sum_{k=0}^nkq^k = \frac{q}{(q-1)^2}[q^{n}(n(q-1)-1)+1]. \end{equation*} Indication : vérifiez que le polynôme \(P(X):=\frac{X^{n+1}-1}{X-1}=X^n+X^{n-1}+\cdots+X^2+X+1\). Calculez éga­le­ment son polynôme dérivé.

Compléments

Le nombre de partitions d'un ensemble fini de cardinal \(n\) est appelé \(n\)-ème nombre de Bell et on le note \(B_n\). Il satisfait la récurrence suivante : \begin{equation} \forall n\in\N,\ \ B_{n+1}=\sum_{p=0}^{n}\binom{n}{p}B_p. \end{equation} Avec pour condition initiale \(B_0=1\).
On vérifie facilement qu'il n'existe qu'une seule partition de l'ensemble vide, c'est la partition vide donc \(B_0=1.\) (Notons qu'il n'y a pas de contradiction avec la condition qui stipule que tout élément d'une partition est non-vide, la partition étant vide, aucune de ses classes n'est vide.) L'unique partition d'un singleton \(X=\{x\}\) est constituée du seul ensemble \(X\), donc \(B_1=1\). Nous allons démontrer le résultat général grâce au théorème de récurrence forte sur le prédicat \(P(n)\) : \[ B_{n}=\sum_{p=0}^{n-1}\binom{n-1}{p}B_p. \] Nous venons de voir que \(P(0)\) et \(P(1)\) sont vrais. Soit \(X\) un ensemble de cardinal \(n+1\), il contient au moins un élément \(x\). Pour constituer une partition \(P\) de \(X\), commençons par ranger \(x\). Il doit appartenir à exactement une classe \(Y\subseteq X\) de la partition \(P\). On peut compléter cette classe \(Y\) avec \(p\in\llbracket 0,\,n\rrbracket \) autres éléments de \(X\) et il y a \(\binom{n}{p}\) façons de le faire d'après la définition d'un coefficient binomial. Pour compléter la partition \(P\) de \(X\), il reste à répartir les \(n-p\) éléments restants de \(X\setminus Y\) dans d'autres classes, autrement dit il faut créer une partition des \(n-p\) éléments restants et il y a \(B_{n-p}\) manières de le faire d'après l'hypothèse de récurrence. Pour conclure, pour chaque valeur \(p\in\llbracket 0,\,n\rrbracket \), on peut construire \(\binom{n}{p}\) parties \(Y\) différentes de cardinal \(p+1\) contenant \(x\) et pour chacune d'entre elles, on peut répartir les \(n-p\) éléments restants de \(B_{n-p}\) manières distinctes : \begin{align*} B_{n+1}&=\sum_{p=0}^{n}\binom{n}{p}B_{n-p},\\ &=\sum_{p=0}^{n}\binom{n}{n-p}B_{n-p},\quad\text{d'après}\ (\ref{id:comb1}) \end{align*}
Soit \(p\) et \(n\) deux entiers naturels. Le nombre de partitions d'un ensemble fini de cardinal \(n\) en \(p\) classes est appelé nombre de Stirling et on le note \(S(n,p).\) Il satisfait la récurrence suivante : \begin{equation} \forall n,\ \forall p>0\quad S(n,p)=S(n-1,p-1)+pS(n-1,p). \end{equation} avec pour conditions initiales \(S(0,0)=1\) et \(\forall n>0,\ S(n,0)=S(0,n)=0.\)
La preuve se fait encore une fois par récurrence forte pour \(p\) fixé sur le prédicat \(P(n)\) : \[S(n,p)=S(n-1,p-1)+pS(n-1,p).\] Pour \(n=p=0\), la partition vide constitue bien une partition de l'ensemble vide en \(0\) classes, donc \(S(0,0)=1\). Pour tout \(n>0\), la partition vide n'est jamais un partition d'un ensemble non-vide, donc \(S(n,0)=0\). D'autre part il n'existe aucun partition en \(n>0\) classes de l'ensemble vide, donc \(S(0,n)=0\). On considère à présent un ensemble \(X\) de cardinal \(n+1\) qui contient donc au moins un élément \(x\).

Pour constituer une partition \(P\) à \(p\) classes de \(X\), commençons par ranger l'élément \(x\). Si à lui seul \(\{x\}\) constitue une classe de \(P\), alors les \(n\) éléments restants de \(X\setminus\{x\}\) sont à répartir en \(p-1\) classes ce que l'on peut faire de \(S(n,p-1)\) façons d'après l'hypothèse de récurrence. Sinon on répartit les \(n\) éléments de \(X\setminus\{a\}\) dans \(p\) boites et il y a \(S(n,p)\) façons de le faire d'après l'hypothèse de récurrence, il reste à ranger \(x\) dans l'une de ces \(p\) boites et il y a \(p\) choix possibles, soit \[S(n+1,p)=S(n,p-1)+pS(n,p).\]

Le corollaire suivant est immédiat :

Soit \(n\) en entier naturel. On a \begin{equation} B_n=\sum_{p=1}^nS(n,p). \end{equation}
Soit \(X\) et \(Y\) deux ensembles finis de cardinaux \(n:=\count{X}\) et \(p:=\count{Y}\) tels que \(0\leq p \leq n\). Le nom­bre de surjections de \(X\) dans \(Y\) est l'entier \begin{equation} \label{eq:nbsurjections} p!S(n,p). \end{equation}
Soit \(f:X\rightarrow Y:=\{y_1,y_2,\ldots,y_p\}\) une surjection. Notons \(X_i:=f^{-1}(y_i)\) l'image réciproque de \(y_i\). Alors par construction, \(P:=\{X_1,X_2,\ldots,X_p\}\) est une partition de \(X\) en \(p\) classes. Mais pour cette unique partition, on dispose de \(p!\) nouvelles surjections en permutant les \(p\) éléments de \(Y\). D'après la définition des nombres de Stirling, il y a \(S(n,p)\) façons de partitionner l'ensemble de départ \(X\) en \(p\) classes \(P=\{X_1,X_2,\ldots,X_p\}\) ce qui achève la preuve.

À partir de cette proposition, on peut établir une formule explicite pour les nombres de Stirling à l'aide du principe d'inclusion/exclusion. Nous admettrons ce résultat.

Soit \(p\) et \(n\) deux entiers naturels. Alors \begin{equation} S(n,p)=\frac{1}{p!}\sum_{k=0}^{p}(-1)^{p-k}\frac{p}{k}k^{n}. \end{equation}

Pour conclure, nous admettrons également le théorème suivant qui permet de mesurer la croissance de la fonction fac­to­riel­le.

On a \begin{equation} \lim_{n\to+\infty}\frac{n!}{\sqrt {2\pi n}\;\left(\frac{n}{e}\right)^n}=1. \end{equation}

Autrement dit, la fonction factorielle se comporte asymptotiquement comme la fonction \[n\mapsto\sqrt {2\pi n}\;\left(\frac{n}{e}\right)^n\] ce qui permet aisément de déduire que la fonction factorielle croît plus vite que la fonction ex­po­nen­tiel­le mais moins vite que la fonction \(n\mapsto n^n.\) : \begin{align*} \lim_{n\to+\infty}\frac{e^n}{n!}&=0\\ \lim_{n\to+\infty}\frac{n!}{n^n}&=0\\ \end{align*}

En reprenant les mêmes conditions initiales que dans la définition des nombres de Stirling, démontrez l'égalité \begin{equation} \label{eq:stirling} S(n+1,p)=\sum_{k=0}^{n}\binom{n}{k}S(k,p-1). \end{equation}
Démontrez que le nombre de façons de ranger \(n\) chaussettes dans \(p\) tiroirs numérotés (l'ordre dans lequel les caleçons sont rangés dans un tiroir n'a pas d'importance) est égal a \begin{equation} \frac{(n+p-1)!}{(p-1)!} \end{equation}
Démontrez que le nombre d'applications croissantes d'un ensemble fini \(X\) de cardinal \(n\) dans un ensemble fini \(Y\) de cardinal \(p\) est égal à \begin{equation} \binom{n+p-1}{n}. \end{equation} Quel est le résultat si les applications sont strictement croissantes ?
On considère la fonction \(P(X):=(X^{n+1}-1)/(X-1)\).
  1. Soit \(Q(X):=1+X+X^2+\cdots+X^{n-1}+X^n\). Vérifiez que \(Q(X)=P(X)\) pour \(X\not=1\). Indication :: multipliez \(Q(X)\) par \(X\) et retrouvez \(Q(X)\) dans cette nouvelle expression.
  2. Soit \(n\in\N\) et \(q\in\R\setminus\{1\}\). En calculant le polynôme dérivé \(P'(X)\) de deux façons différentes, calculez la somme \begin{equation} S:=\sum_{k=1}^nkq^k. \end{equation}

Travaux pratiques

En séance

Écrivez une fonction Python factorielle(n) qui calcule la factorielle du nombre entier \(n\) passé en paramètre.
Écrivez un script en Python TrianglePascal(n) qui renvoie la liste des \(n+1\) coefficients \(\binom{n}{p}\) pour \(p\in\llbracket 0,\,n\rrbracket \) en utilisant le principe de construction du triangle de Pascal. Indication : on initialisera une liste de \(n+1\) valeurs nulles qui évoluera comme chaque ligne du triangle de Pascal lors de sa construction. Relisez au préalable cet exercice. En déduire une fonction Python binomial(n,p) qui renvoie le coefficient binomial \(\binom{n}{p}\).
Un code phoque est un mot constitué uniquement avec deux symboles \(.\) (point) et \(-\) (tiret). Ces deux symboles sont généralement transmis à l'aide de deux signaux qui ne diffèrent que par leur durée, le signal tiret est deux fois plus long que le signal point (c'est trois fois pour le code morse). La durée du signal point est normalisée à 1. Soit \(n\) un entier supérieur à 2. En remarquant qu'un signal de longueur \(n\) est constitué soit d'un point suivi d'un signal de longueur \(n-1\) soit d'un tiret suivi d'un signal de longueur \(n-2\), écrivez une fonction récursive phoque(n) qui renvoie la liste de tous les signaux de longueur \(n\). Par exemple l'appel phoque(4) renvoie la liste
['....', '..-', '.-.', '-..', '--']
Écrivez la fonction phoqueit(n), version itérative de la fonction phoque(n). Comparez la durée d'exécution des deux versions pour \(n=30\) en utilisant la commande time d'unix. Par exemple time python3 algo.py renvoie la durée d'exécution du script python algo.py. Bien sûr, ceci suppose que ce script ne contient pas de saisies à l'aide de la fonction input() qui pourraient fausser le calcul. Que constatez-vous ?

Compléments hors séance

On peut créer un script Python qui soit directement exécutable comme une commande unix et également récupérer les arguments éventuels de la commande. Pour cela :

  1. Écrivez #!/usr/bin/python3 sur la première ligne du script.
  2. Importez le module système : import sys.
  3. Les arguments de la ligne de commande sont rangés dans la liste prédéfinie sys.argv sous forme de chaînes de caractères (sys.argv[0] contient le nom de votre script).
  4. Exécutez la commande unix chmod +x monscript si votre script s'appelle monscript (l'extension .py n'est plus nécessaire).
  5. Pour exécuter le script, il suffit de lancer ./monscript suivi éventuellement de paramètres.
On considère le script suivant nommé increment :
#!/usr/bin/python3
import sys

def plusun(n):
   return n + 1

if len(sys.argv) > 0:
   n = int(sys.argv[1])
   print(plusun(n))
else:
   print("Syntaxe: ",argv[0]," entier")

Une fois transformé en fichier exécutable avec la commande chmod +x increment, la commande

$ ./increment 13
affichera
$ 14
alors que la commande
$ ./increment
affichera
$ Syntaxe: increment entier
Écrivez la fonction Fibonacci(n) qui renvoie le tuple \(F_0,F_1,\ldots,F_n\) des \(n+1\) premiers termes de la suite récurrente de Fibonacci \((F_n)_{n\in\N}\) définie par les premiers termes \(F_0:=0\), \(F_1:=1\) et la récurrence \(\forall n\geq 2\), \(F_{n+2}=F_{n+1}+F_n\). Comparez la valeur \(F_n\) avec la longueur de la liste renvoyée par phoque(n-1). Que constatez-vous ? Expliquez.

Écrivez une procédure récursive genuplet(n,m,nuplet) en Python qui affiche tous les \(n\)-uplets de l'ensemble \(\llbracket 1,\,m\rrbracket^n\). Le paramètre nuplet servira à la construction récursive du \(n\)-uplet à afficher et sera initialisé au tuple vide \((\;)\) à l'appel de la procédure. Par exemple, l'appel genuplet(2,3,()) af­fi­che­ra tous les éléments de l'ensemble \(\{1,2,3\}^2\) : \begin{align*} (1&,1)\\ (1&,2)\\ (1&,3)\\ (2&,1)\\ (2&,2)\\ (2&,3)\\ (3&,1)\\ (3&,2)\\ (3&,3) \end{align*} On utilisera le type tuple du Python pour coder un \(n\)-uplet. On rappelle qu'un tuple est immuable et que l'on peut concaténer des tuples à l'aide de l'opérateur \(+\), ainsi \((1,2)+(3,)=(1,2,3)\).

Indications : La base récurrente est à la programmation ce qu'est l'initialisation à la récurrence mathématique. Il s'agit de la partie du code que l'on doit réaliser directement sans faire d'appels récursifs. Quant à l'autodéfinition, elle correspond à l'hérédité et constitue le code qui contient les appels récursifs. La base récurrente de la procédure genuplet(n,m,nuplet) consiste à afficher le tuple passé en paramètre quand le paramètre d'appel \(n\) vaut \(0\) et l'autodéfinition consiste à rappeller la procédure avec chacun des \(m\) tuples obtenus en concaténant le tuple passé en paramètre avec les tuples \((1,),(2,),\ldots,(m,)\).