2. • Historia de los Juegos Matemáticos (II) - Torres de
Hanoi
El enigma de las Torres de Hanoi trata de un juego
oriental muy antiguo, sin embargo fue presentado, a nivel
mundial, en 1883 por el matemático francés Edouard
Lucas, bajo el seudónimo de N. Lucas de Siam.
3. • Notación
• Los discos se numerarán de 1 a 8 (o a n, en general),
empezando por el más pequeño. Los postes (que se
supondrán alineados de izquierda a derecha) serán
marcados con letras mayúsculas (A, B y C). El inicial
será A y el objetivo C.
•
4. • Un algoritmo recursivo
• La Torre de Hanoi suele aparecer como ejemplo para ilustrar
el concepto de recursión en los cursos de programación de
computadoras, ya que existe un algoritmo recursivo
sorprendentemente simple que lo resuelve (por si alguien no
lo sabe, un algoritmo es recursivo si se llama a sí mismo en
alguno de sus pasos). Supongamos que queremos trasladar
los ocho discos del poste A al poste C. Como el disco 8
siempre está abajo del todo, la única forma de hacerlo es
trasladar primero la torre de siete discos 1...7 al poste B.
Entonces podremos llevar el disco 8 de A a C, y para terminar
tendremos que trasladar de nuevo la torre 1...7, ahora de B a
C.
•
5. • Los movimientos de cada disco
• Analizando otra vez el algoritmo recursivo y el
razonamiento que nos llevó a él podemos comprobar
que (centrándonos en el caso de 8 discos) el disco 8 se
mueve una sola vez, el 7 dos veces, el 6 cuatro veces,
etc. El disco 1 se mueve 128 veces. La suma de estas
potencias de 2 coincide con el total de movimientos
antes calculado (1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 =
255). En general, el disco k se mueve 2n−k veces, y 20 +
21 + ... + 2n−1 = 2n−1.
• Vamos ahora a fijarnos en los momentos concretos en
que se mueve cada disco. Para empezar trataremos el
caso de cinco discos que en esta ocasión pintaremos
con cinco tonos de azul.
6. • Solución Algorítmica
Una forma de resolver la colocación de la torre es
fundamentándose en el disco más pequeño, en este caso
el de hasta arriba. El movimiento inicial de este es hacia la
varilla auxiliar. El disco número dos por regla, se debe
mover a la varilla número tres. Luego; el disco uno se
mueve a la varilla tres para que quede sobre el disco dos.
A continuación se mueve el disco que sigue de la varilla
uno, en este caso el disco número tres, y se coloca en la
varilla dos. Finalmente el disco número uno regresa de la
varilla tres a la uno (sin pasar por la dos) y así
sucesivamente. Es decir, el truco está en el disco más
pequeño
7. Divide y vencerás. Ejemplo
• El juego de las torres de Hanoi es un juego oriental muy
antiguo que hoy se conoce en todo el mundo.
• Consta de tres columnas y una serie de discos de distintos
tamaños. Los discos están acomodados de mayor a menor en
una de las columnas.
• El juego consiste en pasar todos los discos a otra de las
columnas y dejarlos como estaban: de mayor a menor.
Las reglas del juego son las siguientes:
• Sólo se puede mover un disco cada vez.
• Para cambiar los discos de lugar se pueden usar las tres
columnas.
• Nunca deberá quedar un disco grande sobre un disco
pequeño.
8. • n El problema de las torres de Hanoi se puede resolver
• de forma muy sencilla con un enfoque divide y
• vencerás.
• n El problema consiste en desplazar n discos de la
• columna i de inicio a la columna f de fin utilizando la
• columna t como un “almacenamiento” temporal.
• n El problema menor consiste en mover n-1 discos de i
• a t utilizando f como soporte temporal.
• n De esta forma es posible mover un disco (el que
• queda) desde i hasta f y, después, mover los n-1
• discos de t a f.
9. • acción Hanoi (n E entero, i,f,t E soporte)
• inicio
• si n=1 entonces
• mover un disco de i a f
• si no
• llamar Hanoi (n-1,i,t,f)
• mover un disco de i a f
• llamar Hanoi (n-1,t,f,i)
• fin si
• fin