Aller au contenu

Tours de Hanoï

Un article de Wikipédia, l'encyclopédie libre.
Modèle d'une tour de Hanoï (avec huit disques).
Étapes de la résolution du problème à quatre disques.

Les tours de Hanoï (originellement, la tour d'Hanoï[a]) 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

[modifier | modifier le code]
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[1] , il est publié ensuite dans le tome 3 de ses Récréations mathématiques, parues à titre posthume en 1892[2]. 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 « N. Claus de Siam a vu, dans ses voyages pour la publication des écrits de l'illustre Fer-Fer-Tam-Tam, dans le grand temple de Bénarès, au-dessous du dôme qui marque le centre du monde, trois aiguilles de diamant, plantées dans une dalle d'airain, hautes d'une coudée et grosses comme le corps d'une abeille. Sur une de ces aiguilles, Dieu enfila au commencement des siècles, 64 disques d'or pur, le plus large reposant sur l'airain, et les autres, de plus en plus étroits, superposés jusqu'au sommet. C'est la tour sacrée du Brahmâ. Nuit et jour, les prêtres se succèdent sur les marches de l'autel, occupés à transporter la tour de la première aiguille sur la troisième, sans s'écarter des règles fixes que nous venons d'indiquer, et qui ont été imposées par Brahma. Quand tout sera fini, la tour et les brahmes tomberont, et ce sera la fin des mondes[2] ! ».

Comme indiqué ci-dessous, un jeu à 64 disques requiert un minimum de 264-1 déplacements (soit 18 446 744 073 709 551 615 déplacements). 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)[b].

Nombre de déplacements à effectuer

[modifier | modifier le code]

On peut démontrer par récurrence que si n est le nombre de disques, il faut 2n - 1 coups au minimum pour parvenir à ses fins[c], 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 :

ce qui donne bien

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

[modifier | modifier le code]

Solution récursive

[modifier | modifier le code]
Illustration de l'algorithme récursif avec 4 disques (cliquez sur l'image pour développer/cacher le résultat des appels récursifs).

Le problème des tours de Hanoï est souvent présenté en cours d'algorithmique (programmation informatique). En effet, 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,
  • A, B, C : trois emplacements

La procédure ci-dessous déplace les n disques supérieurs de la tour A vers la tour C en utilisant la tour B comme emplacement temporaire.

procédure Hanoï(n, A, B, C)
    si n ≥ 1
        Hanoï(n-1, A, C, B)
        Déplacer le disque de A vers C
        Hanoï(n-1, B, A, C)

Pour résumer pour déplacer les n disques supérieurs de A vers C en utilisant B comme emplacement temporaire :

  • on déplace les n-1 disques supérieurs de A vers B en utilisant C comme emplacement temporaire ;
  • on déplace le disque de A vers C ;
  • on déplace les n-1 disques supérieurs de B vers C en utilisant A comme emplacement temporaire.

La figure ci-contre montre l'exécution de Hanoï(4, A, B, C). La colonne de gauche, montre l'effet global de déplacer les 4 disques de A vers C. La deuxième colonne montre les actions de Hanoï(3, A, C, B) (déplacement des 3 disques supérieurs en A vers B), le déplacement du disque de A vers C puis de Hanoï(3, B, A, C) (déplacement des 3 disques de B vers C). La troisième colonne détaille les appels récursifs pour n = 1. La dernière colonne (de droite) montre la suite complète des déplacements.

Algorithme généralisé à une position quelconque

[modifier | modifier le code]

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 , soit .

On a donc la relation de récurrence suivante :

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é :

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 . Il est intéressant de remarquer que la situation initiale usuelle est l’un de ces pires des cas.

Solution itérative

[modifier | modifier le code]

Il existe également une procédure itérative pour résoudre de façon optimale le problème des tours de Hanoï. 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

[modifier | modifier le code]

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 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 fois puis se termine par le déplacement de la tour 1 vers la tour 3).

Une troisième solution itérative

[modifier | modifier le code]
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é 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[3] :

  • 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

[modifier | modifier le code]
Graphe des tours de Hanoï, avec 3 disques.
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[4].

Applications

[modifier | modifier le code]
Images de tomographie AFM 3D d'une nanofeuille de palladium multicouche sur une plaquette de silicium.

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[5],[6].

Ce test permet ainsi l'évaluation des fonctions exécutives[7], comme la planification[5], la mémoire de travail[8] et l'inhibition[9].

La performance à la tour d’Hanoï dépend des capacités d'inhibition[10], de la mémoire de travail[11], de la mémoire procédurale[12], et de l'intelligence fluide[13].

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[14]. 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[15]. 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[16].

On comprend pourquoi la tour d'Hanoï est sensible aux dysfonctionnements frontaux et préfontaux[5].

Ce test est proche de celui du test de la Tour de Londres ainsi que celui des Tours de Toronto[17].

Notes et références

