ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Torres D Ehanoi


Enviado por   •  28 de Agosto de 2013  •  3.916 Palabras (16 Páginas)  •  338 Visitas

Página 1 de 16

Informatica Avanzada .

Problema de las

Torres de Hanoi.

Manuel I. Barrera C.

mbarrera@inf.uach.cl

Valdivia, Mayo de 1999.

Indice

Introducción o Descripción del Problema Pág.

Alternativas de Solución Pág.

Discusión de la Solución Pág.

Arquitectura Pág.

Desarrollo e Implementación Pág.

Pruebas Pilotos Pág.

Conclusiones Pág.

Anexo (Código Fuente) Pág.

Introducción o Descripción del Problema :

Según una leyenda, los monjes del templo de una antigua ciudad de la India tienen que mover una torre de 64 discos sagrados de un sitio a otro. Pero los discos son frágiles así que solo uno de ellos puede moverse a la vez. Ningún disco puede colocarse encima de otro mas pequeño. Y únicamente existe otro lugar en el templo (además del sitio original y el destino) lo suficientemente sagrado para que una torre de discos pueda ponerse ahí.

La leyenda dice además que antes de que los mojes realicen el último movimiento para completar la torre en su nuevo lugar, el templo se reducirá a cenizas y el mundo se acabará. Quizá esta leyenda tenga razón debido a la cantidad de movimientos necesarios para cambiar de lugar los 64 discos.

El Problema de las torres de Hanoi se considerará con solo 3 discos, y manteniendo claro esta la cantidad de pilares (3 torres) que se utilizan para dejar los discos, esto para facilitar el desarrollo y reducir la cantidad de movimientos y por ende de recursos que se necesitarían para desarrollar el problema original de la leyenda.

El objetivo es mover todos los discos de la torre 1 a la torre 3. La torre 2 es para almacenamiento temporal. Manteniendo las leyes del problema original, solo se permite realizar movimientos válidos, así que no puede moverse un disco encima de otro de menor diámetro.

Alternativas de Solución

Para el desarrollo de este problema se debe considerar en un principio un estado inicial(la torre 1 con los 3 discos, la torre 2 y 3 vacías) y desde ahí realizar una serie de movimientos válidos (una combinación de estados posibles y válidos) para lograr llegar a un estado final o estado objetivo (la torre 3 con los 3 discos, la torre 1 y 2 vacías).

Para el desarrollo del problema de las Torres de Hanoi se considero 2 tipos de solución, aquella que le dará el jugador y que solamente depende el y otra propia del software y para la cual se utilizó un principio matemático.

Para el desarrollo del programa se utilizo la herramienta JAVA, esta opción se tomo por sobre la de usar JESS, ya que el manejo actual que se tiene de Java es un poco mayor y en esta herramienta se logro con satisfacción el desarrollo del problema, utilizando además el algoritmo basado en principios matemáticos el cual permite al computador resolver el problema en un mínimo de movidas( para el caso de 3 discos se necesitan solo 7movidas).

Discusión de la Solución

Como se dijo anteriormente, la solución por la que se opto fue la de desarrollar el programa en el lenguaje JAVA, aprovechando las ventajas de la herramienta y como es por el momento mas manejable que la herramienta JESS, la cual era la segunda opción válida para el desarrollo de este problema.

Utilizando la herramienta JAVA, se pudo implementar una parte gráfica para tener una mayor visión del problema y de los avances que se van logrando en éste. Aquí también esta desarrollado todo el “algoritmo” que permite al computador resolver el problema con un mínimo de movidas y también (utilizando el mouse) el jugador podrá hacer cualquier movida válida para llegar al estado final o estado objetivo.

Arquitectura

Desarrollo e Implementación

Pruebas Pilotos

Como se dispone de 3 discos la solución mínima es de 7 movidas, esta solución se representa en la siguiente secuencia de movidas :

Estado Inicial

Primera Movida

Segunda Movida

Tercera Movida

Cuarta Movida

Quinta Movida

Sexta Movida

Séptima Movida – Estado Final

Como al jugar, cualquier usuario puede hacer una secuencia independientes de movidas que siempre serán como mínimo 7 y el resultado (estado final) será siempre el mismo es que se ilustra solo la solución mínima.

Conclusiones

Anexo

Código Fuente :

import java.awt.*;

import java.applet.*;

public class Hanoi extends Applet

{

static final int XDOTS = 400;

static final int YDOTS = 200;

static final int NULL = -1;

static final int MAX = 20;

static final int MIN = 3;

static final int MAXCOLS = 6;

static final int MINCOLS = 3;

static final Color cfondo=new Color(228,233,243);

static final Color cbarra=Color.black;

static final Color cfin =Color.red;

static final Color ctorre=Color.blue;

boolean first=true;

int origen,destino;

int movimientos;

int h[] = new int[MAXCOLS];

int Ficha[][] = new int[MAXCOLS][MAX];

int Centorr[] = new int[MAXCOLS];

Button B[] = new Button[MAXCOLS];

TextField TFTorres, TFCols, TFMovimientos;

int numtorres=5, numcols=3;

void Parametros()

{

String param;

param = getParameter("TORRES");

if (param != null) numtorres = Integer.parseInt(param);

param = getParameter("COLS");

...

Descargar como (para miembros actualizados) txt (12 Kb)
Leer 15 páginas más »
Disponible sólo en Clubensayos.com