2.
Las torres de Hanói son un juego matemático nacido de la
leyenda de los sacerdotes a quienes se les dieron tres polos y
una pila de 64 discos de oro, cada disco un poco más pequeño
que el de debajo. Su misión era transferir los 64 discos de uno
de los tres polos a otro, con las limitaciones de que solo podían
mover un disco a la vez, y nunca podían colocar un disco más
grande encima de uno más pequeño. Este juego es
generalmente resuelto mediante algoritmos que emplean
métodos recursivos, es decir , aplicando en método Divide y
Vencerás, dividiendo el problemas en sub-problemas mas
pequeños.
Introducción
3.
Las torres de Hanói son un juego matemático con el que todo
científico computacional tiene que lidiar algunas vez. La idea
en realidad es bastante sencilla consiste en tres varillas
verticales que representan a las torres y un numero
indeterminado de discos, mientras mas disco mas complicado
resulta encontrar la solución al juego, para resolver el juego solo
se debe de transportar los discos de la primera torre a la torre 3,
pero no se puede colocar un disco mas grande sobre uno mas
pequeño.
Link al Juego:
c
Torres de Hanói
4.
El rompecabezas de la Torre de Hanói fue inventado por el
matemático francés Edouard Lucas en 1883. Fue inspirado por
una leyenda que cuenta de un templo hindú donde el
rompecabezas fue presentado a los jóvenes sacerdotes. Al
principio del tiempo, a los sacerdotes se les dieron tres polos y
una pila de 64 discos de oro, cada disco un poco más pequeño
que el de debajo. Su misión era transferir los 64 discos de uno
de los tres polos a otro, con dos limitaciones importantes. Sólo
podían mover un disco a la vez, y nunca podían colocar un
disco más grande encima de uno más pequeño. Los sacerdotes
trabajaban muy eficientemente, día y noche, moviendo un disco
cada segundo. Cuando terminaron su trabajo, dijo la leyenda, el
templo se derrumbaría en polvo y el mundo se desvanecería.
Origen
5.
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.
Reglas del Juego
6.
La fórmula para encontrar el número de movimientos
necesarios para transferir n discos del poste A al poste C es: 2^n
– 1, donde n representa el numero de discos.
A partir de esta fórmula puede verse que si a los sacerdotes les
tomaba tan sólo un segundo hacer un movimiento, en total
gastarían 2^64 - 1 segundos, es decir, 590,000,000,000 años.
Formula
7.
La técnica divide y vencerás es bastante simple de hecho, ya
que como su nombre lo dice consiste en dividir un problema en
un conjunto de sub-problemas mas pequeños, y una ves
resueltos estos sub-problemas se combinan las soluciones. Los
algoritmos del método divide y vencerás están naturalmente
implementados, como procesos recursivos. En ese caso, los sub-
problemas parciales encabezados por aquel que ya ha sido
resuelto se almacenan en la pila de llamadas de
procedimientos. Este modelo algorítmico es una herramienta
potente para solucionar problemas complejos, tales como el
clásico juego de las torres de Hanói.
Método Divide y Vencerás
8.
public static void Hanoi(int n, int origen, int auxiliar, int
destino){
if(n==1)
System.out.println("mover disco de " + origen + " a " +
destino);
else{
Hanoi(n-1, origen, destino, auxiliar);
System.out.println("mover disco de "+ origen + " a " +
destino);
Hanoi(n-1, auxiliar, origen, destino);
}
}
}
Algoritmo Recursivo para
torres de Hanói en Java
9.
public class Hanoi {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n;
System.out.println("Numero de discos: ");
n = sc.nextInt();
Hanoi(n,1,2,3);
}
Ejecución del método Hanoi
10.
Es importante a la hora de enfrentarse con una problemática,
detenerse por un segundo y meditar la manera de hallar una
solución, muchas veces es buena idea dividir el problema al
que se esta enfrentando en pequeñas partes del mismo, y una
vez que todos las pequeños fragmentos estén resueltos, unir
todas las piezas para así hallar la solución general al problema.
Las torres de Hanói son un gran ejemplo de esto, y es que
imaginemos lo complicado que seria resolver este juego si se
intentara mover disco por disco, es decir , sin la aplicación de
métodos recursivos
Conclusión