ATLAS Ouvrir dans l'atlas →

ExerciceMaths Sup – MPSI, chapitre 1 — Logique et ensembles · Ensembles

Exercice 41

Démonstration

Soit n⩾1n \geqslant 1. On dit que deux parties de [ ⁣[1 ;n] ⁣][\![1\,;n]\!] sont adjacentes si l'on passe de l'une à l'autre en ajoutant ou en retirant un seul élément.

1. Montrer qu'on peut ranger les 2n2^{n} parties de [ ⁣[1 ;n] ⁣][\![1\,;n]\!] en une liste A0A_{0}, A1A_{1}, …, A2n−1A_{2^{n} - 1}, où chaque partie figure exactement une fois, de sorte que Ak−1A_{k-1} et AkA_{k} soient adjacentes pour tout k∈[ ⁣[1 ;2n−1] ⁣]k \in [\![1\,;2^{n} - 1]\!], et qu'en outre A2n−1A_{2^{n} - 1} et A0A_{0} soient adjacentes. Écrire une telle liste pour n=3n = 3.

2. Montrer qu'on peut imposer de plus A0=∅A_{0} = \varnothing et Ak=[ ⁣[1 ;k] ⁣]A_{k} = [\![1\,;k]\!] pour tout k∈[ ⁣[1 ;n] ⁣]k \in [\![1\,;n]\!].

Une telle liste est un code de Gray ; on l'utilise pour coder des positions de sorte que deux positions voisines ne diffèrent que d'un bit.

Corrigé

1. Par récurrence sur n⩾1n \geqslant 1. Pour n=1n = 1, la liste ∅\varnothing, {1}\{1\} convient. Supposons construite une liste convenable C0C_{0}, …, CN−1C_{N-1} des parties de [ ⁣[1 ;n] ⁣][\![1\,;n]\!], avec N=2nN = 2^{n}. On forme la liste des parties de [ ⁣[1 ;n+1] ⁣][\![1\,;n+1]\!] en parcourant cette liste, puis en la parcourant à l'envers après avoir ajouté n+1n + 1 à chaque partie : C0, C1, …, CN−1, CN−1∪{n+1}, CN−2∪{n+1}, …, C0∪{n+1}.C_{0},\ C_{1},\ \dots,\ C_{N-1},\ C_{N-1} \cup \{n+1\},\ C_{N-2} \cup \{n+1\},\ \dots,\ C_{0} \cup \{n+1\}. Les parties de [ ⁣[1 ;n+1] ⁣][\![1\,;n+1]\!] ne contenant pas n+1n + 1 sont les CkC_{k}, et celles qui le contiennent sont les Ck∪{n+1}C_{k} \cup \{n+1\} : chacune apparaît exactement une fois, ce qui fait bien 2N=2n+12N = 2^{n+1} parties. Deux termes consécutifs dans une même moitié sont adjacents, comme Ck−1C_{k-1} et CkC_{k}. À la jonction, CN−1C_{N-1} et CN−1∪{n+1}C_{N-1} \cup \{n+1\} sont adjacents, ainsi que le dernier terme C0∪{n+1}C_{0} \cup \{n+1\} et le premier C0C_{0}. Pour n=3n = 3, on obtient ∅, {1}, {1,2}, {2}, {2,3}, {1,2,3}, {1,3}, {3}\boxed{\varnothing,\ \{1\},\ \{1,2\},\ \{2\},\ \{2,3\},\ \{1,2,3\},\ \{1,3\},\ \{3\}}

2. On adapte la construction précédente pour contrôler les premiers termes. Montrons par récurrence sur n⩾1n \geqslant 1 qu'il existe une liste cyclique adjacente C0C_{0}, …, CN−1C_{N-1} des parties de [ ⁣[1 ;n] ⁣][\![1\,;n]\!], avec N=2nN = 2^{n}, telle que Ck=[ ⁣[1 ;k] ⁣]C_{k} = [\![1\,;k]\!] pour 0⩽k⩽n0 \leqslant k \leqslant n (avec [ ⁣[1 ;0] ⁣]=∅[\![1\,;0]\!] = \varnothing). Pour n=1n = 1, la liste ∅\varnothing, {1}\{1\} convient.

Supposons une telle liste construite pour nn, et notons m=n+1m = n + 1. Comme N=2n⩾n+1N = 2^{n} \geqslant n + 1, les termes C0C_{0}, …, CnC_{n} existent. On forme la liste C0, …, Cn⏟(1),Cn∪{m}, …, C0∪{m}⏟(2),CN−1∪{m}, …, Cn+1∪{m}⏟(3),Cn+1, …, CN−1⏟(4).\underbrace{C_{0},\ \dots,\ C_{n}}_{\text{(1)}},\quad \underbrace{C_{n} \cup \{m\},\ \dots,\ C_{0} \cup \{m\}}_{\text{(2)}},\quad \underbrace{C_{N-1} \cup \{m\},\ \dots,\ C_{n+1} \cup \{m\}}_{\text{(3)}},\quad \underbrace{C_{n+1},\ \dots,\ C_{N-1}}_{\text{(4)}}.

• Chaque partie de [ ⁣[1 ;m] ⁣][\![1\,;m]\!] figure exactement une fois : les CkC_{k} dans les blocs (1) et (4), les Ck∪{m}C_{k} \cup \{m\} dans (2) et (3).

• Les termes consécutifs à l'intérieur de chaque bloc sont adjacents, car Ck−1C_{k-1} et CkC_{k} le sont. Aux jonctions : CnC_{n} et Cn∪{m}C_{n} \cup \{m\} ; puis C0∪{m}C_{0} \cup \{m\} et CN−1∪{m}C_{N-1} \cup \{m\}, adjacents car C0C_{0} et CN−1C_{N-1} le sont, par cyclicité ; puis Cn+1∪{m}C_{n+1} \cup \{m\} et Cn+1C_{n+1} ; enfin le dernier terme CN−1C_{N-1} et le premier C0C_{0}. Si les blocs (3) et (4) sont vides, ce qui n'arrive que pour N=n+1N = n + 1, c'est-à-dire n=1n = 1, la liste se referme directement de C0∪{m}C_{0} \cup \{m\} sur C0C_{0}.

• Les premiers termes sont Ck=[ ⁣[1 ;k] ⁣]C_{k} = [\![1\,;k]\!] pour k⩽nk \leqslant n, puis Cn∪{m}=[ ⁣[1 ;n+1] ⁣]C_{n} \cup \{m\} = [\![1\,;n+1]\!] au rang n+1=mn + 1 = m.

On peut imposer A0=∅ et Ak=[ ⁣[1 ;k] ⁣] pour 1⩽k⩽n.\boxed{\text{On peut imposer } A_{0} = \varnothing \text{ et } A_{k} = [\![1\,;k]\!] \text{ pour } 1 \leqslant k \leqslant n.} Pour n=3n = 3, la construction fournit ∅\varnothing, {1}\{1\}, {1,2}\{1,2\}, {1,2,3}\{1,2,3\}, {1,3}\{1,3\}, {3}\{3\}, {2,3}\{2,3\}, {2}\{2\}, liste que l'on vérifie directement. La construction a été contrôlée par ordinateur jusqu'à n=8n = 8.

À retenir : on démontre souvent un énoncé plus précis que celui demandé, ici la position des n+1n + 1 premiers termes, pour disposer d'une hypothèse de récurrence assez riche. On retrouve, sous une forme combinatoire, la leçon des exercices 19 et 24.

Dans l'édifice

Thèmes

ensembles, ensemble des parties

Notions

ensemble, ensemble des parties

Ouvrir dans l'atlas interactif →