Está en la página 1de 2

Torres de Hanói

El juego, consiste en tres postes verticales. En uno de los postes se apila un


número indeterminado de discos perforados por su centro (elaborados de
madera), que determinará la complejidad de la solución. Por regla general se
consideran siete discos. Los discos se apilan sobre uno de los postes en
tamaño decreciente de abajo a arriba. No hay dos discos iguales, y todos ellos
están apilados de mayor a menor radio -desde la base del poste hacia arriba-
en uno de los postes, quedando los otros dos postes vacíos. El juego consiste
en pasar todos los discos desde el poste ocupado (es decir, el que posee la
torre) a uno de los otros postes vacíos. Para realizar este objetivo, es necesario
seguir tres simples reglas:

1. Solo se puede mover un disco cada vez y para mover otro los demás
tienen que estar en postes.
2. Un disco de mayor tamaño no puede estar sobre uno más pequeño que
él mismo.
3. Solo se puede desplazar el disco que se encuentre arriba en cada poste.

Existen diversas formas de llegar a la solución final, todas ellas siguiendo


estrategias diversas.

Solución simple

Una forma de resolver el problema se fundamenta en el disco más pequeño, el


de más arriba en la varilla de origen. En un juego con un número par de
discos, el movimiento inicial de la varilla origen es hacia la varilla auxiliar. El
disco n.o 2 se debe mover, por regla, a la varilla destino. Luego, el disco n.o 1
se mueve también a la varilla destino para que quede sobre el disco n.o 2. A
continuación, se mueve el disco que sigue de la varilla origen, en este caso el
disco n.o 3, y se coloca en la varilla auxiliar. Finalmente, el disco n.o 1 regresa
de la varilla destino a la origen (sin pasar por la auxiliar), y así sucesivamente.
Es decir, el truco está en el disco más pequeño.

Algoritmo con recursividad Torres de Hanói (Complejidad Õ (2n−1))

Entrada: Tres pilas de números origen, auxiliar, destino, con la


pila origen ordenada

Salida: La pila destino

1. sí origen =={1} entonces
1. mover el disco 1 de pila origen a la pila destino (insertarlo
arriba de la pila destino)
2. terminar
2. si no
1. hanoi({1,….,. n-1},origen,destino, auxiliar)     //mover todas
las fichas menos la más grande (n) a la varilla auxiliar
3. mover disco n a destino                //mover la ficha grande hasta la
varilla final
4. hanoi (auxiliar, origen, destino)          //mover todas las fichas
restantes, 1...n–1, encima de la ficha grande (n)
5. terminar

También podría gustarte