L'arbre de Stern-Brocot : énumération des rationnels

Pour pallier les manques de la méthode historique de Cantor.

Achille Brocot, horloger de son état, introduisit en 1860 un arbre binaire particulier, aujourd’hui appelé « arbre de Stern-Brocot », avec l’aide duquel il souhaitait approximer tout réel par des rationnels aux numérateur et dénominateur limités. Cette restriction lui permettrait d’effectuer l’approximation dans ses horloges, avec des engrenages comportant peu de dents donc simples à fabriquer.

Bien plus tard, en 1999, Calkin et Wilf se basèrent sur cet arbre pour démontrer la dénombrabilité1 de Q\mathbf Q. En 1999 ? Mais Cantor (Georg Ferdinand Ludwig Philipp de son petit nom, 1845–1918, mathématicien allemand) avait pourtant clos le sujet à la fin du 19ème siècle. Non sans remous d’ailleurs, puisqu’il paraissait en ces vieux temps aberrant que Q\mathbf Q, dense dans R\mathbf R, puisse comporter autant d’éléments que N\mathbf N.

Pour comprendre cette indignation, il faut assimiler la notion de densité d’un ensemble dans un autre. « Q\mathbf Q dense dans R\mathbf R » signifie qu’entre deux réels distincts quelconques, il existe une infinité de rationnels. Par exemple, il existe une infinité de rationnels entre 2\sqrt 2 et π\pi, entre 0.000110.00011 et 0.000120.00012… Notamment, il en existe une infinité entre 00 et 11, entre 11 et 22, entre 22 et 33… ce qui n’a pas empêché Cantor de prouver qu’il y avait autant de nombres rationnels que d’entiers naturels !

Pour suivre cet article, il vous faut être à l’aise avec les ensembles et les fonctions, ainsi qu’avec l’arithmétique, principalement la notion de deux nombres premiers entre eux. Connaître le principe des arbres binaires est aussi nécessaire.

Il est utile de connaître les notions de dénombrabilité et de bijectivité, car elles ne seront que brièvement expliquées. Toutefois, les définitions fournies ici devraient suffire. Maîtriser le principe de récurrence vous permettra de comprendre l’ensemble des démonstrations.

Pour information, l’article est purement mathématique et n’est rattaché à aucune application de la vie courante. Les objectifs sont au nombre de trois :

  • Vous introduire à la notion de dénombrabilité, avec l’exemple surprenant de Q\mathbf Q ;
  • Vous faire découvrir la structure qu’est l’arbre de Stern-Brocot ;
  • Vous faire manipuler des arbres binaires, notamment au travers de récurrences.

  1. Un ensemble est dit dénombrable s’il comporte autant d’éléments que N\mathbf N, c’est-à-dire si on peut énumérer ses éléments : le premier, le deuxième, le troisième, etc.

La méthode de Cantor

Pour démontrer ce résultat surprenant, Cantor commença par considérer N2\mathbf N^2 comme une grille puis attribuer à chaque point deux coordonnées. Parcourir cette grille selon des diagonales nous permet alors de définir une bijection1 entre N×N\mathbf N\times\mathbf N^* et Q+\mathbf Q^+.

Quadrillage du plan et parcours suivant des diagonales
Quadrillage du plan et parcours suivant des diagonales

Plus formellement, pour n1n \geq 1, la nnème diagonale est l’ensemble suivant :

{(i,j)N2,i+j=n}.\lbrace (i, j) \in \mathbf N^2, i + j = n \rbrace.

En ne conservant que les termes d’indice de colonne non nul et premier avec l’indice de ligne, on définit :

E:={(p,q)N×N pq=1}E := \lbrace (p, q) \in \mathbf N\times\mathbf N^* \mid \ p \wedge q = 1 \rbrace

puis l’application suivante :

f  ⁣:[t]EQ+(p,q)pqf \ \colon \begin{aligned}[t] E &\to \mathbf Q^{+} \\ (p, q) &\mapsto \frac pq \end{aligned}

