SlideShare una empresa de Scribd logo
Torres de Hanoi
LAS TORRES DE HANOI
El clásico problema de las torres de Hanoi
fue dado a conocer en 1883 por el
matemático francés Eduard Lucas.
-Consiste en tres columnas verticales y un número
indeterminado de discos, que determinarán la
complejidad de la solución, al ser mayor la
cantidad de estos.
-No hay dos discos iguales, ya que son de tamaños
ascendentes ubicados de mayor a menor en la
primera columna
-No se puede colocar ningún disco de mayor
tamaño sobre un disco menor a él en ningún
momento.
-El fin del juego consiste en traspasar todos los
discos desde la primera columna hacia la tercera
ubicándolos de mayor a menor ascendentemente,
de igual forma que estaban ubicados al comienzo
del juego.
Las torres de Hanoi tienen 3 reglas principales:
1. Sólo se puede mover un disco a la vez.
2. Un disco de mayor tamaño no puede posarse sobre uno más pequeño que él mismo.
3.Sólo puedes desplazar el disco que se encuentre en la parte superior de cada columna.
Eficacia: Posee una eficacia alta, ya que cumple con el ordenamiento o traspaso de la columna
origen a la destino, en un juego perfecto, que tiene fin.
Rendimiento: Bueno, ya que el código del algoritmo, no utiliza mucha memoria, puesto que los
paso con los que funcionan son obligatorios.
Utilidad: Juego intelectual o de rompecabezas, que es usado además como un juego que ayude
al desarrollo de la inteligencia en niños (Educacional).
Complejidad: (Recursivo).
Al ser jugado realmente su complejidad varia en un número indeterminado de discos, que
determinarán la complejidad de la solución, al ser mayor la cantidad de estos.
La complejidad del codigo es mas elevada , ya que para que quede correctamente se necesitan
una serie de funciones que se llamen a si mismas para que el programa entregue el resultado
correcto.
Comprueba que para mover n discos son necesarios
2n-1 movimientos.
Algoritmo Recursivo.
Hanoi (dim N , columna A, columna B , columna C)
// N, origen, destino , auxiliar
Si N == 1
Imprimir : Pasar disco de A a B
else
Hanoi(N-1 , A , C, B)
Imprimir : Pasar disco de A a B
Hanoi(N-1 , C , B , A)
Iterativa
Otra manera de resolver el problema, sin utilizar la recursividad, se basa en el hecho de
que para obtener la solución más corta, es necesario mover el disco más pequeño en
todos los pasos impares, mientras que en los pasos pares sólo existe un movimiento
posible que no lo incluye. El problema se reduce a decidir en cada paso impar a cuál de
las dos pilas posibles se desplazará el disco pequeño:
El algoritmo en cuestión depende del número de discos del problema.
Si inicialmente se tiene un número impar de discos, el primer movimiento debe ser
colocar el disco más pequeño en la pila destino, y en cada paso impar se le mueve a la
siguiente pila a su izquierda (o a la pila destino, si está en la pila origen).
La secuencia será DESTINO, AUXILIAR, ORIGEN, DESTINO, AUXILIAR, ORIGEN,
etc.
Si se tiene inicialmente un número par de discos, el primer movimiento debe ser colocar
el disco más pequeño en la pila auxiliar, y en cada paso impar se le mueve a la siguiente
pila a su derecha (o a la pila origen, si está en la pila destino).
La secuencia será AUXILIAR, DESTINO, ORIGEN, AUXILIAR, DESTINO, ORIGEN,
Algoritmo Iterativo
public Hanoi(int numdiscos)
{
this.numdiscos= numdiscos;
agujas= new int[3][numdiscos];
cimaAguja= new int[3];
nummovimientos= 0;
for (int nivel= 0; nivel < numdiscos; nivel++)
{
int disco= numdiscos - nivel;
agujas[ORIGEN][nivel]= disco;
agujas[TRABAJO][nivel]= 0;
agujas[DESTINO][nivel]= 0;
}
cimaAguja[ORIGEN]= numdiscos - 1;
cimaAguja[TRABAJO]= -1;
cimaAguja[DESTINO]= -1;
}
Código Recursivo Código Iterativo
-(2^n)-1
-Es mas lento
-El mas pequeño solo busca el
lugar donde pueda ubicarse
-Se mueve a la posición
habilitada
-(2^n)-1
-Es mas Rápido
-Es necesario mover el disco
más pequeño en todos los
pasos impares
-Cuando es par, se mueve a la
derecha y cuando es impar se
mueve a la izquierda
EJEMPLO: Con 5 discos harán falta 25-1=31 movimientos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Total: 31 movimientos

Más contenido relacionado

Similar a Torres de hanoi

Torres de hanoi
Torres de hanoiTorres de hanoi
Torres de hanoi
niurbelys
 
Torresdehanoi javierguzman
Torresdehanoi javierguzmanTorresdehanoi javierguzman
Torresdehanoi javierguzman
javier guzman
 
