Anda di halaman 1dari 1

Resolucin El problema de las Torres de Hani es curiossimo porque su solucin es muy rpida de calcular, pero el nmero de pasos para

resolverlo crece exponencialmente conforme aumenta el nmero de discos. Existen otras versiones del problema con un nmero diferente de varillas. Aunque se conocen algoritmos eficientes que resuelven el problema con 3 varillas de manera ptima, no se han encontrado an sus contrapartidas para cualquier nmero (N igual o superior a 3) de ellas. Otra manera de resolverlo es basndose en el disco ms pequeo, en este caso el de hasta arriba. El movimiento inicial de este es hacia la varilla auxiliar. El disco nmero dos por regla, se debe mover a la varilla nmero tres. Luego el disco uno se mueve a la varilla tres para que quede sobre el disco dos. A continuacin se mueve el disco que sigue de la varilla uno, en este caso el disco nmero tres, y se coloca en la varilla dos. Finalmente el disco nmero uno regresa de la varilla tres a la uno (sin pasar por la dos) y as sucesivamente. Es decir, el truco est en el disco ms pequeo. Mediante recursividad Este problema se suele plantear a menudo en mbitos de programacin, especialmente para explicar la recursividad. Si numeramos los discos desde 1 hasta n, y llamamos X a la primera pila de discos (origen), Z a la tercera (destino) e Y a la intermedia (auxiliar) y a la funcin le llamaramos hanoi (origen, auxiliar, destino), como parmetros, la funcin recibira las pilas de discos. El algoritmo de la funcin sera el siguiente: 1. Si origen == {0}: mover el disco 1 de pila origen a la pila destino (insertarlo arriba de la pila destino); terminar. 2. Si no: hanoi({0...n-1},destino, auxiliar) //mover todas las fichas menos la ms 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, {0...n-1}, encima de la ficha grande (n) 5. terminar Iterativa Otra manera de resolver el problema, sin utilizar la recursividad, se basa en el hecho de que para obtener la solucin ms corta, es necesario mover el disco ms pequeo en todos los pasos impares, mientras que en los pasos pares slo existe un movimiento posible que no lo incluye. El problema se reduce a decidir en cada paso impar a cul de las dos pilas posibles se desplazar el disco pequeo: El algoritmo en cuestin depende del nmero de discos del problema. Si inicialmente se tiene un nmero impar de discos, el primer movimiento debe ser colocar el disco ms pequeo 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 nmero par de discos, el primer movimiento debe ser colocar el disco ms pequeo 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, etc. Curiosidades A la hora de resolver matemticamente el problema, nos encontramos con muchas curiosidades matemticas respecto a la resolucin. Son las siguientes: La ficha nmero n (siendo 1 la ms pequea) se mueve por primera vez en el paso nmero 2^(n1), y despus de ese primer movimiento, se mover cada 2^n movimientos. De este modo, la ficha 1, se mueve en 1, 3, 5, 7, 9... etc. La ficha 3, se mueve en 4, 12, 20, 28, 32... etc Todas las fichas impares (siendo 1 la ms pequea) se mueven siguiendo el mismo patrn. Asimismo, todas las fichas pares se mueven siguiendo el patrn inverso a las impares. Por ejemplo: si queremos mover un nmero impar de piezas desde la columna 1 hasta la 3, suceder lo siguiente: Todas las fichas impares seguirn este patrn de movimiento: 1 -> 3 -> 2 -> 1 -> 3 -> 2 -> 1 -> 3 -> 2 -> 1. Todas las fichas pares seguirn este patrn de movimiento: 1 -> 2 -> 3 -> 1 -> 2 -> 3 -> 1 -> 2 -> 3 Estos patrones dependen nicamente del nmero de piezas. Si el nmero de piezas es par, los patrones de las impares sern los de las pares, y viceversa. Uniendo la primera regla con la segunda, sabemos siempre qu pieza hay que mover y a qu columna hay que desplazarla, luego el problema est resuelto.

Anda mungkin juga menyukai