El documento describe el juego de las torres de Hanoi, que se usa comúnmente para explicar el método divide y vencerás de diseño de algoritmos. El objetivo del juego es transferir una pila de discos de una varilla a otra siguiendo tres reglas: mover solo un disco a la vez, no poner un disco más grande sobre uno más pequeño, y solo mover el disco superior de cada varilla. El documento explica la solución recursiva al problema y cómo depende de potencias de 2.
2. Introducción.
En la cultura popular, divide y vencerás hace referencia a un refrán que implica resolver un
problema difícil, dividiéndolo en partes más simples tantas veces como sea necesario, hasta que la
resolución de las partes se torna obvia. La solución del problema principal se construye con las
soluciones encontradas. En las ciencias de la computación, el término divide y vencerás (DYV) hace
referencia a uno de los más importantes paradigmas de diseño algorítmico. El método está basado en
la resolución recursiva de un problema dividiéndolo en dos o más sub-problemas de igual tipo o
similar. El proceso continúa hasta que éstos llegan a ser lo suficientemente sencillos como para que se
resuelvan directamente. Al final, las soluciones a cada uno de los sub-problemas se combinan para dar
una solución al problema original.
Esta técnica es la base de los algoritmos eficientes para casi cualquier tipo de problema como,
por ejemplo, algoritmos de ordenamiento (quicksort, mergesort, entre muchos otros), multiplicar
números grandes (Karatsuba),análisis sintácticos (análisis sintáctico top-down) y la transformada
discreta de Fourier.
Por otra parte, analizar y diseñar algoritmos de D y V son tareas que lleva tiempo dominar. Al
igual que en la inducción, a veces es necesario sustituir el problema original por uno más complejo
para conseguir realizar la recursión, y no hay un método sistemático de generalización.
El nombre divide y vencerás también se aplica a veces a algoritmos que reducen cada
problema a un único sub- problema, como la búsqueda binaria para encontrar un elemento en una
lista ordenada (o su equivalente en computación numérica, el algoritmo de bisección para búsqueda
de raíces). Estos algoritmos pueden ser implementados más eficientemente que los algoritmos
generales de “divide y vencerás”; en particular, si es usando una serie de recursiones que lo convierten
en simples bucles. Bajo esta amplia definición, sin embargo, cada algoritmo que usa recursión o
bucles puede ser tomado como un algoritmo de “divide y vencerás”. El nombre de crementa y
vencerás ha sido propuesta para la subclase simple de problemas.
3. Es un juego matemático que fue inventado 1883 por
el matemático francés Édouard Lucas. Este solitario se trata de un juego de ocho discos de
radio creciente que se apilan insertándose en una de las tres estacas de un tablero. El
objetivo del juego es crear la pila en otra de las estacas siguiendo ciertas reglas.
El problema es muy conocido en la ciencia de la computación y aparece en
muchos libros de texto como introducción a la teoría de algoritmos.
El juego, en su forma más tradicional, consiste en tres varillas verticales. En una
de las varillas se apila un número indeterminado de discos (elaborados de madera) que
determinará la complejidad de la solución, por regla general se consideran ocho discos.
Los discos se apilan sobre una varilla en tamaño decreciente. No hay dos discos iguales, y
todos ellos están apilados de mayor a menor radio en una de las varillas, quedando las
otras dos varillas vacantes. El juego consiste en pasar todos los discos de la varilla ocupada
(es decir la que posee la torre) a una de las otras varillas vacantes. Para realizar este
objetivo, es necesario seguir tres simples reglas:
Sólo se puede mover un disco cada vez.
Un disco de mayor tamaño no puede descansar sobre uno más pequeño que él mismo.
Sólo puedes desplazar el disco que se encuentre arriba en cada varilla.
4. Se cuenta que en un templo de Benarés (Uttar
Pradesh, India) se encontraba una cúpula que señalaba el
centro del mundo. Allí estaba una bandeja sobre la que
existían tres agujas de diamante. En una mañana lluviosa,
un rey mandó a poner 64 discos de oro ordenados por
tamaño: el mayor, en la base de la bandeja, y el menor,
arriba de todos los discos. Tras su colocación, los sacerdotes
del templo intentaron mover los discos entre las agujas,
según las leyes que se les habían entregado: «El sacerdote
de turno no debe mover más de un disco a la vez, y no
puede situar ningún disco encima de otro de menor
diámetro». Hoy no existe tal templo, pero el juego aún
perdura en el tiempo.
5. OBJETIVO
El juego consiste en pasar todos los discos a la tercera varilla colocados de mayor a menor
ascendentemente.
Descubrir la explicación matemática para todos los aspectos posibles del juego, y las
relaciones entre ellas:
- número de movimientos totales
- número de movimientos de cada pieza
- secuencia de piezas que se mueven
- apariencia de las torres en un movimiento dado
- número de "tiempos" que espera cada pieza entre cada uno de sus movimientos (es
constante)
Demostrar que el juego se basa en potencias de 2.
LAS REGLAS
Sólo se puede mover un disco cada vez.
Un disco de mayor tamaño no puede descansar sobre uno más pequeño que él mismo.
Sólo puedes desplazar el disco que se encuentre arriba en cada varilla.
6. Este problema se suele plantear a menudo en programación, especialmente para
explicar la recursividad. Si numeramos los discos desde 1 hasta n, si llamamos origen a la
primera pila de discos, destino a la tercera y auxiliar a la intermedia, y si a la función la
denomináramos hanoi, con origen, auxiliar y destino como parámetros, el algoritmo de la
función sería el siguiente:
Entrada: Tres pilas de números origen, auxiliar, destino, con la pila origen ordenada
Salida: La pila destino
1-si origen entonces
1-mover el disco 1 de pila origen a la pila destino (insertarlo arriba de la pila destino)
2-terminar
2-si no
1-hanoi({1,….,n-1}origen, destino, auxiliar) //mover todas las fichas menos la más grande (n)
a la varilla auxiliar
3-mover disco n a destino //mover la ficha grande hasta la varilla final
4-hanoi (auxiliar, origen, destino) //mover todas las fichas restantes, 1...n–1, encima de
la ficha grande (n)
5-terminar
8. Esta documentación nos permitió aprender sobre
el juego de las torres de hanoi y el método de divide y
vencerás, sabiendo que el primero es uno de los juegos
de lógica y estrategia matemática mas usados en la
historia y efectivos al momento de agilizar nuestra
mente, esto también nos enseña que todo problema
tiene solución por difícil que sea, solo tenemos que
buscar la manera de resolverlo.
Me gustaría cerrar con un dicho que me gusta
mucho que dice: Si un problema tiene solución, para
que te preocupas y Si un problema NO tiene solución,
para que te preocupas.