Aller au contenu principal

Introduction à l'informatique · L1 · Section 6/7

Annales corrigées

Progression

Points d’expérience : XPSérie de jours consécutifs : · —Progression du module : — / —compris

#Annales corrigées

Cette page rassemble les exercices de la première UE d'informatique du semestre 1, l'UE SPUF100 « Bases de l'informatique 1 » de la Licence Informatique d'Université Côte d'Azur (campus Valrose), dont le cours « Outils formels pour l'informatique » est assuré par Enrico Formenti.

Source exacte. Les énoncés proviennent des feuilles de travaux dirigés distribuées de 2020 à 2023 et des exercices posés dans les transparents de cours. La sélection retient les exercices qui portent sur la représentation de l'information : cardinalité d'un ensemble de données, codage d'un objet par un mot binaire, dénombrabilité, et limites de tout encodage. Les exercices de la même UE consacrés aux relations et ordres, à la logique et aux langages formels sont traités dans les modules correspondants.

FeuilleThèmeExercices repris ici
TD 1Ensembles, dénombrement, mots1, 2, 4, 5, 6, 7, 8, 10, 11
Cours 1Ensembles, dénombrabilité, motsdéfinition de la cardinalité, diagonale de Cantor, principe des tiroirs
Cours 4Dénombrementnombre d'octets et capacité des types machine
Cours 9Langages formelsdénombrabilité de l'ensemble des mots, codage

Comment travailler cette page. Chaque exercice est énoncé tel qu'il a été distribué, puis suivi d'une correction détaillée. Cherchez d'abord sans ouvrir la correction, en particulier la modélisation de l'exercice 1 : c'est elle qui est notée, pas le calcul final.

#Exercice 1 — Décrire et compter un ensemble d'objets

Énoncé (TD 1, exercice 1). Un programme utilise les objets d'une classe Date.

  1. Proposez une description de l'ensemble EE des objets possibles.
  2. Quel est le cardinal de EE ?
Correction détaillée

1. Modélisation. Un objet Date est entièrement déterminé par un triplet d'entiers : une année, un mois, un jour. L'ensemble des objets possibles est donc une partie de N3\mathbb{N}^3 :

E={(a,m,j)N3  :  1m12  et  1jJ(m,a)}E = \{\, (a, m, j) \in \mathbb{N}^3 \;:\; 1 \le m \le 12 \;\text{et}\; 1 \le j \le J(m, a) \,\}

J(m,a)J(m, a) est le nombre de jours du mois mm de l'année aa : 31 pour janvier, mars, mai, juillet, août, octobre, décembre ; 30 pour avril, juin, septembre, novembre ; 28 ou 29 pour février selon que l'année est bissextile ou non.

Le point important n'est pas la formule mais la démarche : un objet logiciel se décrit comme un élément d'un produit cartésien de domaines simples, et les contraintes de validité se traduisent en conditions sur les composantes. C'est exactement la façon dont le cours présente les données d'un programme : toute donnée est codée sur une partie finie de N\mathbb{N}.

2. Cardinal. Il n'y a pas de formule close immédiate : le nombre de jours de février dépend de l'année. On découpe donc EE selon l'année, ce qui en donne une partition, et on applique le principe additif (si les (Ei)(E_i) forment une partition de EE, alors E=iEi|E| = \sum_i |E_i|).

E=am=112J(m,a)=a(337+J(2,a))|E| = \sum_{a} \sum_{m=1}^{12} J(m, a) = \sum_{a} \big(337 + J(2, a)\big)

car les onze mois autres que février totalisent toujours 31×7+30×4=33731 \times 7 + 30 \times 4 = 337 jours.

Avec l'hypothèse usuelle des années 1 à 9999 et de la règle grégorienne (bissextile si divisible par 4, sauf par 100, sauf par 400), le nombre d'années bissextiles vaut

999949999100+9999400=249999+24=2424\left\lfloor \frac{9999}{4} \right\rfloor - \left\lfloor \frac{9999}{100} \right\rfloor + \left\lfloor \frac{9999}{400} \right\rfloor = 2499 - 99 + 24 = 2424

d'où

E=9999×365+2424=3649635+2424=3652059.|E| = 9999 \times 365 + 2424 = 3\,649\,635 + 2424 = 3\,652\,059.

