Torres de Hanoi
-
Upload
gwendoly-nunez -
Category
Documents
-
view
214 -
download
1
description
Transcript of Torres de Hanoi
Proyecto Inteligencia Artificial
Torres de Hanoi
Por: Guendoli Núñez
Introducción
Las Torres de Hanói es un rompecabezas o juego matemático inventado en 1883 por
el matemático francés Edoar Lucas. Este solitario se trata de un juego de ocho discos
de radio creciente que se apilan insertándose en una de las tres estacas de un tablero.
El objetivo del juego es crear la pila en otra de las estacas siguiendo unas ciertas
reglas. El problema es muy conocido en la ciencia de la computación y aparece en
muchos libros de texto como introducción a la teoría de algoritmos.
Descripción
El juego, en su forma más tradicional,
consiste en tres varillas verticales. En una de las varillas se apila un número indeterminado de discos (elaborados de madera) que determinará la complejidad de la solución, por regla general se consideran ocho discos. Los discos se apilan sobre una varilla en tamaño decreciente. No hay dos discos iguales, y todos ellos están 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. Sólo se puede mover un disco cada vez.
2. Un disco de mayor tamaño no puede descansar sobre uno más pequeño que él mismo.
3. Sólo puedes desplazar el disco que se encuentre arriba en cada varilla.
Existen diversas formas de realizar la solución final, todas ellas siguiendo estrategias diversas.
Descripción del Proyecto
Objetivo del programa del juego
Implementar la inteligencia Artificial siendo la
computadora quien resuelva el algoritmo.
Supuestos y Restricciones
La solución de las torres de Hanói será con un grado de dificultad de 1 ficha hasta 8 fichas.
Software y medios a utilizar
Netbeans IDE (Lenguaje Java)
Librería Java 3D
Sonido en formato mp3
Posibles soluciones a implementar
Mediante recursividad
Este problema se suele plantear a menudo en ámbitos de programación, 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 función le llamaríamos hanoi(origen, auxiliar, destino),
como parámetros, la función recibiría las pilas de discos. El algoritmo de la función sería el siguiente:
Algoritmo Torres de Hanói (Complejidad )
Entrada: Tres pilas de números origen, auxiliar, destino, con la pila origen ordenada
Salida: La pila destino
1. Si origen 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( ,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, 0...n-
1, encima de la ficha grande (n)
5. terminar
6. El resultado es: La pila destino
El número de movimientos mínimo a realizar para resolver el problema de este modo
es de 2n-1, siendo n el número de fichas.
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. Una forma equivalente de resolverlo es la siguiente: coloreando los
discos pares de un color y los impares de otro; se resuelve el problema añadiendo
la siguiente regla: no colocar dos discos del mismo color juntos. De esta manera
sólo queda un movimiento posible (además del de volver hacia atrás).
Estimaciones del Proyecto
Se estima que el proyecto contará con un mes de desarrollo.
Bibliografía Consultada
http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r89550.PDF
http://www.rodoval.com/heureka/hanoi/
http://es.wikipedia.org/wiki/Torres_de_Han%C3%B3i