Manual Torres De Hanoi
Manual Torres De HanoiManual Torres De Hanoi
Manual Torres De Hanoi
José Guillermo Rodríguez Alarcón
 
Torres de hanói
Torres de hanóiTorres de hanói
Torres de hanói
Joseanny Bolívar
 
Torres de hanoi
Torres de hanoiTorres de hanoi
Torres de hanoi
Jace2504
 
Torres haoi daniel maximiliano vera
Torres haoi daniel maximiliano veraTorres haoi daniel maximiliano vera
Torres haoi daniel maximiliano vera
Daniel Maximiliano Vera
 
Torres de hanoi upsm
Torres de hanoi upsmTorres de hanoi upsm
Torres de hanoi
Torres de hanoiTorres de hanoi
Torres de hanoi
Naniix Naniiz
 
Las torres de hanói
Las torres de hanóiLas torres de hanói
Las torres de hanói
aleb11
 
Presentación torres de hanoi
Presentación torres de hanoiPresentación torres de hanoi
Presentación torres de hanoijorgecordova1685
 
Diapositiva torre hanoi german carluccio
Diapositiva torre hanoi german carluccioDiapositiva torre hanoi german carluccio
Diapositiva torre hanoi german carluccioGerman A Carluccio M
 
Las Torres de Hanoi
Las Torres de HanoiLas Torres de Hanoi
Las Torres de Hanoi
Luis Reyes
 
Torre de hanoi
Torre de hanoiTorre de hanoi
Torre de hanoi
Daniel Chacon
 
Las torres de Hanoi
Las torres de HanoiLas torres de Hanoi
Las torres de Hanoi
hermilo febres
 
Torres de hanoi
Torres de hanoiTorres de hanoi
Torres de hanoiAlex Pin
 
Tarea 1
Tarea 1Tarea 1
Tarea 1
Ana Laura Cj
 
Torres de Hanoi - Metodo Divide y Venceras - Presentacion - Yolfred Uzcategui
Torres de Hanoi - Metodo Divide y Venceras - Presentacion - Yolfred UzcateguiTorres de Hanoi - Metodo Divide y Venceras - Presentacion - Yolfred Uzcategui
Torres de Hanoi - Metodo Divide y Venceras - Presentacion - Yolfred Uzcategui
Yolfred Uzcategui
 

Similar a Torres de hanoi (20)

Torres de hanoi
Torres de hanoiTorres de hanoi
Torres de hanoi
 
Torresdehanoi javierguzman
Torresdehanoi javierguzmanTorresdehanoi javierguzman
Torresdehanoi javierguzman
 
Manual Torres De Hanoi
Manual Torres De HanoiManual Torres De Hanoi
Manual Torres De Hanoi
 
Torres de hanói
Torres de hanóiTorres de hanói
Torres de hanói
 
Torres de hanoi
Torres de hanoiTorres de hanoi
Torres de hanoi
 
Torres haoi daniel maximiliano vera
Torres haoi daniel maximiliano veraTorres haoi daniel maximiliano vera
Torres haoi daniel maximiliano vera
 
Torres de hanoi upsm
Torres de hanoi upsmTorres de hanoi upsm
Torres de hanoi upsm
 
Torres de hanoi
Torres de hanoiTorres de hanoi
Torres de hanoi
 
Las torres de hanoi
Las torres de hanoiLas torres de hanoi
Las torres de hanoi
 
Torres de hanoi
Torres de hanoiTorres de hanoi
Torres de hanoi
 
Torres de hanoi
Torres de hanoiTorres de hanoi
Torres de hanoi
 
Las torres de hanói
Las torres de hanóiLas torres de hanói
Las torres de hanói
 
Presentación torres de hanoi
Presentación torres de hanoiPresentación torres de hanoi
Presentación torres de hanoi
 
Diapositiva torre hanoi german carluccio
Diapositiva torre hanoi german carluccioDiapositiva torre hanoi german carluccio
Diapositiva torre hanoi german carluccio
 
Las Torres de Hanoi
Las Torres de HanoiLas Torres de Hanoi
Las Torres de Hanoi
 
Torre de hanoi
Torre de hanoiTorre de hanoi
Torre de hanoi
 
Las torres de Hanoi
Las torres de HanoiLas torres de Hanoi
Las torres de Hanoi
 
Torres de hanoi
Torres de hanoiTorres de hanoi
Torres de hanoi
 
Tarea 1
Tarea 1Tarea 1
Tarea 1
 
Torres de Hanoi - Metodo Divide y Venceras - Presentacion - Yolfred Uzcategui
Torres de Hanoi - Metodo Divide y Venceras - Presentacion - Yolfred UzcateguiTorres de Hanoi - Metodo Divide y Venceras - Presentacion - Yolfred Uzcategui
Torres de Hanoi - Metodo Divide y Venceras - Presentacion - Yolfred Uzcategui
 

