Tours de Hanoï

{{#ifeq:||Un article de Ziki, l'encyclopédie libre.|Une page de Ziki, l'encyclopédie libre.}}

Modèle:Voir homonymes

Fichier:Tower of Hanoi.jpeg
Modèle d'une tour de Hanoï (avec huit disques).
Fichier:Tower of Hanoi 4.gif
Étapes de la résolution du problème à quatre disques.

Les tours de Hanoï (originellement, la tour d'HanoïModèle:Note) sont un jeu de réflexion imaginé par le mathématicien français Édouard Lucas, et consistant à déplacer des disques de diamètres différents d'une tour de « départ » à une tour d'« arrivée » en passant par une tour « intermédiaire », et ceci en un minimum de coups, tout en respectant les règles suivantes :

  • on ne peut déplacer plus d'un disque à la fois ;
  • on ne peut placer un disque que sur un autre disque plus grand que lui ou sur un emplacement vide.

On suppose que cette dernière règle est également respectée dans la configuration de départ.

Origine du problème

Fichier:Tour d Hanoi Lucas.png
La tour d'Hanoï (original de l’œuvre de Lucas). Gallica

Le problème mathématique des tours de Hanoï a été inventé par Édouard Lucas. Paru d'abord en fascicule en 1889<ref>Modèle:Ouvrage. Voir une annonce Modèle:Article, disponible sur Gallica. </ref> , il est publié ensuite dans le tome 3 de ses Récréations mathématiques, parues à titre posthume en 1892<ref name = "Lucas" />. Il annonce que ce problème est dû à un de ses amis, N. Claus de Siam (anagramme de Lucas d'Amiens, Amiens étant sa ville de naissance), prétendument professeur au collège de Li-Sou-Stian (anagramme de Saint Louis, le lycée où Lucas enseignait).

Sous le titre « Les brahmes tombent », Lucas relate que Modèle:Citation.

Comme indiqué ci-dessous, un jeu à 64 disques requiert un minimum de 264-1 déplacements (soit Modèle:Unité). En admettant qu'il faille une seconde pour déplacer un disque, ce qui fait 86 400 déplacements par jour, la fin du jeu aurait lieu au bout d'environ 213 000 milliards de jours, ce qui équivaut à peu près à 584,5 milliards d'années, soit 43 fois l'âge estimé de l'univers (13,7 milliards d'années selon certaines sources)Modèle:Note.

Nombre de déplacements à effectuer

Il est facile de démontrer par récurrence que si n est le nombre de disques, il faut 2n - 1 coups au minimum pour parvenir à ses finsModèle:Note, quantité qui augmente très rapidement avec n. En effet, soient A, B et C les trois emplacements des tours ; notons xn le nombre de déplacements de disques nécessaires au déplacement d'une tour complète. Pour déplacer une tour de n disques de A vers C, on effectue ces trois étapes :

  • déplacer la tour des n-1 premiers disques de A vers B (étape qui nécessite xn-1 déplacements, d’où la récurrence) ;
  • déplacer le plus grand disque de A vers C (un déplacement supplémentaire) ;
  • déplacer la tour des n-1 premiers disques de B vers C (à nouveau xn-1 déplacements).

Le nombre de déplacements de disques vérifie donc la relation de récurrence :

<math>

\left\{\begin{matrix} x_0 &=& 0 \\ x_n &=& 2x_{n-1} + 1 &\mbox{si }n\geq1 \end{matrix}\right.

</math>

ce qui donne bien

<math>x_n=2^n-1\,</math>

On peut montrer que la méthode décrite ici donne la séquence optimale (celle qui nécessite le moins de coups), et que celle-ci est unique. En effet, pour déplacer la tour de n disques de A vers C, on devra forcément, à un moment ou à un autre, déplacer le plus grand disque de A vers C, et pour ce faire, on devra avoir empilé les n-1 premiers disques en B.

Résolution algorithmique

Solution récursive

Le problème des tours de Hanoï est vu en algorithmique (programmation), où il offre un exemple de la puissance et de la lisibilité des programmes définis de façon récursive (un autre exemple étant le tri arborescent). En effet, la méthode de résolution vue précédemment conduit à un algorithme récursif, décrit ci-dessous. Les paramètres de la procédure Hanoï sont :

  • n : nombre de disques utilisés,
  • D : emplacement de départ,
  • A : emplacement d'arrivée,
  • I : emplacement intermédiaire.
procédure Hanoï(n, D, A, I)
    si n ≠ 0
        Hanoï(n-1, D, I, A)
        Déplacer le disque de D vers A
        Hanoï(n-1, I, A, D)
    fin-si
fin-procédure

Algorithme généralisé à une position quelconque

On peut généraliser la résolution récursive au cas où les disques sont initialement disposés de façon aléatoire sur les trois emplacements, plutôt qu’empilés sur le premier (la position initiale est quelconque). L’objectif sera de regrouper les n disques sur l’emplacement d’arrivée A. On numérote les n disques de 1 à n par ordre de taille croissante, et l’on note Pk la position du disque numéroté k. On part du constat suivant : il faudra forcément, à un moment, déplacer le plus grand disque de Pn vers A. Le raisonnement récursif est alors similaire au précédent :

  • regrouper les n-1 premiers disques sur l’emplacement intermédiaire I (celui qui n’est ni A ni Pn) ;
  • déplacer le plus grand disque de Pn vers A ;
  • regrouper les n-1 premiers disques en A.

À la différence du cas particulier traité précédemment, l’emplacement de départ dépend de la disposition des disques. Il faut par ailleurs distinguer le cas où le disque n se trouve déjà au bon endroit (Pn = A). Dans ce cas, suivre la méthode précédente ne serait pas optimal : la deuxième étape est inutile, et l’on peut fusionner les première et troisième étapes en regroupant directement les n-1 premiers disques en A.

L’algorithme généralisé devient donc :

procédure Hanoï-généralisé(n, A)
    si n ≠ 0
        si Pn = A
            Hanoï-généralisé(n-1, A)
        sinon
            Hanoï-généralisé(n-1, I)
            Déplacer le disque de Pn vers A
            Hanoï-généralisé(n-1, A)
        fin-si
    fin-si
fin-procédure

Notons que le dernier appel récursif peut être remplacé par un appel à la procédure Hanoï du cas particulier vu précédemment, puisque tous les n-1 premiers disques sont alors empilés en I.

Avec le même raisonnement que précédemment, on montre que cet algorithme donne l’unique séquence optimale. On peut exprimer le nombre de coups en fonction du nombre n de disques, de leur disposition et de l’emplacement A d’arrivée : on le note yn(A).

  • Si le disque n est déjà bien placé, alors le nombre de coups est yn-1(A) car on se contente de déplacer les n-1 premiers disques en A ;
  • sinon, le nombre de coups est <math>y_{n-1}(\mbox{I}) + 1 + x_{n-1}</math>, soit <math>y_{n-1}(\mbox{I}) + 1 + (2^{n-1}-1)</math>.

On a donc la relation de récurrence suivante :

<math>

\left\{\begin{matrix} y_0(\mbox{A}) &=& 0\qquad\qquad\qquad\qquad\qquad\quad \\ y_n(\mbox{A}) &=& \left\{\begin{matrix}

   y_{n-1}(\mbox{A})           &\mbox{si P}_n=\mbox{A} \\
   y_{n-1}(\mbox{I}) + 2^{n-1} &\mbox{sinon}\qquad
   \end{matrix}\right.  &\quad\mbox{, si }n\geq1

\end{matrix}\right.

</math>

On peut alors exprimer yn(A) comme une somme de puissances de 2, où un terme est ajouté si et seulement si le disque correspondant est mal placé :

<math>y_n = \sum_{k=1}^n b_k \times 2^{k-1}</math>

bk vaut 0 si le disque k est bien placé, 1 sinon.

Dans le pire des cas, tous les disques sont mal placés. On a alors <math>y_n = \sum_{k=1}^n 2^{k-1} = 2^n-1</math>. Il est intéressant de remarquer que la situation initiale usuelle est l’un de ces pires des cas.

Solution itérative

Il existe également une procédure itérative pour résoudre le problème des tours de Hanoï, et ce de façon optimale. Elle consiste à effectuer successivement les deux déplacements suivants, en désignant par A, B, C les trois tours (de gauche à droite) :

  • déplacer le plus petit disque d'un emplacement à l'emplacement suivant (de A vers B, de B vers C, de C vers A, par exemple) ;
  • déplacer un autre disque ;

et à poursuivre itérativement ces deux déplacements jusqu'à ce que la tour complète soit déplacée, le dernier déplacement se limitant alors à celui du plus petit disque sur le sommet de la tour. L'action « déplacer un autre disque » est non ambiguë puisque, en dehors du plus petit disque, un seul mouvement de disque est possible.

Contrairement à la procédure récursive, la procédure itérative n'utilise aucune mémorisation de l'arbre des déplacements à effectuer et nécessite seulement de se souvenir si on doit déplacer le plus petit disque ou non, et dans quel sens sont effectués les déplacements du petit disque. Il permet également, à tout moment, de revenir à la situation de départ : il suffit pour cela d'inverser le sens dans lequel se déplace le plus petit disque. Cependant, les raisons pour lesquelles cet algorithme résout le problème sont moins apparentes que pour l'algorithme récursif.

On peut l’expliquer en constatant que dans la solution optimale, on déplace nécessairement le plus petit disque une fois sur deux exactement, car le déplacer deux fois de suite ne serait pas optimal, et déplacer l’autre disque deux fois de suite non plus. Il reste à déterminer la façon dont on déplace ce plus petit disque.

Supposons que la tour de n disques soit initialement sur l’emplacement A, et qu’on veuille la déplacer sur l’emplacement C. On montre par récurrence sur n que l’itération des deux mouvements décrits précédemment produit la séquence optimale, si le sens dans lequel est déplacé le plus petit disque est A → B → C → A (de la gauche vers la droite) pour n pair, ou A → C → B → A (de droite à gauche) pour n impair. En effet :

  • Pour n = 1, il suffit de déplacer l'unique disque de A vers C.
  • Supposons la propriété démontrée pour le déplacement de n-1 disques. Comme dans le cas récursif, on va déplacer la tour de n disques en déplaçant les n-1 disques supérieurs de A vers B, puis le grand disque de A vers C, puis les n-1 disques de B vers C.
    • Si n est pair, alors n-1 est impair, et selon l'hypothèse de récurrence (en échangeant les rôles de C et B), lors du déplacement de la pile des n-1 disques supérieurs de A vers B, un déplacement sur deux est effectué par le plus petit disque dans l'ordre A → B → C → A → ... → A → B. On déplace alors le grand disque de A vers C (déplacement qui succède au dernier déplacement du plus petit disque). Puis on déplace les n-1 disques de B vers C, un déplacement sur deux étant effectué par le plus petit disque, cette fois dans l'ordre B → C → A → B → ... → B → C. Finalement, la suite des déplacements du petit disque aura bien été A → B → C → A → … → B puis B → C → A → … → C, le plus petit disque étant déplacé une fois sur deux.
    • La vérification est analogue si n est impair.

Une autre solution itérative

On suppose les tours numérotées 1, 2 et 3.

Un déplacement de la tour n° i vers la tour n° j est noté i + j.

Ainsi le déplacement 3 désigne aussi bien le déplacement de la tour 1 vers la tour 2 que de la tour 2 vers la tour 1, mais il n'y a pas d'ambiguïté possible : on disposera le plus petit disque sur le plus grand.

De même le déplacement 4 désigne aussi bien le déplacement de la tour 1 vers la tour 3 que de la tour 3 vers la tour 1.

Et enfin le déplacement 5 désigne aussi bien le déplacement de la tour 2 vers la tour 3 que de la tour 3 vers la tour 2.

Lorsque le nombre de disques est pair, les déplacements à effectuer sont 3,4,5,3,4,5,3,4,5... autant de fois que nécessaire (la séquence 3,4,5 est répétée <math>\frac{2^n-1}{3}</math> fois).

Lorsque le nombre de disques est impair, les déplacements à effectuer sont 4,3,5,4,3,5,...autant de fois que nécessaire (la séquence 4,3,5 est répétée <math>\frac{2^n-2}{3}</math> fois puis se termine par le déplacement de la tour 1 vers la tour 3).

Une troisième solution itérative

Fichier:AnimeHanoiNB.gif
Résolution du problème des tours de Hanoï, en s'aidant de l'alternance Noir et Blanc des disques.

On suppose les disques colorés en noir en blanc, alternativement. Par commodité, on supposera aussi que les socles des trois tiges sont colorés en noir ou blanc. Le socle qui supporte la tour initiale est colorée d'une couleur autre que celle du plus grand disque, de façon à respecter l'alternance des couleurs. Les deux autres socles sont l'un noir, l'autre blanc. On déplace itérativement les disques selon les deux règles suivantes<ref>Modèle:Article.</ref> :

  • On n'effectue jamais un mouvement qui annule directement le dernier mouvement qu'on vient d'effectuer.
  • On déplace le seul disque qu'on peut poser sur un disque ou un socle de couleur différente.

Tours de Hanoï et Triangle de Pascal

Fichier:Hanoi-Graph-3-text.png
Graphe des tours de Hanoï, avec 3 disques
Fichier:TrianglePascal GrapheImpair.svg
Graphe obtenu à partir du Triangle de Pascal

On peut représenter le jeu des Tours de Hanoï par un graphe abstrait, chaque sommet du graphe représentant une disposition possible des N disques sur les trois tours, une arête reliant deux sommets s'il existe un mouvement d'un disque permettant de passer d'une disposition, représentée par l'un des sommets, à l'autre. L'étiquetage des sommets est basé sur la position des disques dans la disposition qu'il représente : on lit de gauche à droite à quelle tour appartient chaque disque, en commençant par la position du plus grand disque.

Le diagramme montre l'arbre du jeu avec trois disques. La position initiale est située à l'un des sommets du triangle, par exemple AAA, la position finale étant un autre sommet, BBB ou CCC. La couleur des arêtes indique le disque à déplacer : rouge pour le plus petit disque, jaune pour le disque intermédiaire, et bleu pour le grand disque.

On montre que, pour tout N, le graphe des Tours de Hanoï à N disques est identique à celui obtenu à partir d'un Triangle de Pascal d'ordre 2N, où l'on relie par une arête les coefficients binomiaux impairs<ref>A.M.Hinz, Pascal's triangle and the tower of Hanoï, Amer. Math. Monthly 9 (1992) 538-544</ref>.

Applications

La tâche de la Tour de Hanoï est utilisée dans la recherche en psychologie notamment au travers de la résolution de problème. Il est également utilisé comme test neuropsychologique.

Cette tâche est sensible aux dysfonctionnements frontaux et préfrontaux<ref name="ref1">Modèle:Article</ref>,<ref>Modèle:Article</ref>.

Ce test permet ainsi l'évaluation des fonctions exécutives<ref>Modèle:Article</ref>, comme la planification<ref name="ref1"/>, la mémoire de travail<ref>Modèle:Article</ref> et l'inhibition<ref>Modèle:Ouvrage</ref>.

La performance à la tour d’Hanoï dépend des capacités d'inhibition<ref>Modèle:Article</ref>, de la mémoire de travail<ref>Modèle:Article</ref>, de la mémoire procédurale<ref>Modèle:Article</ref>, et de l'intelligence fluide<ref>Modèle:Article</ref>.

Or l'inhibition nécessite la suppression de l'activité du cortex moteur primaire, du cortex frontal inférieur droit et de l'aire motrice supplémentairement<ref>Modèle:Article</ref>. La mémoire de travail implique la partie dorso-latérale du cortex frontal qui permet la manipulation active et le contrôle des informations<ref>Modèle:Article</ref>. De même, la planification est corrélée avec l'activation de la partie dorsale du cortex préfrontal, du cortex pariétal et prémoteur et du cerebellum<ref>Modèle:Article</ref>.

On comprend pourquoi la tour d'Hanoï est sensible aux dysfonctionnements frontaux et préfontaux<ref name="ref1"/>.

Ce test est proche de celui du test de la Tour de Londres ainsi que celui des Tours de Toronto<ref>Modèle:Article</ref>.

Notes et références

Notes

Modèle:Références

Références

Modèle:Références

Voir aussi

Articles connexes

Bibliographie

Modèle:Ouvrage.

Modèle:Portail