[modifier | modifier le code]
  1. Édouard Lucas, « La tour d'Hanoï », dans Récréations mathématiques, vol. III (lire en ligne), p. 55.
  2. Le nombre exact de secondes nécessaires (18 446 744 073 709 551 615) est égal au nombre de grains de blé demandés, selon une autre légende indienne, par le brahmane Sissa au roi Belkib comme récompense pour avoir inventé le jeu d'échecs, qui se joue sur 64 cases.
  3. Pour résoudre le problème plus général du nombre de déplacements à effectuer pour déplacer n disques au moyen d'un nombre de tours autre que trois, voir J.S.Frame, B.M.Stewart, A solution to Monthly problem 3918, Amer. Math. Monthly 48 (1941) 216-219.

Références

[modifier | modifier le code]
  1. Édouard Lucas, Jeux scientifiques pour servir à l'histoire, à l'enseignement et à la pratique du calcul et du dessin, Paris, Chambon et Baye, (lire en ligne). Voir une annonce « Instruire en s'amusant », L'Intransigeant,‎ (lire en ligne), disponible sur Gallica.
  2. a et b Édouard Lucas, Récréations mathématiques, t. 3, (réimpr. Librairie Albert Blanchard, 1979) (lire en ligne), p. 58, disponible sur Gallica.
  3. Jean-Paul Delahaye, « Les tours de Hanoï, plus qu'un jeu d'enfants », Pour la Science, no 457,‎ , p. 108-112 et 114.
  4. A.M.Hinz, Pascal's triangle and the tower of Hanoï, Amer. Math. Monthly 9 (1992) 538-544
  5. a b et c (en) V. Goel et J. Grafman, « Are the frontal lobes implicated in planning functions? Interpreting data from the Tower of Hanoi. », Neuropsychologie, vol. 33, no 5,‎ , p. 623-642
  6. (en) D. T. Stuss et D. F. Benson, « Neuropsychological studies of the frontal lobes », Psychological Bulletin, vol. 95, no 1,‎ , p. 3-28
  7. (en) Goldstein, F. C. et Green, R. C., « Assessment of problem solving and executive functions. Clinical neuropsychological assessment: A cognitive approach. », Critical issues in neuropsychology,‎ , p. 49–81
  8. (en) V. Goel, S. D. Pullara et J. Grafman, « A computational model of frontal lobe dysfunction: Working memory and the Tower of Hanoi task », Cognitive Science, vol. 25, no 2,‎ , p. 287-313
  9. (en) Pennington, B. F., Bennetto, L., McAleer, O. et Roberts Jr., Attention, memory, and executive function : Executive functions and working memory: Theoretical and measurement issues, Baltimore, , 327–348 p.
  10. (en) M. C. Welsh, T. Satterlee Cartmell et M. Stine, « Towers of Hanoi and London: Contribution of working memory and inhibition to performance », Brain and Cognition, vol. 41, no 2,‎ , p. 231-242
  11. (en) S. J. Handley, A. Capon et C. Harper, « Conditional reasoning and the Tower of Hanoi: The role of spatial and verbal working memory », British Journal of Psychology, no 93,‎ , p. 501-518
  12. (en) A. Bagley, M. C. Welsh, P. Retzlaff et E. Bryan, « Towers of Hanoi and London: Contribution of procedural learning and inhibition », Journal of the International Neuropsychological Society, vol. 8, no 2,‎ , p. 229
  13. (en) S. Devine, M. C. Welsh, P. Retzlaff, M. Yoh et C. Adams, « Explicit and implicit cognitive processes underkying Tower of Hanoi performance », Journal of the International Neuropsychological Society, vol. 7, no 2,‎ , p. 250
  14. (en) Zandbelt B., M. Bloemendaal, J. Hoogendam, R. Kahn et M. Vink, « Transcranial magnetic stimulation and functional MRI reveal cortical and subcortical interactions during stop-signal response inhibition », Journal Of Cognitive Neuroscience, vol. 25, no 2,‎ , p. 157-174 (DOI 10.1162/jocn_a_0030)
  15. (en) C. E. Curtis, D. H. Zald et J. V. Pardo, « Organization of working memory within the human prefrontal cortex: a PET study of self-ordered object working memory », Neuropsychologia, vol. 38, no 11,‎ , p. 1503-1510
  16. (en) J. Rowe, A. Owen, I. Johnsrude et R. Passingham, « Imaging the mental components of a planning task. », Neuropsychologia, vol. 39, no 3,‎ , p. 315-327
  17. (en) R. Parks et J. Cardoso, « Parallel distributed processing and executive functioning : Tower of Hanoi neural networkmodel in healthy controls and left frontal lobe patients. », International journal of neuroscience, vol. 89, nos 3-4,‎ , p. 217-240

Bibliographie

[modifier | modifier le code]
  • (en) Andreas M. Hinz, Sandi Klavžar et Uroš Milutinović, The Tower of Hanoi – Myths and Maths, Bâle, Springer Science & Business Media, , 335 p. (ISBN 978-3-0348-0237-6, lire en ligne).
  • Daniel Berend, Liat Cohen et Omrit Filtser, « A tour of general Hanoi graphs », Theoretical Computer Science, vol. 983,‎ , article no 114289 (DOI 10.1016/j.tcs.2023.114289)

Articles connexes

[modifier | modifier le code]