Par définition de Q+\mathbf Q^{+}, ff est bijective. On a alors successivement :

  • N×N\mathbf N\times\mathbf N^{*}, produit cartésien de deux ensembles dénombrables, est dénombrable ;
  • EE, partie infinie d’un tel ensemble, est dénombrable ;
  • Q+\mathbf Q^{+}, en bijection avec EE, est dénombrable ;
  • Q\mathbf Q^{-} est dénombrable par passage aux opposés ;
  • Q\mathbf Q, réunion de deux ensembles dénombrables, est dénombrable.

Il est donc effectivement possible d’énumérer les rationnels. Seulement, le faire de cette manière ne permet de prévoir simplement ni le nème rationnel, ni même le successeur d’un élément donné. Heureusement, Calkin et Wilf parviennent à se servir de l’arbre de Stern-Brocot pour retrouver le résultat de Cantor et pallier ses manques2.


  1. Une bijection est une application f:EFf : E \to F telle que tout élément de FF admette exactement un antécédent par ff. Autrement dit, une telle application permet de relier un à un les éléments de EE à ceux de FF. ff est dite bijective et EE et FF en bijection. De tels ensembles ont alors même nombre d’éléments.
  2. Ceux du résultat, pas de Cantor. Comprenons-nous bien : ce mec était une machine.

Dessine-moi un arbre !

Pour dresser l’arbre de Stern-Brocot, partons de la racine : 11\frac 11. Puis prenons pour fils gauche 11+1\frac{1}{1 + 1} et pour fils droit 1+11\frac{1 + 1}{1}. Plus généralement, on définit le fils gauche d’un noeud ij\frac ij par ii+j\frac{i}{i + j} et le fils droit par i+jj\frac{i + j}{j}. Ainsi, un noeud NN a pour fils gauche N1+N\frac {N}{1+N} et pour fils droit 1+N1 + N. On obtient alors l’arbre suivant :

Arbre de Stern-Brocot
Arbre de Stern-Brocot

Il est clair que cet arbre ne contient que des rationnels strictement positifs et que 11 n’apparaît qu’à la racine. En outre, pour tout noeud N=ijN = \frac ij, on a directement :

  • i=ji = j i.e. N=1N = 1 si le noeud est la racine ;
  • i<ji < j i.e. N<1N < 1 si le noeud est un fils gauche ;
  • i>ji > j i.e. N>1N > 1 si le noeud est un fils droit.

Introduisons maintenant plusieurs résultats dont nous nous servirons par la suite et dont les démonstrations sont intéressantes puisqu’elles constituent des exemples de récurrence sur un arbre binaire1.


Lemme

Si ij\dfrac ij est un noeud de l’arbre, ii et jj sont premiers entre eux.

Démonstration

Le numérateur et le dénominateur de la racine 1/11/1 sont clairement premiers entre eux.

Prenons i/ji/j un noeud quelconque de l’arbre, c’est-à-dire (i,j)(i, j) dans N×N\mathbf N\times\mathbf N^*. On a alors :

(i+j)j=i(i+j)=ij.(i+j) \wedge j = i \wedge (i+j) = i \wedge j.

Ainsi, si ii et jj premiers entre eux, le fils gauche ii+j\frac{i}{i + j} du noeud ij\frac ij la vérifie, de même que le fils droit i+jj\frac{i + j}{j}.

Par induction structurelle sur le niveau d’exploration de l’arbre, on en déduit le lemme.


Lemme

Deux noeuds ab\dfrac ab et cd\dfrac cd ayant des fils gauches (ou droits) identiques vérifient a=ca = c et b=db = d.

Démonstration

Prenons deux noeuds a/ba/b et c/dc/d ayant tous deux pour fils gauche p/qp/q.

Par définition :

pq=aa+b=cc+d.\frac pq = \frac{a}{a+b} = \frac{c}{c+d}.

Donc, on a successivement :

  • a(c+d)=c(a+b)a(c+d) = c(a+b)
  • ac+ad=ac+cbac + ad = ac + cb
  • ad=cbad = cb
  • a/b=c/da/b = c/d car b,d0b, d \neq 0

Mais ces deux fractions sont irréductibles donc a=ca = c et b=db = d.

