El documento describe el rompecabezas matemático de Las Torres de Hanói, el cual consiste en mover discos de diferentes tamaños entre tres barras siguiendo reglas de movimiento. Se explica que el método "divide y vencerás" puede aplicarse a este rompecabezas al dividir el problema en movimientos de discos individuales, resolviendo cada parte y combinando las soluciones para completar el objetivo final. También se discute cómo este método puede implementarse de forma recursiva y cómo afecta la división del problema a la eficiencia del algoritmo.
2. Las Torres de Hanói son un rompecabezas o juego
matemático inventado en 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 unas 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.
3. Las Torres de Hanói no son solo un juego,. Su
funcionalidad y propósito es proporcionar herramientas para
resolver problemas.
Ha sido el eje de muchos métodos creados a partir de allí,
pero siempre con el mismo resultado, como es el caso del
método divide y vencerás para lo cual hay que separar el
problema original en cuantas partes se pueda a fin de
buscarles solución a cada uno, luego al unir todas las
soluciones encontradas podremos resolver el problema por
el que se llego hasta aquí.
4. Se cuenta que 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 cual existían tres agujas de diamante.
En una mañana lluviosa, un rey mandó a poner 64 discos de oro,
siendo ordenados por tamaño: el mayor en la base de la bandeja y
el menor arriba de todos los discos. Tras la 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 un disco de mayor diámetro encima de otro de menor
diámetro". Hoy no existe tal templo, pero el juego aún perduró en
el tiempo...
5. En su forma más tradicional, consiste en tres barras verticales. En una de las
barras se coloca un número indefinido de discos que determinará la
complejidad de la solución, por regla general se consideran ocho discos. Los
discos se apilan sobre una barra en tamaño decreciente. No hay dos discos
iguales, y todos ellos están apilados de mayor a menor radio en una de las
barras, quedando las otras dos barras libres.
El juego consiste en pasar todos los discos de la barra ocupada a una de las
otras barras libres. Para realizar este objetivo, es necesario seguir tres
simples reglas:
1. Sólo se puede mover un disco cada vez.
2. Un disco de mayor tamaño no puede descansar sobre uno más pequeño
que él mismo.
3. Sólo puedes trasladar el disco que se encuentre arriba en cada barra.
6. 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 barra
auxiliar. El disco número dos por regla, se debe mover a la
barra 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 barra uno, en este caso el disco número
tres, y se coloca en la barra dos. Finalmente el disco número
uno regresa de la barra 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. Este método hace referencia tomar un problema a resolver y
dividirlo en sus partes mas pequeñas es decir repararlo e ir
solucionando por parte así el problema principal se resolverá
con la mejor solución encontrada en sus anteriores soluciones
divididas.
En la programación funciona tomando el algoritmo y
dividiéndolo en subprogramas hasta hacerlo mas sencillo y
simple posible a fin de solucionar cada uno por separado y al
combinar todas las soluciones se consigue la solución final del
problema original.
8. Los algoritmos de “divide y vencerás” están naturalmente implementados, como
procesos recursivos. En ese caso, los subproblemas parciales encabezados por
aquel que ya ha sido resuelto se almacenan en la pila de llamadas de
procedimiento. Normalmente, esta técnica proporciona una forma natural de
diseñar algoritmos eficientes. Por ejemplo, si el trabajo de dividir el problema y de
combinar las soluciones parciales es proporcional al tamaño del problema (n);
además, hay un número limitado p de subproblemas de tamaño aproximadamente
igual a n/p en cada etapa; y por último, los casos base requieren un tiempo
constante (O(1)); entonces el algoritmo divide y vencerás tiene por cota superior
asintótica a O(nlogn).
9. Esta cota es la que tienen los algoritmos divide y vencerás que solucionan problemas
tales como ordenar y la transformada discreta de Fourier. Ambos procedimientos
reducen su complejidad, anteriormente definida por O(n2). Para terminar, cabe destacar
que existen otros enfoques y métodos que mejoran estas cotas.
Al efectuar un análisis de la eficiencia de este método, se encuentra que la decisión de
cómo se divida el problema afecta el 'orden' O de la implementación.
10. Mi opinión particular referente a este excelente tema, es
que este método o juego nos muestra una manera eficaz
de resolver los problemas, como seres humanos a veces
nos encerramos solo en el problema sin buscar alternativas
o mirarlo desde otro enfoque. Utilizando este método esta
comprobado que no solo se vuelve eficaz a la hora de
resolver algoritmos o procesos matemáticos si no en lo
cotidiano es de mucha utilidad enseñándonos a pensar
mas allá.