Torres de hanoi

  • 2. LAS TORRES DE HANOI El clásico problema de las torres de Hanoi fue dado a conocer en 1883 por el matemático francés Eduard Lucas.
  • 3. -Consiste en tres columnas verticales y un número indeterminado de discos, que determinarán la complejidad de la solución, al ser mayor la cantidad de estos. -No hay dos discos iguales, ya que son de tamaños ascendentes ubicados de mayor a menor en la primera columna -No se puede colocar ningún disco de mayor tamaño sobre un disco menor a él en ningún momento. -El fin del juego consiste en traspasar todos los discos desde la primera columna hacia la tercera ubicándolos de mayor a menor ascendentemente, de igual forma que estaban ubicados al comienzo del juego.
  • 4. Las torres de Hanoi tienen 3 reglas principales: 1. Sólo se puede mover un disco a la vez. 2. Un disco de mayor tamaño no puede posarse sobre uno más pequeño que él mismo. 3.Sólo puedes desplazar el disco que se encuentre en la parte superior de cada columna. Eficacia: Posee una eficacia alta, ya que cumple con el ordenamiento o traspaso de la columna origen a la destino, en un juego perfecto, que tiene fin. Rendimiento: Bueno, ya que el código del algoritmo, no utiliza mucha memoria, puesto que los paso con los que funcionan son obligatorios. Utilidad: Juego intelectual o de rompecabezas, que es usado además como un juego que ayude al desarrollo de la inteligencia en niños (Educacional). Complejidad: (Recursivo). Al ser jugado realmente su complejidad varia en un número indeterminado de discos, que determinarán la complejidad de la solución, al ser mayor la cantidad de estos. La complejidad del codigo es mas elevada , ya que para que quede correctamente se necesitan una serie de funciones que se llamen a si mismas para que el programa entregue el resultado correcto. Comprueba que para mover n discos son necesarios 2n-1 movimientos.
  • 5. Algoritmo Recursivo. Hanoi (dim N , columna A, columna B , columna C) // N, origen, destino , auxiliar Si N == 1 Imprimir : Pasar disco de A a B else Hanoi(N-1 , A , C, B) Imprimir : Pasar disco de A a B Hanoi(N-1 , C , B , A)
  • 6. Iterativa Otra manera de resolver el problema, sin utilizar la recursividad, se basa en el hecho de que para obtener la solución más corta, es necesario mover el disco más pequeño en todos los pasos impares, mientras que en los pasos pares sólo existe un movimiento posible que no lo incluye. El problema se reduce a decidir en cada paso impar a cuál de las dos pilas posibles se desplazará el disco pequeño: El algoritmo en cuestión depende del número de discos del problema. Si inicialmente se tiene un número impar de discos, el primer movimiento debe ser colocar el disco más pequeño en la pila destino, y en cada paso impar se le mueve a la siguiente pila a su izquierda (o a la pila destino, si está en la pila origen). La secuencia será DESTINO, AUXILIAR, ORIGEN, DESTINO, AUXILIAR, ORIGEN, etc. Si se tiene inicialmente un número par de discos, el primer movimiento debe ser colocar el disco más pequeño en la pila auxiliar, y en cada paso impar se le mueve a la siguiente pila a su derecha (o a la pila origen, si está en la pila destino). La secuencia será AUXILIAR, DESTINO, ORIGEN, AUXILIAR, DESTINO, ORIGEN,
  • 7. Algoritmo Iterativo public Hanoi(int numdiscos) { this.numdiscos= numdiscos; agujas= new int[3][numdiscos]; cimaAguja= new int[3]; nummovimientos= 0; for (int nivel= 0; nivel < numdiscos; nivel++) { int disco= numdiscos - nivel; agujas[ORIGEN][nivel]= disco; agujas[TRABAJO][nivel]= 0; agujas[DESTINO][nivel]= 0; } cimaAguja[ORIGEN]= numdiscos - 1; cimaAguja[TRABAJO]= -1; cimaAguja[DESTINO]= -1; }
  • 8. Código Recursivo Código Iterativo -(2^n)-1 -Es mas lento -El mas pequeño solo busca el lugar donde pueda ubicarse -Se mueve a la posición habilitada -(2^n)-1 -Es mas Rápido -Es necesario mover el disco más pequeño en todos los pasos impares -Cuando es par, se mueve a la derecha y cuando es impar se mueve a la izquierda
  • 9. EJEMPLO: Con 5 discos harán falta 25-1=31 movimientos.
  • 10. 1
  • 11. 2
  • 12. 3
  • 13. 4
  • 14. 5
  • 15. 6
  • 16. 7
  • 17. 8
  • 18. 9
  • 19. 10
  • 20. 11
  • 21. 12
  • 22. 13
  • 23. 14
  • 24. 15
  • 25. 16
  • 26. 17
  • 27. 18
  • 28. 19
  • 29. 20
  • 30. 21
  • 31. 22
  • 32. 23
  • 33. 24
  • 34. 25
  • 35. 26
  • 36. 27
  • 37. 28
  • 38. 29
  • 39. 30