On conclut de même dans le cas où les fils droits sont identiques.


Lemme

Pour tout kNk \in \mathbf N^* et tout noeud NN de l’arbre, le noeud provenant d’une suite de kk fils gauches du noeud NN est N1+kN\dfrac{N}{1 + kN}.

Démonstration

Prenons NN un noeud de l’arbre.

Le premier fils gauche de NN est son fils gauche N1+N=N1+1×N\frac{N}{1 + N} = \frac{N}{1 + 1 \times N}. Donc on a le résultat pour k=1k = 1.

Prenons kNk \in \mathbf N^* tel que le noeud provenant d’une suite de kk fils gauches du noeud NN soit N1+kN\frac{N}{1 + kN}.

Alors le fils gauche de ce noeud est :

N1+kN1+N1+kN=N1+kN×11+N1+kN=N1+kN+N=N1+(k+1)N.\dfrac{\dfrac{N}{1 + kN}}{1 + \dfrac{N}{1 + kN}} = \dfrac{N}{1 + kN} \times \dfrac{1}{1 + \dfrac{N}{1 + kN}} = \dfrac{N}{1 + kN + N} = \dfrac{N}{1 + (k+1)N}.

Par principe de récurrence, le lemme est vérifié.

Remarque

On conclut de manière analogue que le noeud provenant d’une suite de kk fils droits du noeud NN est N+kN + k.

La bijection promise

Pour établir la dénombrabilité de Q+\mathbf Q^{+}, définissons une suite (vn)nN(v_{n})_{n \in \mathbf N} en posant v0=0v_0 = 0 puis en effectuant un parcours en largeur de l’arbre : niveau par niveau, de gauche à droite.

Parcours en largeur de l'arbre, aussi appelé parcours militaire.
Parcours en largeur de l’arbre, aussi appelé parcours militaire.

Ainsi, v1=11v_{1} = \dfrac 11, v2=12v_{2} = \dfrac 12, v3=21v_{3} = \dfrac 21, v4=13v_{4} = \dfrac 13, etc.

Cette suite peut paraître sans intérêt de prime abord, et pourtant :


Théorème

La suite (vn)nN(v_{n})_{n \in \mathbf N} est une bijection de N\mathbf N dans Q+\mathbf Q^{+}.

Démonstration

Tout d’abord, (vn)(v_{n}) est bien définie sur N\mathbf N et à valeurs dans Q+\mathbf Q^{+}, par définition de l’arbre. Prouvons maintenant qu’elle est surjective puis injective.

  • La surjectivité

La surjectivité est équivalente au fait que tout nombre rationnel strictement positif apparaît dans l’arbre. Supposons que ce ne soit pas le cas et, parmi les rationnels strictement positifs n’apparaissant pas dans l’arbre, prenons-en un pq\frac pq de dénominateur positif minimal.

Comme 11 est dans l’arbre, pqp \neq q.

Si p<qp \lt q, pqp\frac{p}{q - p} a un dénominateur plus petit et positif donc apparaît dans l’arbre. Mais le fils gauche de pqp\frac{p}{q - p} est pqp+p=pq\frac{p}{q - p + p} = \frac pq, ce qui est absurde puisque pq\frac pq est absent de l’arbre par hypothèse.

On conclut de même dans le cas p>qp > q.

  • L’injectivité

L’injectivité est équivalente au fait qu’aucun nombre rationnel apparaît deux fois dans l’arbre. Par l’absurde, prenons pq\frac pq apparaissant plusieurs fois dans l’arbre et de dénominateur positif minimal.

Il a été vu plus haut que 11 n’était présent qu’à la racine, donc pqp \neq q. Si p<qp \lt q, on a :

pqppq      qqp\begin{array}{r c l} & \dfrac{p}{q-p} & \\ \swarrow & & \searrow \\ \dfrac{p}{q} \ \ \ \ & & \ \ \dfrac{q}{q-p} \end{array}

Cet arbre sous-entend que pqp\frac{p}{q-p} est le seul père possible pour pq\frac pq. Heureusement, c’est le cas, puisque pqp\frac{p}{q-p} est un père valable pour pq\frac pq et deux noeuds ayant des fils gauches (ou droits) identiques ont les mêmes numérateur et dénominateur.

