Las torres de hanoi
Click here to load reader
-
Upload
fidel-rivero -
Category
Technology
-
view
175 -
download
2
description
Transcript of Las torres de hanoi
Realizado por:
Fidel Rivero 15.933.084
Maturín, noviembre de 2013.
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.
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í.
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...
Eln 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.
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.
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.
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).
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.
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á.