Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Torres de Hanói: Juego matemático de movimiento de discos
1. Las Torres de Hanói
República Bolivariana de Venezuela
Instituto Universitario Politécnico “Santiago Mariño”
Extensión Maturín
Escuela de Sistemas
Bachiller:
Eduardo Pastrano
C.I; 25.978.290
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.
Las Torres de Hanói es un rompecabezas o juego matemático inventado en 1883
por el matemático francés Édouard Lucas. Este juego de mesa solitario se trata de
un juego con un número de discos de radio creciente que se apilan insertándose
en una de las tres estacas de un tablero.
3. Torres de Hanói
El juego matemático de las Torres de Hanói consiste en un dispositivo que consta
de tres varillas verticales A, B y C y un número variable de discos. Los n discos
son todos de diferente tamaño y, en la posición de partida del juego, todos los
discos están colocados en la varilla A ordenados de mayor a menor tamaño, esto
es, el mayor en el lugar más bajo y el menor arriba. En el mundo de la
informática se emplea como el ejemplo de recursividad por excelencia.
4. Historia
La torre de Hanói fue inventado por el matemático francés Edouard Lucas, en
1883. El se inspiro por un leyenda que cuenta sobre un templo hindú donde un
rompecabezas de una pirámide pudo haber sido usada como disciplina mental de
los jóvenes sacerdotes. La leyenda cuenta que en el principio de los tiempos los
sacerdotes en el templo fueron dados una pila de 64 discos de oro, uno mas
pequeño que el que el de abajo. Su tarea era mover los 64 discos de uno de los
tres pilares a otro, mientras que un disco grande nunca podría ser colocado por
encima de uno mas pequeño. La leyenda dice que cuando los sacerdotes
terminaran su trabajo, el templo se convertiría en polvo y el mundo se acabaría.
5. ¿Cómo se juega?
Del número de discos depende la complejidad de la solución. El juego consiste en
lo siguiente: Comenzando en la posición de partida. Trasladar todos los discos a
la varilla B, pero colocados también de mayor a menor, en el mismo orden en el
que estaban colocados en la varilla A. Para el traslado de discos podemos utilizar
la varilla C, pero se debe cumplir siempre la condición de que sólo se puede
mover un disco cada vez y que en ningún caso y en ningún paso se podrá colocar
un disco mayor sobre otro de menor radio que él.
6. Algoritmo Divide y Vencerás
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 subproblemas 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 subproblemas se combinan para dar una solución al problema original. El nombre
divide y vencerás también se aplica a veces a algoritmos que reducen cada problema a
un único subproblema, 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”.
7. Diseño e implementación
La resolución de un problema mediante esta técnica consta fundamentalmente
de los siguientes pasos:
1. En primer lugar ha de plantearse el problema de forma que pueda ser
descompuesto en k subproblemas del mismo tipo, pero de menor tamaño. Es
decir, si el tamaño de la entrada es n, hemos de conseguir dividir el problema en
k subproblemas (donde 1 ≤ k ≤ n), cada uno con una entrada de tamaño nk y
donde 0 ≤ nk < n. A esta tarea se le conoce como división.
2. En segundo lugar han de resolverse independientemente todos los
subproblemas, bien directamente si son elementales o bien de forma recursiva.
El hecho de que el tamaño de los subproblemas sea estrictamente menor que el
tamaño original del problema nos garantiza la convergencia hacia los casos
elementales, también denominados casos base.
3. Por último, combinar las soluciones obtenidas en el paso anterior para
construir la solución del problema original.
8. Diseño e Implementación
Los algoritmos divide y vencerás (o divide and conquer, en inglés), se diseñan como
procedimientos generalmente recursivos.
AlgoritmoDyV (p: TipoProblema): TipoSolucion
if esCasoBase(p)
return resuelve(p)
else
subproblemas: array of TipoProblema
subproblemas = divideEnSubproblemas(p)
soluciones_parciales: array of TipoSolucion
for each sp in subproblemas
soluciones_parciales.push_back(AlgoritmoDYV(sp))
endFor
return mezcla(soluciones_parciales)
endIf
finAlgoritmoDyV
10. Conclusión
Las torres de Hanói es un juego de lógica que ayuda a implementar la capacidad
de desarrollo de problemas complejos, sin duda un juego divertido que te pone a
pensar lo suficiente para distraerte. Un juego sencillo a la vista pero muy
complejo a la hora de jugarlo, donde se ven involucrada fuertemente la
matemática.