Вы находитесь на странице: 1из 4

Torre de Hanoi y concepto de recursividad a) Historia del juego

En 1883 empez a venderse en Francia un antiguo rompecabezas oriental, rescatado para Occidente por el profesor N. Claus (de Siam) y cuyas primeras referencias eran los escritos del ilustre mandarn Fer-Fer-Tam-Tam. Segn una leyenda india, en el Templo de Benars, bajo el domo que marca el centro del mundo, hay una placa de latn con tres agujas de diamante. Durante la creacin, Dios puso sesenta y cuatro discos de oro puro de distinto tamao en una de las agujas, formando una torre. Los bramanes llevan generaciones cambiando de lugar, uno a uno, los discos de la torre entre las tres agujas de forma que en ningn momento un disco mayor descanse sobre otro ms pequeo. Cuando hayan conseguido trasladar todos los discos a otra aguja su trabajo estar terminado, y la torre y el templo se derrumbarn, y con un gran trueno, el mundo se desvanecer. La versin simplificada que se venda en Francia se compona de ocho discos de madera. En realidad, la Torre de Hanoi y la leyenda india haban sido inventadas por el matemtico francs douard Lucas en 1883. b) Reglas y objetivo del juego El juego, en su forma ms tradicional, consiste en tres varillas verticales. En una de las varillas se apila un nmero indeterminado de discos (elaborados de madera) que determinar la complejidad de la solucin, por regla general se consideran ocho discos. Los discos se apilan sobre una varilla en tamao decreciente. No hay dos discos iguales, y todos ellos estn apilados de mayor a menor radio en una de las varillas, quedando las otras dos varillas vacantes. El juego consiste en pasar todos los discos de la varilla ocupada (es decir la que posee la torre) a una de las otras varillas vacantes. Para realizar este objetivo, es necesario seguir tres simples reglas: 1. Slo se puede mover un disco cada vez. 2. Un disco de mayor tamao no puede descansar sobre uno ms pequeo que l mismo. 3. Slo puedes desplazar el disco que se encuentre arriba en cada varilla. c) Estrategia

- Solucin simple
Una forma de resolver la colocacin de la torre es fundamentndose 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.

- 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,

Una forma equivalente de resolverlo es la siguiente: coloreando los discos pares de un color y los impares de otro; se resuelve el problema aadiendo la siguiente regla: no colocar dos discos del mismo color juntos. De esta manera slo queda un movimiento posible (adems del de volver hacia atrs).

d) Que es el concepto de recursividad y como se relaciona con el juego Recurrencia, Recursin (incorrecto en castellano) o recursividad es la forma en la cual se especifica un proceso basado en su propia definicin. Siendo un poco ms precisos, y para evitar el aparente crculo sin fin en esta definicin: Un problema que pueda ser definido en funcin de su tamao, sea este N, pueda ser dividido en instancias ms pequeas (< N) del mismo problema y se conozca la solucin explcita a las instancias ms simples, lo que se conoce como casos base, se puede aplicar induccin sobre las llamadas ms pequeas y suponer que estas quedan resueltas. Estrategia mediante 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 El mtodo recursivo contiene dos llamadas recursivas que se aplican a dos posibles divisiones del problema original. Generalmente se considera que los algoritmos que contienen ms de dos llamadas recursivas son algoritmos de Divide y Vencers. Podemos resumir entonces que esta estrategia consta de dos partes. 1- La divisin. Es donde el problema se divide en problemas ms pequeos que a su vez re resuelven recursivamente. 2- La solucin del problema original se forma a partir de estos problemas ms pequeos.

e) Relacin del juego con los nmeros binarios La distribucin de movimientos tiene una estrecha relacin con la de unos y ceros en la secuencia de nmeros binarios. Estos son los primeros 32 nmeros (del 0 al 31, todos los que se pueden escribir con cinco dgitos, o ms precisamente con cinco bits) en codificacin binaria, ordenados por columnas.
00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111

En cada paso de un nmero al siguiente hay exactamente un 0 que se cambia por un 1, y este 1 (marcado en negrita en la lista) es siempre el primero contando por la derecha. Tanto el primer nmero (00000 no lo tenemos en cuenta) como el ltimo terminan en 1 y entre un nmero que termina en 1 y el siguiente hay slo otro separndolos.

El primer nmero terminado en 10 es 00010, ocupando el segundo (el 10, en notacin binaria) lugar de la lista. El ltimo es 11110, tambin segundo, pero contando por el final. Entre un nmero terminado en 10 y el siguiente hay 3 = 221 (1001 en binario). El primer nmero terminado en 100 es 00100, el cuarto (el 100, en notacin binaria) de la lista. El ltimo es 11100, cuarto contando por el final. Entre un nmero terminado en 100 y el siguiente hay 7 = 231 (10001 en binario). Igual que hicimos antes con la tira de cuadros (pero en sentido inverso) podramos seguir hasta el quinto dgito. En general, en la lista de los primeros 2n1 nmeros binarios (sin contar el 0) usaremos n dgitos (bits). Para cualquier k entre 1 y n, el primer nmero terminado en un 1 seguido de k1 ceros est a 2k11 del principio y el ltimo est a la misma distancia del final; entre cualquier nmero de esta forma y el siguiente hay una separacin de 2k1. En definitiva, estos unos marcados en negrita en la lista indican qu disco interviene en cada movimiento de la Torre de Hanoi. Un ejemplo, volviendo a la torre de ocho discos. Supongamos que queremos saber qu disco se mueve en el movimiento 136. En binario y usando 8 bits, 136 se escribe 10001000, as que se mueve el disco 4, ya que el primer bit con valor uno contando de derecha a izquierda es el cuarto. f) Frmula para calcular el nmero de movimientos y el nmero de movimientos asociados a la leyenda (64 discos de oro) Frmula : 2n1. El mnimo nmero de movimientos que se necesita para resolver el problema asociado a la leyenda es de 264-1=1.844674407 X 1019 . (18.446.744.073.709.551.615)movimientos. Si los monjes hicieran un movimiento por segundo, los 64 discos estaran en la tercera varilla en algo menos de 585 mil millones de aos. g) Describir al menos otras dos conexiones del juego con las matemticas aplicadas y explicarlo - Estadstica: comparar el desempeo y eficiencia entre varios jugadores para la solucin del juego, para la evaluacin del desempeo intelectual. - Probabilidad: evaluar la atinada resolucin del juego por personas con capacidad intelectual diferente. h) Como se relaciona el juego con los conceptos y/o desarrollo de un programa de cmputo. Para la resolucin del juego mediante la estrategia de recursividad

Вам также может понравиться