problema 8 puzzle

23
Problema del 8 Puzzle Arámburo Cabada Joseph David Chávez Sierra Juan Paúl Hernández Castaños Gabriela Leyva Bujons Iván Alberto

Upload: juan-paul-chavez-sierra

Post on 04-Aug-2015

27 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Problema 8 puzzle

Problema del 8 PuzzleArámburo Cabada Joseph David

Chávez Sierra Juan PaúlHernández Castaños Gabriela

Leyva Bujons Iván Alberto

Page 2: Problema 8 puzzle

Planteamiento del problema.

• Se tiene un puzzle de 8 números los cuales están colocados aleatoriamente en un espacio de 3 x 3 y se desean ordenar de la siguiente manera:

1 4 7

2 5 8

3 6

Page 3: Problema 8 puzzle

Condiciones del problema

• Se debe generar un nodo inicial de forma aleatoria.• Se debe utilizar el método de busca informado A*.• Debe evaluarse todas las posibles heurísticas para seleccionar la

mejor.• Al encontrar el nodo final se debe mostrar la ruta recorrida hacia la

solución.

Page 4: Problema 8 puzzle

Heurísticas evaluadas

• Número de fichas desacomodadas.• Distancia Manhattan total.

Page 5: Problema 8 puzzle

Número de fichas desacomodadas

h=4

h=3

h=2 h=4

Tres fichas desacomodadas

Cuatro fichas desacomodadas

Dos fichas desacomodadas

cuatro fichas desacomodadas

Page 6: Problema 8 puzzle

Distancia Manhattan total

h=3

h=2h=4 h=4

0+0+0+1+1+0+0+1=3

0+0+0+1+1+0+1+1=4 0+0+0+0+1+0+0+1=2 1+0+0+1+1+0+0+1=4

Page 7: Problema 8 puzzle

Resultado de la evaluación de la heurística.• Se usara el método de búsqueda informado A*.• La heurística que se usara es Distancia Manhattan Total.• Estructuras de datos que se usaran:• Nodos cerrados: pila.• Nodos abiertos: cola con prioridad.

Page 8: Problema 8 puzzle

Entorno de desarrollo seleccionado

• Lenguaje : Java• Se escogió resolver el problema con este lenguaje con el que estamos mas

familiarizados a través de su interfaz de consola.

• IDE: Netbeans v8.0

Page 9: Problema 8 puzzle

Implementación

• Se desarrollo una estructura orientada a objetos con la finalidad de una legible comprensión por parte de usuarios terceros. Cada clase realiza una tarea especifica que es usada en la clase principal.

Page 10: Problema 8 puzzle

Las clases

• A continuación se muestran las clases desarroladas:

Page 11: Problema 8 puzzle

Class GeneradorDeNodoInicial

• Consiste en almacenar los números del 1 al 9 en un arreglo para luego extraerlos de forma aleatoria a través de su numero de posición. La posición seleccionada será eliminada.

Page 12: Problema 8 puzzle

Class BuscarCoordenadas

Consiste en visitar todas las casillas de la matriz del nodo actual con el objetivo de saber la localización del espacio representado por el numero 9 y asi poder realizar los siguientes movimientos.

Page 13: Problema 8 puzzle

Class CompararNodos

• Consiste en hacer una comparación entre el nodo actual y el nodo meta. Se toma cada elemento de la matriz y se compara con su contraparte en la matriz objetivo. Si surge una diferencia el método se detiene y devuelve false, de lo contrario devolvería true y finaliza la búsqueda.

Page 14: Problema 8 puzzle

Class CalcularManhattan

• Consiste en la suma acumulada de las distancias en X y Y de cada ficha desde su estado actual hasta la meta. El método devuelve el valor acumulado el cual se guardara en el campo h del nodo.

Page 15: Problema 8 puzzle

Class MoverFicha

• Consiste en realizar el intercambio del elemento con el numero 9 que representa el espacio vacío con alguna de su ficha contiguas a la derecha, abajo, izquierda o arriba según sea permitido. El método realiza el movimiento o en su defecto un nulo si no se puede mover porque esta contigua al limite.

Page 16: Problema 8 puzzle

Class NodaCerrado

• Clase que nos sirve para generar objetos tipo NodoCerrado para agregarlos a la cola de cerrados.

Page 17: Problema 8 puzzle

Class NodoFrontera

• Clase que nos sirve para crear objetos de tipo NodoFrontera que serian los nodo abierto o frontera que están pendientes por visitar.

Page 18: Problema 8 puzzle

Class BuscarCerrados

• Esta clase realiza una búsqueda en la cola de nodos cerrados comparándolos con el nodo actual. La clase devuelve un false de no encontrarse, de lo contrario devuelve un true.

Page 19: Problema 8 puzzle

Class BusquedaFronteras

• Esta clase realiza una búsqueda en la cola de nodos frontera comparándolos con el actual que resulta del ordenamiento por prioridad. El método devuelve un true de encontrarse el nodo o en su defecto devuelve un false.

Page 20: Problema 8 puzzle

Class BusquedaPadre

• Esta clase realiza una búsqueda a través de los identificadores de los nodos para encontrar el padre del nodo actual. El método devuelve el identificados del padre o de lo contrario devuelve un nulo.

Page 21: Problema 8 puzzle

Class ImprimirNodo

• Este método imprime los nodos que representan el camino desde el nodo inicial al nodo meta.

Page 22: Problema 8 puzzle

Demostración del Código

• A continuación se hace una demostración del código desarrollado en la consola de NetBeans.

Page 23: Problema 8 puzzle

Gracias!

• Fin de la presentación.