De meilleures tours de Hanoï séparées
Étonnamment, notre solution pour séparer les tours génère beaucoup plus de
mouvements que notre solution pour les interclasser. Comme les deux
problèmes sont symétriques, cela ne devrait pas être le cas.
Nombre de disques | Interclassement | Séparation |
5 paires | 62 mouvements | 88 mouvements |
6 paires | 126 mouvements | 183 mouvements |
7 paires | 254 mouvements | 374 mouvements |
Pouvez-vous rendre la séparation des tours aussi efficace que
l'interclassement ?
La différence vient du fait que notre décomposition du problème n'est pas la
bonne. Contents d'avoir trouvé une solution fonctionnelle, nous n'avons pas
cherché à l'améliorer. Préserver l'ordre des disques interclassés à chaque
déplacement est inutile. En fait, on peut même éviter de déplacer la tour
interclassée et simplement séparer les paires de disques en tours colorées
au fur et à mesure qu'ils sont retirés de la tour interclassée.
Si quelqu'un pouvait séparer les (n-1) paires de disques auparavent,
sauriez-vous séparer la paire restante ?
- Séparez tout d'abord les (n-1) premières paires de disques de la tour
interclassée en une tour blanche et une tour noire (grâce à un appel
récursif de votre fonction principale).
- Déplacez ensuite le grand disque blanc à la position où il doit finir.
- Déplacez ensuite les (n-1) disques blancs plus petits sur le grand disque
blanc.
- Déplacez ensuite le grand disque noir jusqu'à sa destination.
- Déplacez enfin les petits disques noirs en position.