Donc, puisque qqppq\frac{q}{q - p} \neq \frac pq, pq\frac pq apparaît au moins une fois comme enfant d’un autre noeud, c’est-à-dire que pqp\frac{p}{q - p} apparaît plusieurs fois dans l’arbre, ce qui contredit la minimalité du dénominateur.

On conclut de même dans le cas p>qp > q.

On en conclut que (vn)(v_{n}) est bijective puis que Q+\mathbf Q^{+} est dénombrable et que Q\mathbf Q l’est.


Nous avons donc retrouvé le résultat de Cantor à l’aide de l’arbre de Stern-Brocot. Il est temps maintenant d’introduire un personnage : Stern.


  1. On parle d'induction structurelle.

Toujours plus loin

Ce que l’on souhaite à présent, ce sont des méthodes pour déterminer facilement le nème rationnel dans l’énumération et le successeur d’un rationnel donné. Pour cela, reprenons notre arbre et dressons la liste des numérateurs des noeuds : 1,1,2,1,3,2,3,1,4,3,5,2,5,3,41, 1, 2, 1, 3, 2, 3, 1, 4, 3, 5, 2, 5, 3, 4… Cette liste forme en fait la suite de Stern1, introduite en 1858 par Moritz Stern (1807–1894, mathématicien allemand). On notera que la liste des dénominateurs des noeuds forme la suite de Stern privée de son premier terme, ce que nous prouvons plus bas.

Cette suite (sn)(s_{n}), au nombre de propriétés tout à fait incroyable, est définie comme suit :