Ce qu'il faut retenir. Le cardinal d'un ensemble de données se calcule en partitionnant selon le paramètre qui complique le comptage (ici l'année), puis en appliquant le principe additif. Toute autre hypothèse de départ (années 1970-2038, par exemple) donne un autre total, mais la méthode reste identique — c'est elle qui est évaluée.

#Exercice 2 — Sous-ensembles de l'alphabet binaire

Énoncé (TD 1, exercice 2). On appelle BB l'alphabet binaire {0,1}\{0, 1\}.

  1. Est-ce que {0}\{0\} \subseteq \emptyset ? {0}B\{0\} \in B ? {0}P(B)\{0\} \in \mathcal{P}(B) ?
  2. A-t-on BBB \subseteq B ?
  3. Quels sont les éléments de P(B)\mathcal{P}(B) ?
  4. Quels sont les éléments de P(P(B))\mathcal{P}(\mathcal{P}(B)) ?
  5. Mêmes questions pour \emptyset à la place de BB.
Correction détaillée

1. {0}\{0\} \subseteq \emptyset est faux : l'élément 00 appartient à {0}\{0\} mais pas à \emptyset, et l'inclusion exige que tout élément du premier soit élément du second. {0}B\{0\} \in B est faux : les seuls éléments de BB sont 00 et 11, et l'ensemble {0}\{0\} n'est ni l'un ni l'autre. {0}P(B)\{0\} \in \mathcal{P}(B) est vrai : P(B)\mathcal{P}(B) est l'ensemble des parties de BB, et {0}\{0\} est bien une partie de BB.

La leçon : appartenance et inclusion sont deux relations différentes. Confondre \in et \subseteq est l'erreur la plus fréquente sur ce chapitre, et elle est fatale dès qu'on parle d'ensembles d'ensembles.

2. BBB \subseteq B est vrai : l'inclusion est réflexive, tout ensemble est partie de lui-même. C'est aussi le cas de \emptyset \subseteq \emptyset.

3. Les parties de BB sont l'ensemble vide, les deux singletons et BB lui-même :

P(B)={,  {0},  {1},  {0,1}},P(B)=4=22.\mathcal{P}(B) = \{\, \emptyset,\; \{0\},\; \{1\},\; \{0,1\} \,\}, \qquad |\mathcal{P}(B)| = 4 = 2^{2}.

4. P(P(B))\mathcal{P}(\mathcal{P}(B)) a pour éléments les parties de P(B)\mathcal{P}(B), qui compte 4 éléments, donc

P(P(B))=24=16.|\mathcal{P}(\mathcal{P}(B))| = 2^{4} = 16.

Ce sont : \emptyset, les quatre singletons {}\{\emptyset\}, {{0}}\{\{0\}\}, {{1}}\{\{1\}\}, {{0,1}}\{\{0,1\}\}, les six paires {,{0}}\{\emptyset,\{0\}\}, {,{1}}\{\emptyset,\{1\}\}, {,{0,1}}\{\emptyset,\{0,1\}\}, {{0},{1}}\{\{0\},\{1\}\}, {{0},{0,1}}\{\{0\},\{0,1\}\}, {{1},{0,1}}\{\{1\},\{0,1\}\}, les quatre triplets et P(B)\mathcal{P}(B) tout entier. Le compte suit la formule P(E)=2E|\mathcal{P}(E)| = 2^{|E|} pour EE fini.

5. Avec \emptyset à la place de BB : {0}\{0\} \subseteq \emptyset reste faux ; {0}\{0\} \in \emptyset est faux (l'ensemble vide n'a aucun élément) et {0}P()\{0\} \in \mathcal{P}(\emptyset) est faux aussi, car P()={}\mathcal{P}(\emptyset) = \{\emptyset\} et {0}\{0\} \neq \emptyset. En revanche \emptyset \subseteq \emptyset est vrai, P()\emptyset \in \mathcal{P}(\emptyset) est vrai, P()={}\mathcal{P}(\emptyset) = \{\emptyset\} a pour cardinal 1=201 = 2^0, et P(P())={,{}}\mathcal{P}(\mathcal{P}(\emptyset)) = \{\emptyset, \{\emptyset\}\} a pour cardinal 22.

Le pont avec la représentation. Ces comptages ne sont pas gratuits. Une partie d'un ensemble à kk éléments se code exactement par un mot binaire de longueur kk : c'est sa fonction caractéristique, qui vaut 1 sur les éléments de la partie et 0 ailleurs. Ainsi P(B)\mathcal{P}(B) correspond aux 22=42^2 = 4 mots de longueur 2, et P(P(B))\mathcal{P}(\mathcal{P}(B)) aux mots de longueur 4. Compter les parties et compter les mots binaires, c'est le même calcul — celui qui donne 28=2562^8 = 256 valeurs à un octet.

#Exercice 3 — Capacité d'un type machine

Énoncé (cours 4, transparent 8). Combien existe-t-il d'octets ? On peut en déduire le nombre d'entiers de type byte, short, int et long, de réels de type float et double en Java, sachant qu'ils sont respectivement codés sur 1, 2, 4, 8, 4 et 8 octets.

Correction détaillée

Un octet est un mot de 8 bits. Le nombre de mots de longueur pp sur un alphabet de nn symboles est npn^{p} (arrangement avec répétition : nn choix indépendants à chacune des pp positions). Ici n=2n = 2 et p=8p = 8, donc il existe

28=256 octets distincts.2^{8} = 256 \ \text{octets distincts}.

Chaque type étant codé sur un nombre entier d'octets, il admet 2k2^{k} motifs de bits distincts, où kk est le nombre de bits :

Type JavaOctetsBits kkMotifs distincts 2k2^{k}Valeur
byte18256
short21665 536
int4324 294 967 2964,3×109\approx 4{,}3 \times 10^{9}
long86418 446 744 073 709 551 6161,8×1019\approx 1{,}8 \times 10^{19}
float4324 294 967 296
double86418 446 744 073 709 551 616

Précision sur les types signés. Le nombre de motifs distincts est 2k2^{k} dans tous les cas. Pour un type signé, ces 2k2^{k} motifs se répartissent sur l'intervalle [2k1,2k11][-2^{k-1}, 2^{k-1}-1] ; pour un type non signé, sur [0,2k1][0, 2^{k}-1]. Ce qui compte ici est la taille du réservoir de motifs, car c'est elle qui borne tout ce que le type peut représenter.

La conséquence décisive. Un double ne dispose que de 2641,8×10192^{64} \approx 1{,}8 \times 10^{19} motifs, alors que l'intervalle [0,1][0,1] contient une infinité non dénombrable de réels (exercice 4). Le principe des tiroirs interdit donc toute correspondance injective entre les réels et les double : deux réels distincts partagent forcément un même motif. C'est la raison mathématique de l'approximation des flottants — celle qui fait que 0.1 + 0.2 ne vaut pas 0.3.

#Exercice 4 — Pourquoi les réels ne sont pas représentables exactement

Énoncé (cours 1, transparents 16 et 19). Le cours affirme : « La non-dénombrabilité est inexistante dans les ordinateurs actuels. Toutes les données (entiers, rationnels, graphes, arbres...) sont codées sur (une partie finie de) N\mathbb{N}. Problème : comment représenter les réels en informatique ? » Démontrez qu'aucun codage injectif de R\mathbb{R} vers les données machine ne peut exister, puis concluez sur les nombres flottants.

Correction détaillée

Étape 1 — ce qu'est une donnée machine. Toute donnée stockée est une suite finie de bits, donc un mot sur l'alphabet B={0,1}B = \{0,1\}. L'ensemble des données machine est contenu dans BB^{*}, l'ensemble de tous les mots binaires, qui est dénombrable (exercice 5). En particulier l'ensemble des valeurs d'un double est fini, de cardinal 2642^{64}.

Étape 2 — ce qu'est un codage. Le cours définit un codage de AA dans BB comme une application injective de A+A^{+} dans B+B^{+} : deux objets différents doivent avoir deux codes différents, sinon le décodage est ambigu. Coder les réels, c'est donc chercher une injection de R\mathbb{R} vers les données machine.

Étape 3 — le principe des tiroirs. Le cours énonce : si E>F|E| \gt |F|, il n'existe pas d'injection de EE dans FF. Or R\mathbb{R} n'est pas dénombrable, tandis que les données machine le sont (exercice 5). Il n'existe donc aucune injection de R\mathbb{R} vers les données machine.

Le pont entre R\mathbb{R} et l'exercice 6. À chaque suite s=(d1,d2,)s = (d_1, d_2, \dots) de 0 et de 1, associons le réel φ(s)=i1di3i\varphi(s) = \sum_{i \ge 1} d_i\,3^{-i} : on lit la suite comme un développement en base 3 n'utilisant que les chiffres 0 et 1. Cette application est injective. En effet, si deux suites distinctes donnaient le même réel, en notant kk le premier indice où elles diffèrent (disons dk=1d_k = 1, ek=0e_k = 0), on aurait

i>k(eidi)3ii>k3i=3k2<3k,\left|\sum_{i \gt k} (e_i - d_i)\,3^{-i}\right| \le \sum_{i \gt k} 3^{-i} = \frac{3^{-k}}{2} \lt 3^{-k},

inégalité contredisant l'égalité i>k(eidi)3i=3k\sum_{i \gt k}(e_i - d_i)3^{-i} = 3^{-k} qu'imposerait le même réel. Si R\mathbb{R} était dénombrable, la partie ]0,1[]0,1[ le serait aussi, donc SS — en bijection avec φ(S)  ]0,1[\varphi(S) \subseteq \;]0,1[ — le serait également, ce qui contredit l'exercice 6. R\mathbb{R} n'est donc pas dénombrable, comme l'énonce le cours.

Conclusion. Toute représentation des réels sur une machine est nécessairement non injective : il existe toujours deux réels distincts ayant la même représentation. Autrement dit, la représentation est une approximation, jamais une identité. C'est exactement ce qu'on observe avec les flottants IEEE 754 : la mantisse ne retient qu'un nombre fini de bits significatifs, si bien que 0,10{,}1 est arrondi au flottant le plus proche, et que

pythonpython

1print(0.1 + 0.2)         # 0.300000000000000042print(0.1 + 0.2 == 0.3)  # False

Conséquence pratique. Ne jamais tester l'égalité de deux flottants : comparer un écart à une tolérance, ou compter en entiers quand l'exactitude est requise. Le défaut n'est pas un bug du langage mais une impossibilité mathématique.

#Exercice 5 — Parties finies de N\mathbb{N} et mots binaires

Énoncé (TD 1, exercice 4). On s'intéresse à la dénombrabilité de l'ensemble FF des parties finies de N\mathbb{N}.

  1. Montrez qu'il y a bijection entre l'ensemble FF et l'ensemble des mots sur l'alphabet B={0,1}B = \{0,1\}, noté BB^{*}.
  2. Montrez que l'ensemble BB^{*} est dénombrable.
  3. Déduisez-en que l'ensemble FF est lui-même dénombrable.
Correction détaillée

1. Un codage explicite des parties finies. À une partie finie non vide S={n1<n2<<nk}S = \{n_1 \lt n_2 \lt \dots \lt n_k\} de N\mathbb{N}, associons le mot binaire w(S)w(S) de longueur nk+1n_k + 1 dont les 1 occupent les positions n1,n2,,nkn_1, n_2, \dots, n_k (positions numérotées à partir de 0), et posons w()=εw(\emptyset) = \varepsilon. Autrement dit, w(S)w(S) est la fonction caractéristique de SS, tronquée juste après son dernier 1.

  • ww est injective : SS se relit sur w(S)w(S) comme l'ensemble des positions des 1, et w(S)w(S) détermine SS sans ambiguïté.
  • L'image de ww est l'ensemble W={ε}{mots se terminant par 1}W = \{\varepsilon\} \cup \{\text{mots se terminant par } 1\}, qui est une partie infinie de BB^{*}.

On obtient donc une bijection explicite entre FF et WW. Pour obtenir une bijection entre FF et BB^{*} entier, il suffit d'apparier les deux énumérations : on range les mots de BB^{*} dans l'ordre hiérarchique (par longueur croissante, puis lexicographique) et les mots de WW dans ce même ordre, et on associe le ii-ème mot de WW au ii-ème mot de BB^{*}. Deux ensembles infinis dénombrables sont toujours en bijection, et cette construction en exhibe une.

2. BB^{*} est dénombrable. On range les mots par longueur croissante, puis par ordre lexicographique à longueur fixe :

ε,  0,  1,  00,  01,  10,  11,  000,  001,\varepsilon,\; 0,\; 1,\; 00,\; 01,\; 10,\; 11,\; 000,\; 001, \dots

Ce rangement attribue à chaque mot un rang unique, donc définit une bijection entre BB^{*} et N\mathbb{N} : c'est la preuve donnée par le cours. Le décompte par longueur est utile à retenir : il y a 2L2^{L} mots de longueur LL et 2L+112^{L+1} - 1 mots de longueur au plus LL ; le rang d'un mot de longueur LL est donc compris entre 2L2^{L} et 2L+112^{L+1} - 1.

3. Conclusion. FF est en bijection avec WW, qui est une partie de BB^{*}. Or toute partie d'un ensemble dénombrable est finie ou dénombrable, et WW est infini. Donc FF est dénombrable.

Lecture informatique. Ce résultat dit exactement que l'ensemble des données que peut manipuler une machine est dénombrable : un fichier, un graphe fini, un arbre, une liste de rationnels se codent tous par un mot fini sur un alphabet fini. C'est la première moitié de l'argument de l'exercice 4.

#Exercice 6 — P(N)\mathcal{P}(\mathbb{N}) n'est pas dénombrable

Énoncé (TD 1, exercice 6). On s'intéresse à présent à l'ensemble P(N)\mathcal{P}(\mathbb{N}) tout entier.

  1. Montrez qu'il y a une bijection entre l'ensemble P(N)\mathcal{P}(\mathbb{N}) et l'ensemble SS des suites infinies de 0 et de 1.
  2. En utilisant la méthode diagonale de Cantor, montrez que l'ensemble SS n'est pas dénombrable.
  3. Déduisez-en que P(N)\mathcal{P}(\mathbb{N}) n'est pas dénombrable.
Correction détaillée

1. La fonction caractéristique. À chaque partie ANA \subseteq \mathbb{N}, associons sa fonction caractéristique χA:N{0,1}\chi_A : \mathbb{N} \to \{0,1\}, définie par χA(n)=1\chi_A(n) = 1 si nAn \in A et χA(n)=0\chi_A(n) = 0 sinon. La suite infinie (χA(0),χA(1),χA(2),)(\chi_A(0), \chi_A(1), \chi_A(2), \dots) détermine AA et réciproquement : deux parties distinctes diffèrent sur au moins un entier, donc leurs suites diffèrent ; toute suite de 0 et de 1 est la fonction caractéristique de la partie formée des indices où elle vaut 1. C'est donc une bijection entre P(N)\mathcal{P}(\mathbb{N}) et SS.

2. La diagonale de Cantor. Supposons, par l'absurde, que SS soit dénombrable : on peut alors ranger ses éléments en une liste

texttext

1s0 = 1 0 1 1 0 ...2s1 = 0 0 1 0 1 ...3s2 = 1 1 1 0 0 ...4s3 = 0 1 0 0 1 ...5...

Construisons la suite ss^{*} dont le nn-ième terme est l'opposé du nn-ième terme de sns_n, c'est-à-dire 11 si le nn-ième terme de sns_n vaut 00, et 00 sinon. Par construction, ss^{*} diffère de sns_n au moins en position nn, pour tout entier nn. Donc ss^{*} ne figure nulle part dans la liste, qui est incomplète : contradiction. Aucune liste ne peut épuiser SS, donc SS n'est pas dénombrable.

3. Conclusion. Une bijection conserve le cardinal (principe d'égalité : s'il existe une bijection entre EE et FF, alors E=F|E| = |F|). Si P(N)\mathcal{P}(\mathbb{N}) était dénombrable, SS le serait aussi. Comme SS ne l'est pas, P(N)\mathcal{P}(\mathbb{N}) ne l'est pas non plus.

Le résultat général. Pour EE fini, P(E)=2E|\mathcal{P}(E)| = 2^{|E|}. Le cours note que l'analogie se rompt à l'infini : si EE est infini dénombrable, P(E)\mathcal{P}(E) n'est pas dénombrable. La diagonale de Cantor est l'argument qui traite tous ces cas d'un coup — c'est aussi, au signe près, celui qui prouve que R\mathbb{R} n'est pas dénombrable.

#Exercice 7 — N{3}\mathbb{N} \setminus \{3\} est dénombrable

Énoncé (TD 1, exercice 7). Montrez que N{3}\mathbb{N} \setminus \{3\} est dénombrable.

Correction détaillée

Méthode 1 — bijection explicite. Posons

f(n)={nsi n2n+1si n3f(n) = \begin{cases} n & \text{si } n \le 2 \\ n + 1 & \text{si } n \ge 3 \end{cases}

soit 000 \mapsto 0, 111 \mapsto 1, 222 \mapsto 2, 343 \mapsto 4, 454 \mapsto 5, etc. Cette application est injective (deux antécédents distincts ont des images distinctes) et surjective sur N{3}\mathbb{N} \setminus \{3\} (tout entier différent de 3 a un antécédent). C'est donc une bijection, et N{3}\mathbb{N} \setminus \{3\} est dénombrable.

Méthode 2 — par inclusion. N{3}\mathbb{N} \setminus \{3\} est une partie de N\mathbb{N}. Or toute partie d'un ensemble dénombrable est finie ou dénombrable. Comme N{3}\mathbb{N} \setminus \{3\} est infini, il est dénombrable.

Généralisation. Le même argument montre que retirer un nombre fini d'éléments à un ensemble dénombrable le laisse dénombrable. Ce n'est pas vrai pour un retrait infini : retirer une infinité d'entiers peut encore laisser un ensemble dénombrable, mais retirer les rationnels de R\mathbb{R} laisse un ensemble qui n'est plus dénombrable, puisque R\mathbb{R} lui-même ne l'est pas.

#Exercice 8 — Le club de tennis

Énoncé (TD 1, exercice 5). Dans un club de tennis, tous les membres jouent mais il y a ceux qui ne changent pas souvent d'adversaires et ceux qui en changent sans arrêt. Démontrez qu'il y a au moins deux joueurs qui ont déjà joué contre le même nombre d'adversaires distincts.

Correction détaillée

Soit nn le nombre de membres du club, et considérons la grandeur « nombre d'adversaires distincts déjà rencontrés ». Comme tous les membres jouent, cette grandeur vaut au moins 1 pour chacun d'eux. Comme on ne joue pas contre soi-même, elle vaut au plus n1n - 1.

Il n'y a donc que n1n - 1 valeurs possibles — 1,2,,n11, 2, \dots, n - 1 — pour nn joueurs. Par le principe des tiroirs (nn objets rangés dans n1n-1 tiroirs : au moins un tiroir contient deux objets), deux joueurs au moins partagent le même nombre d'adversaires distincts. \blacksquare

Pourquoi l'hypothèse « tous les membres jouent » est utile. Sans elle, la valeur 0 serait possible et il y aurait nn valeurs pour nn joueurs : plus de collision forcée par ce seul argument. En réalité le résultat tient quand même, mais il faut un argument plus fin : les valeurs 00 et n1n-1 ne peuvent pas être prises simultanément (si un joueur n'a affronté personne, personne n'a pu l'affronter, donc aucun joueur n'a n1n-1 adversaires). Il reste donc au plus n1n-1 valeurs atteignables pour nn joueurs, et la collision est forcée.

Lien avec l'encodage. Le principe des tiroirs est le même outil que dans l'exercice 4 : dès que l'ensemble des états possibles est plus petit que l'ensemble des objets à décrire, deux objets partagent une description. C'est la raison profonde pour laquelle aucune compression sans perte n'est universelle, et pour laquelle les tables de hachage admettent des collisions.

#Exercice 9 — Cinq entiers entre 1 et 8

Énoncé (TD 1, exercice 8). Montrez que si l'on prend 5 entiers entre 1 et 8 distincts, alors il y en a au moins deux dont la somme est 9.

Correction détaillée

Partitionnons l'ensemble {1,2,,8}\{1, 2, \dots, 8\} en quatre paires dont la somme vaut 9 :

{1,8},{2,7},{3,6},{4,5}.\{1, 8\}, \quad \{2, 7\}, \quad \{3, 6\}, \quad \{4, 5\}.

Choisir 5 entiers distincts dans {1,,8}\{1, \dots, 8\}, c'est ranger 5 objets dans ces 4 paires, qui jouent le rôle des tiroirs. Par le principe des tiroirs, deux des entiers choisis appartiennent à la même paire. Comme les entiers choisis sont distincts, ces deux entiers sont les deux éléments différents de cette paire, et leur somme vaut 9 par construction. \blacksquare

La méthode, plus que le résultat. Le principe des tiroirs ne s'applique jamais tout seul : il faut fabriquer les tiroirs. Ici, la conclusion porte sur une somme, donc les tiroirs sont les paires de somme 9 ; la partition {1,,8}\{1,\dots,8\} en 4 paires est ce qui rend l'argument possible. Chercher les tiroirs revient à chercher la bonne partition de l'énoncé.

Variante. Pour des nombres entre 1 et 10, il faut en prendre 6 pour être certain d'obtenir deux fois la somme 11 (les tiroirs sont alors les 5 paires {1,10},{2,9},{3,8},{4,7},{5,6}\{1,10\}, \{2,9\}, \{3,8\}, \{4,7\}, \{5,6\}).

#Exercice 10 — Différence de deux ensembles dénombrables

Énoncé (TD 1, exercice 10, approfondissement). Montrez que la différence ensembliste entre deux ensembles dénombrables est dénombrable.

Correction détaillée

Soient AA et BB deux ensembles dénombrables. Par définition de la différence ensembliste,

AB={xA  :  xB}A.A \setminus B = \{\, x \in A \;:\; x \notin B \,\} \subseteq A.

ABA \setminus B est donc une partie de l'ensemble dénombrable AA. Or le cours établit que toute partie d'un ensemble dénombrable est finie ou infinie dénombrable — c'est-à-dire, dans sa terminologie où les ensembles finis sont eux aussi dits dénombrables, que toute partie d'un ensemble dénombrable est dénombrable. D'où le résultat. \blacksquare

Remarque. L'argument est presque trop court : tout le contenu est dans la propriété « toute partie d'un ensemble dénombrable est dénombrable », qui vient de la définition même (être en bijection avec N\mathbb{N} ou avec une partie de N\mathbb{N} — une partie d'une partie est une partie). Le réflexe à acquérir : pour montrer qu'un ensemble est dénombrable, il suffit souvent de l'injecter dans un ensemble dénombrable connu.

#Exercice 11 — Somme de deux parties d'un groupe dénombrable

Énoncé (TD 1, exercice 11, approfondissement). Soit G,+\langle G, + \rangle un groupe noté additivement, avec GG de cardinal dénombrable. Soient AA et BB deux sous-ensembles de GG. On définit A+B={gG  :  aA, bB, g=a+b}A + B = \{\, g \in G \;:\; \exists a \in A,\ \exists b \in B,\ g = a + b \,\}. Montrez que A+BA + B est dénombrable.

Correction détaillée

Décomposition en union. Réécrivons A+BA + B comme une union indexée par AA :

A+B=aA(a+B),ouˋ a+B={a+b  :  bB}.A + B = \bigcup_{a \in A} (a + B), \qquad \text{où } a + B = \{\, a + b \;:\; b \in B \,\}.

Chaque terme est dénombrable. Pour aAa \in A fixé, l'application τa:GG\tau_a : G \to G, xa+xx \mapsto a + x est une bijection (sa réciproque est la translation par a-a, qui existe puisque GG est un groupe). La restriction de τa\tau_a à BB est donc une bijection de BB sur a+Ba + B, si bien que a+B=B|a + B| = |B|. Or BGB \subseteq G est une partie d'un ensemble dénombrable, donc BB est dénombrable, et a+Ba + B aussi.

L'union est dénombrable. A+BA + B est donc une union dénombrable d'ensembles dénombrables : l'ensemble d'indices AA est dénombrable, et chacun des (a+B)(a+B) l'est. Le cours établit que toute union dénombrable d'ensembles dénombrables est dénombrable. D'où A+BA + B dénombrable. \blacksquare

Les deux réflexes utilisés. (i) Une bijection transporte le cardinal : pour compter a+Ba+B, on exhibe la bijection ba+bb \mapsto a+b. (ii) Pour un objet défini par une somme, on décompose en union indexée par l'un des deux ensembles, puis on applique la stabilité par union dénombrable. Ces deux gestes, avec le principe des tiroirs et la diagonale de Cantor, forment l'outillage complet de ce chapitre.

#Ce que ces annales vérifient

  • Cardinalité : compter un ensemble de données en le partitionnant (exercices 1, 2, 3).
  • Codage : tout objet machine est un mot fini sur un alphabet fini ; un codage est injectif (exercices 3, 4, 5).
  • Dénombrabilité : N\mathbb{N}, BB^{*}, FF, N{3}\mathbb{N}\setminus\{3\}, A+BA+B sont dénombrables ; P(N)\mathcal{P}(\mathbb{N}) et R\mathbb{R} ne le sont pas (exercices 5, 6, 7, 10, 11).
  • Limites : le principe des tiroirs interdit tout encodage injectif des réels, et plus généralement toute représentation exacte d'un ensemble plus grand que le réservoir de motifs (exercices 4, 8, 9).