Anda di halaman 1dari 9

UNIVERSIDAD MEXICANA

Materia: Habilidades de aprendizaje

Profesora: Sofa Contreras

Alumno: Montiel Hernndez Celso Ventura

Matricula: 31121202-53

Investigacin acerca de cmo se resuelve el juego de la torre de Hani

INDICE
1 INTRODUCCIN...........................................................................................3 2 NOTACIN...................................................................................................3 3 UN ALGORITMO RECURSIVO.........................................................................3 4 DOS ALGORITMOS ITERATIVOS....................................................................4 5 LOS MOVIMIENTOS DE CADA DISCO.............................................................5 6 LA DIRECCIN DE LOS MOVIMIENTOS..........................................................7 7 LA POSICIN DE LOS DISCOS.......................................................................8 ....................................................................................................................9

Introduccin

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 brahmanes 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 Hani y la leyenda india haban sido inventadas por el matemtico francs douard Lucas (N. Claus de Siam es un anagrama de Lucas d'Amiens). Su compatriota, el escritor Henri de Parville ampli y adorn la leyenda poco tiempo despus. A pesar de que el reto planteado es relativamente sencillo, la idea de Lucas ha demostrado ser una de las ms fecundas de la historia de las matemticas recreativas. Si no lo has hecho antes, antes de seguir leyendo tal vez deberas familiarizarte con el rompezabezas y resolverlo por ti mismo. Puedes usar un modelo real o uno de los muchos simuladores que hay disponibles en Internet (mira en los enlaces del final).

Notacin

Los discos se numerarn de 1 a 8 (o a n, en general), empezando por el ms pequeo. Los postes (que se supondrn alineados de izquierda a derecha) sern marcados con letras maysculas (A, B y C). El inicial ser A y el objetivo C.

fig. 1

Un algoritmo recursivo

La Torre de Hani suele aparecer como ejemplo para ilustrar el concepto de recursin en los cursos de programacin de computadoras, ya que existe un algoritmo recursivo sorprendentemente simple que lo resuelve (por si alguien no lo sabe, un algoritmo es recursivo si se llama a s mismo en alguno de sus pasos). Supongamos que queremos trasladar los ocho discos del poste A al poste C. Como el disco 8 siempre est abajo del todo, la nica forma de hacerlo es trasladar primero la torre de siete discos 1...7 al poste B. Entonces podremos llevar el disco 8 de A a C, y para terminar tendremos que trasladar de nuevo la torre 1...7, ahora de B a C.

fig. 2 Pero los discos 1...7 forman una torre totalmente similar a la inicial, as que en dos de los tres pasos anteriores nos enfrentamos con un problema anlogo al original. De hecho, puede resolverse de la misma forma, trasladando ahora la torre 1...6. Por ejemplo, el primer paso (trasladar la torre 1...7 de A a B) se puede descomponer en estos tres pasos.

fig. 3 Por supuesto, en dos de estos tres pasos nos volvemos a encontrar con el problema original, ahora con n = 6. El proceso no es infinito, ya que llega el momento en que trasladar una torre equivale a trasladar un solo disco (esto ocurre cuando la torre es de un solo disco, claro). En resumen, el algoritmo recursivo es el siguiente. Algoritmo para trasladar la torre 1...n del poste X al poste Z, usando como auxiliar el poste Y. 1. 2. 3. 4. Si n = 1, lleva el disco 1 de X a Z y termina. Traslada la torre 1...n1 usando este mismo algoritmo, de X a Y, usando como auxiliar Z. Lleva el disco n de X a Z. Traslada la torre 1...n1 usando este mismo algoritmo, de Y a Z, usando como auxiliar X.

Este algoritmo siempre me ha parecido sorprendente, parece ms la definicin de un problema que su resolucin. Si eres como yo tendrs que implementarlo en un lenguaje de programacin concreto para convencerte de que funciona. En realidad, lo nico que hace es especificar unos pasos inevitables. Por ejemplo, como vimos antes, para resolver el puzzle es obligatorio llevar el disco n de A a C, y para ello es obligatorio llevar antes la torre 1...n a B, etc. La secuencia de movimientos que produce este algoritmo es la nica solucin ptima (o sea, de longitud mnima) posible. El nmero de movimientos es M3(n) = 2n1, como se puede demostrar fcilmente por induccin sobre el nmero de discos. Se cumple para n = 1 M3(1) = 1 = 211. Si se cumple para n, se cumple para d+1 Al ejecutarse el algoritmo para n+1 se llama a s mismo dos veces para n, ms un movimiento del disco n+1. As que M3(n+1) = 2 M3(n) + 1 = 2 (2n1) + 1 = 2n+12+1 = 2n+11. Para n = 8 el nmero de movimientos es de 2 81 = 255. Para n = 64, de 2641 = 18.446.744.073.709.551.615. Si los brahmanes de Benars cambiaran un disco de sitio cada segundo necesitaran ms de quinientos ochenta mil millones de aos para terminar su tarea, unas cuarenta veces la edad del Universo. Los algoritmos recursivos funcionan bien con ordenadores, pero son difciles de aplicar para un ser humano. Si intentas resolver la torre de ocho discos aplicando el mtodo descrito es fcil que te pierdas a no ser que vayas tomando notas de por dnde vas. Incluso para los ordenadores los algoritmos recursivos suelen ser poco econmicos, en el sentido de que consumen bastante memoria (y es que ellos tambin necesitan tomar notas). La alternativa a los algoritmos recursivos son los iterativos, en los que no hay llamadas a s mismo, sino uno o varios bucles. Muy a menudo no existe o no se conoce una alternativa iterativa para un algoritmo recursivo, y cuando s se conoce, suele ser mucho ms complicada que la versin recursiva. Sin embargo, en el caso de la Torre de Hani, existen varios algoritmos iterativos muy simples.

Dos algoritmos iterativos

Antes de buscar un algoritmo iterativo resaltemos de nuevo un detalle importante. Aunque estamos hablando de varios algoritmos, la solucin ptima (la de menos movimientos, que como hemos visto antes, para n = 8 es de 255) es nica. O sea, la serie de movimientos que resulta de aplicar un algoritmo (ptimo) cualquiera ser siempre la misma. Una observacin clave para encontrar un algoritmo iterativo es que el disco ms pequeo se mueve una vez s, una vez no. El primer movimiento hay que hacerlo con el disco 1. Est claro que despus de mover el disco 1 (en 4

cualquier ocasin) se debe mover un disco distinto (si no queremos perder el tiempo moviendo el mismo disco varias veces). Este movimiento debe hacerse entre los dos postes que no contienen el disco 1. A continuacin no nos quedan ms que dos alternativas: deshacer el ltimo movimiento, lo que no tiene sentido, o volver a mover el disco 1. Adems, cuando le toque le toque el turno a un disco distinto de 1, el movimiento estar perfectamente determinado ya que slo intervendrn dos postes, y entre dos postes slo hay un movimiento posible. As que slo puede haber duda cuando hay que mover el disco menor. Se sale de esta duda respetando una cualquiera de las siguientes reglas. El disco pequeo se debe mover siempre cclicamente en el mismo sentido: hacia la derecha (de A a B, de B a C y de C a A) o hacia la izquierda (de A a C, de C a B y de B a A), segn el nmero de discos sea par o impar respectivamente. El disco pequeo se debe colocar siempre, bien sobre un disco de nmero par, bien como nico disco en el poste de destino (C) si el nmero de discos es impar o en el otro (B) si es par. Teniendo en cuenta la primera regla se construye un algoritmo descubierto por Peter Buneman y Leon Levy. 1. 2. Si n es par, mueve el disco 1 hacia la derecha. Si es impar, muvelo hacia la izquierda. Si todos los discos estn en C, fin. Si no, mueve un disco que no sea el 1 y vuelve al paso 1. Teniendo en cuenta la segunda regla, el algoritmo podra ser el siguiente. 1. 2. Si es posible, lleva el disco 1 sobre un disco de nmero par. Si no es posible, llvalo al poste B si n es par o a C si n es impar. Si todos los discos estn en C, fin. Si no, mueve un disco que no sea el 1 y vuelve al paso 1.

Para hacer este algoritmo ms fcil de aplicar se pueden pintar los discos pares e impares de dos colores distintos. Incluso se puede pintar la base en tres trozos, como se ve en el dibujo (es como si los trozos de base fueran los discos n+1, n+2 y n+3).

fig. 4 Con esta versin del rompecabezas el ltimo algoritmo se puede redactar as: 1. 2. Lleva el disco 1 sobre un disco (o trozo de base) que no sea de su mismo color. Si todos los discos estn en C, fin. Si no, mueve un disco distinto de 1 y vuelve al paso 1.

El disco ms pequeo no es el nico que no se coloca nunca sobre otro de distinto color, en ningn momento hay dos discos del mismo color juntos.

Los movimientos de cada disco

Analizando otra vez el algoritmo recursivo y el razonamiento que nos llev a l podemos comprobar que (centrndonos en el caso de 8 discos) el disco 8 se mueve una sola vez, el 7 dos veces, el 6 cuatro veces, etc. El disco 1 se mueve 128 veces. La suma de estas potencias de 2 coincide con el total de movimientos antes calculado (1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255). En general, el disco k se mueve 2nk veces, y 20 + 21 + ... + 2n1 = 2n1. Vamos ahora a fijarnos en los momentos concretos en que se mueve cada disco. Para empezar trataremos el caso de cinco discos que en esta ocasin pintaremos con cinco tonos de azul.

fig. 5 Ilustraremos los movimientos mediante una tira de 31 cuadrados, cada uno de los cuales representa un movimiento de la solucin. Iremos coloreando estos cuadrados progresivamente con los colores de los discos, empezando por el disco mayor y yendo hacia arriba en la torre.

fig. 6 El disco mayor (el 5 en este caso) protagoniza el movimiento central, dejando a izquierda y derecha sendos intervalos de 15 movimientos.

fig. 7 El disco 4 se mueve en los puntos centrales de cada intervalo de 15, dejando intervalos de 7. Los movimientos del disco 4 estn separados por 15 movimientos, el primero a 7 movimientos del principio y el ltimo a 7 movimientos del final.

fig. 8 El disco 3 se mueve en los puntos centrales de cada intervalo de 7, dejando intervalos de 3. Los movimientos del disco 4 estn separados por 7 movimientos, el primero a 3 movimientos del principio y el ltimo a 3 movimientos del final.

fig. 9 El disco 2 se mueve en los puntos centrales de cada intervalo de 3, dejando huecos de un solo movimiento. Los movimientos del disco 2 estn separados por 3 movimientos, el primero a 1 movimiento del principio y el ltimo a 1 movimiento del final.

fig. 10 Por fin, el disco 1 interviene en todos los movimientos que quedan, incluyendo el primero y el ltimo. Se desplaza por tanto, como ya sabamos, una vez s y otra vez no.

fig. 11 6

En general, el disco k se mueve en 2nk ocasiones, hay entre cada movimiento y el siguiente 2k1 movimientos, y su primer y ltimo movimiento estn separados 2k11 movimientos del principio y del final respectivamente. Esta 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 01000 00001 01001 00010 01010 00011 01011 00100 01100 00101 01101 00110 01110 00111 01111 tabla 1 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 2 n1 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 2 k1. En definitiva, estos unos marcados en negrita en la lista indican qu disco interviene en cada movimiento de la Torre de Hani. 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.

La direccin de los movimientos

Ya que sabemos qu disco se mueve en cada momento, veamos ahora si podemos determinar hacia dnde. Como ya hicimos antes al hablar del algoritmo de Buneman y Levy, consideraremos que el poste A est a la derecha del poste C, as que si un disco est en C y decimos que se mueve hacia la derecha, ir a parar a A. Anlogamente, un disco en A que se mueve hacia la izquierda ir a parar a C. En primer lugar, el disco n realiza un solo movimiento hacia la izquierda, como se aprecia en la figura 2 (porque hemos fijado el poste de destino en C; en caso contrario ira hacia la derecha). El disco n1 se mueve primero de A a B y despus a C, desplazndose en ambos casos hacia la derecha. Se ve en la siguiente animacin (disco 7).

fig. 12

En general, si un disco k realiza todos sus movimientos hacia un lado, el disco k1 tiene que hacerlos en sentido contrario. Se puede decir que los movimientos de k1 consisten en apartarse para permitir los movimientos de k. En conclusin, cada disco se desplaza siempre en una direccin fija: hacia la izquierda si nk es par y hacia la derecha si nk es impar. El movimiento del disco 1 que vimos antes es una consecuencia de esto.

fig. 13 Sabemos ya qu disco se mueve en cada momento y en qu direccin. Siguiendo con el ejemplo de antes, en una torre de 8 discos, el movimiento nmero 136 (10001000 en binario) lo realiza el disco 4 hacia la izquierda (porque 84 es par). Estamos en condiciones de escribir un tercer algoritmo iterativo basado en los nmeros binarios. Para m = 1 hasta m = 2n1... o Mueve el disco k en la direccin d, donde k es el lugar ocupado por el primer 1 que aparece en la forma binaria de m (contando de derecha a izquierda) y d es izquierda si nk es par y derecha si nk es impar.

Es posible tambin determinar directamente a partir de la forma binaria de m el poste de origen y de destino del movimiento (en lugar del disco a mover y la direccin del movimiento), obtenindose un algoritmo muy corto y rpido.

La posicin de los discos

Antes vimos que la representacin binaria del nmero de cada movimiento de la solucin nos mostraba qu disco se mova y en qu direccin. Ahora vamos a ver que es posible incluso determinar en qu poste se encuentra cada disco, de acuerdo con el mtodo descubierto por Timothy R. S. Walsh. La idea es ir colocando los discos por orden decreciente de tamao. La nueva idea clave es que el disco k se encuentra sobre el disco k+1 si, y slo si, en la representacin binaria del nmero de movimiento los bits k y k+1 (contando de derecha a izquierda) coinciden. Con esto y el hecho ya conocido de que slo pueden estar en contacto discos de distinta paridad es posible ir colocando todos los discos. Si suponemos que las bases de los postes estn los discos n+1, n+2 y n+3 no hace falta tratar el disco n como una excepcin; estar en el poste inicial cuando el bit de la izquierda sea 0 y en el poste de destino cuando sea 1. Para mayor facilidad podemos colorear el puzzle como en la figura 4. Por ejemplo, despus del movimiento 136 (010001000), el disco 8 (010001000) no est sobre el disco 9, es decir, sobre la base del poste inicial, as que tiene que estar sobre el 11 (la base del poste de destino). El disco 7 (010001000) no se encuentra encima del 8, as que, por paridad, tiene que estar sobre el 10 (base del poste B). El disco 6 (010001000) se encuentra sobre el 7, y el 5 (010001000) sobre el 6. El disco 4 (010001000) no est encima del 5, as que est en el poste A (no puede estar en C, porque tendra que colocarse encima del 8, que tiene la misma paridad). El disco 3 (010001000) no est sobre el 4, y por paridad est sobre el 8, en el poste C (arriba del poste B est 5, impar como 3). Para terminar, el disco 2 (010001000) est encima del 3 y el 1 (010001000) est encima del 2. La siguiente animacin ilustra todo el proceso.

fig. 14

Anda mungkin juga menyukai