{s0=0s1=1n1,s2n=snn1,s2n+1=sn+sn+1\left\{\begin{array}{l} s_0 = 0 \\ s_1 = 1 \\ \forall n \geq 1, s_{2n} = s_{n} \\ \forall n \geq 1, s_{2n+1} = s_{n} + s_{n+1} \end{array}\right.

Le théorème suivant nous fournit une expression simple des termes de la suite, lesquels nous permettront par la suite d’obtenir facilement le nème rationnel de l’énumération.


Théorème

nN,sn+1=k=0n2[(nkk)mod 2]\forall n \in \mathbf N, s_{n+1} = \sum\limits_{k=0}^{\lfloor \frac n2 \rfloor} \left[\dbinom{n-k}{k} \text{mod} \ 2 \right]

x mod 2x \ \text{mod} \ 2 désigne le reste de la division euclidienne de xRx \in \mathbf R par 22. Autrement dit, pour n1n \geq 1, le nnème terme de la suite de Stern est le nombre d’entiers impairs sur la nnème diagonale du triangle de Pascal :

La suite de Stern se lit sur le triangle de Pascal.
La suite de Stern se lit sur le triangle de Pascal.

Rationnel à un rang donné

Les termes de la suite de Stern s’avèrent simples à calculer et vont nous permettre de facilement déterminer le rationnel à un rang donné. Commençons par le résultat suivant, important.


Proposition

Si n=2mn = 2m, vnv_{n} est le fils gauche de vmv_m. De même, si n=2m+1n = 2m+1, alors vnv_{n} est le fils droit de vmv_m.

vmv2m  v2m+1\begin{array}{r c l} & v_m & \\ \swarrow & & \searrow \\ v_{2m} \ \ & & v_{2m+1} \end{array}

Démonstration

En considérant que la racine est au niveau 00, on obtient facilement que le nnème niveau de l’arbre comporte 2n2^n éléments et que l’élément le plus à gauche a pour numéro 2n2^n.

Prenons alors m1m \geq 1 et notons NN le noeud numéroté par mm dans notre parcours en largeur. nn désignera le niveau auquel se positionne NN.

Il y a m2nm - 2^n noeuds à gauche et sur le même niveau que NN et 2n+1m2^{n+1} - m à sa droite. Chaque noeud à sa gauche ayant deux fils, le fils gauche de NN aura pour numéro m+2(m2n)+(2n+1m)=2mm + 2(m - 2^n) + (2^{n+1} - m) = 2m. Le numéro du fils droit est alors 2m+12m+1.

On en conclut la proposition.


Ce résultat est notamment utilisé dans le tri par tas et va nous servir à démontrer le théorème suivant, lequel va nous permettre d’exprimer le nème rationnel de l’énumération en fonction de termes de la suite de Stern, termes dont nous avons fourni une expression ci-dessus.


Théorème

nN,vn=snsn+1\forall n \in \mathbf N, v_{n} = \dfrac{s_{n}}{s_{n+1}}

Démonstration

Tout d’abord v0=0=01=s0s1v_{0} = 0 = \frac 01 = \frac{s_{0}}{s_{1}} et v1=1=11=s1s2v_{1} = 1 = \frac 11 = \frac{s_{1}}{s_{2}}. Le résultat est donc vérifié pour n=0n = 0 et n=1n = 1.

Prenons mm dans N\mathbf N tel que vm=smsm+1v_{m} = \frac{s_{m}}{s_{m+1}}.

Alors, pour n=2mn = 2m, vnv_{n} est le fils gauche de vmv_{m} et on a :

vn=smsm+sm+1=s2ms2m+1=snsn+1.v_{n} = \dfrac{s_{m}}{s_{m} + s_{m+1}} = \dfrac{s_{2m}}{s_{2m+1}} = \dfrac{s_{n}}{s_{n+1}}.

De même, si vnv_{n} est le fils droit de vmv_{m}, n=2m+1n = 2m+1 et on a :

vn=sm+sm+1sm+1=s2m+1s2(m+1)=snsn+1.v_{n} = \dfrac{s_{m} + s_{m+1}}{s_{m+1}} = \dfrac{s_{2m+1}}{s_{2(m+1)}} = \dfrac{s_{n}}{s_{n+1}}.

Par induction structurelle, on en conclut le théorème.

Successeur d’un rationnel

Le second problème de la méthode de Cantor auquel nous souhaitons remédier est la détermination du successeur d’un rationnel. Le théorème suivant s’avère alors être une aubaine pour nous, puisqu’il fournit une expression de vn+1v_{n+1} en fonction de vnv_n.


Théorème

nN,vn+1=f(vn)=11+2vnvn\forall n \in \mathbf N, v_{n+1} = f(v_{n}) = \dfrac{1}{1+ 2\lfloor v_{n} \rfloor - v_{n} }

Démonstration

On a bien : f(v0)=f(0)=1=v1f(v_0) = f(0) = 1 = v_1 et f(v1)=f(1)=12=v2f(v_1) = f(1) = \frac 12 = v_2.

  • Prenons, pour m1m \geq 1, n=2mn = 2m pair.

Alors sn<sn+1s_n < s_{n+1} car sn=s2m=sms_n = s_{2m} = s_m et sn+1=sm+sm+1s_{n+1} = s_m + s_{m+1}. D’où

f(vn)=f(snsn+1)=11+2snsn+1snsn+1=11snsn+1=sn+1sn+1sn=sn+1sm+1=sn+1sn+2=vn+1.f(v_n) = f\left(\dfrac{s_n}{s_{n+1}} \right) = \dfrac{1}{1 + 2\left\lfloor \dfrac{s_n}{s_{n+1}} \right\rfloor - \dfrac{s_n}{s_{n+1}}} = \dfrac{1}{1 - \dfrac{s_n}{s_{n+1}}} = \dfrac{s_{n+1}}{s_{n+1} - s_n} = \dfrac{s_{n+1}}{s_{m+1}} = \dfrac{s_{n+1}}{s_{n+2}} = v_{n+1}.

Donc vn+1=f(vn)v_{n+1} = f(v_n).

  • Prenons, pour m1m \geq 1, n=2m+1n = 2m+1 impair et supposons que vnv_n ne soit pas au bord droit de l’arbre.

Alors vnv_n et vn+1v_{n+1} ont un ancêtre commun, noté vpv_p, k+1k+1 niveaux au-dessus d’eux, k1k \geq 1, et vnv_n provient d’une suite de kk fils droits du fils gauche de vpv_p tandis que vn+1v_{n+1} d’une suite de kk fils gauches du fils droit de vpv_p.

Ici, k = 1.
Ici, k = 1.

Mais le fils droit d’un noeud NN est 1+N1 + N et son fils gauche est N1+N\frac{N}{1+N}.

Donc vn=k+vp1+vpv_n = k + \frac{v_p}{1+v_p} et vn+1=1+vp1+k(vp+1)v_{n+1} = \frac{1 + v_p}{1 + k(v_p+1)}. Mais :

1+vp1+k(vp+1)=11vp+1+k=11vpvp+1+k=11vn+2k=11+2vnvn\dfrac{1 + v_p}{1 + k(v_p+1)} = \dfrac{1}{\dfrac{1}{v_p+1} + k} = \dfrac{1}{1 - \dfrac{v_p}{v_p+1} + k} = \dfrac{1}{1 - v_n + 2k} = \dfrac{1}{1 + 2\lfloor v_n \rfloor - v_n}.

Donc vn+1=f(vn)v_{n+1} = f(v_n).

  • Prenons, pour m1m \geq 1, n=2m+1n = 2m+1 impair et supposons que vnv_n soit au bord droit de l’arbre.

Notons k1k \geq 1 tel que vnv_n provienne d’une suite de kk fils droits en partant de la racine. Alors vn+1v_{n+1} provient d’une suite de k+1k+1 fils gauches en partant de la racine.

Là, k = 2.
Là, k = 2.

On a alors vn=vn=k+1v_n = \lfloor v_n \rfloor = k+1. Mais vn+1=11+(k+1)v_{n+1} = \frac{1}{1+(k+1)}.

Donc vn+1=f(vn)v_{n+1} = f(v_n).

En somme, le théorème est vérifié.


  1. Cela est confirmé par l'OEIS.

Nous avons commencé par un résultat surprenant : la dénombrabilité de Q\mathbf Q, suivie de la méthode historique pour démontrer ce résultat. Puis, afin de pallier aux limitations de cette méthode, l’arbre de Stern-Brocot a été introduit. Cela a été l’occasion pour le lecteur d’effectuer des récurrences sur un arbre binaire.

Les curieux pourront consulter les ressources suivantes et se renseigner sur l’incroyable suite qu’est celle de Stern.

Concernant les images et leurs crédits :

  • Le triangle de Pascal mettant en avant la suite de Stern a été adapté d'ici.
  • Le logo de l’article provient de Hiteshsaldi, sur Wikicommons. Il est placé sous licence CC BY-SA.
  • Le reste a été créé pour les besoins de l’article et est placé dans le domaine public.

Un grand merci à Holosmos, Saroupille et Looping pour leur relecture attentive, ainsi qu’à Algue-Rythme, validateur dévoué.

12 commentaires

Après avoir dévoré l'article, j'ai lu Achille Brocot, mathématicien à ses heures cité dans la biblio. Je suis toujours assez étonné par l’ingéniosité des horlogers. Merci pour les bonnes lectures !

Cette restriction lui permettrait d'effectuer l'approximation mécaniquement, avec des engrenages comportant peu de dents.

En lisant la biblio, cette phrase se retrouve être peu claire. Tu pourrais peut-être dire plutôt :

Cette restriction lui permettrait d'utiliser l'approximation dans ses horloges, grâce à des engrenages comportant peu de dents et donc faciles à réaliser.

Sans ça, j'ai cru qu'il voulait faire une sorte de machine à calculer les rationnels.

D'ailleurs, pour ceux qui aiment les mécaniques bien réglées et les antiquités programmables, voilà des automates du XVIIIe siècle que j'ai découverts hier.

C’est curieux, mais les formules ne sont pas rendues du tout.
Je vois :
$$E := \lbrace (p, q) \in \mathbf N\times\mathbf N^* \mid \ p \wedge q = 1 \rbrace$$

au lieu de
E:={(p,q)N×N pq=1}E := \lbrace (p, q) \in \mathbf N\times\mathbf N^* \mid \ p \wedge q = 1 \rbrace

Du coup, l’article est compliqué à lire :B

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte