SlideShare una empresa de Scribd logo
1 de 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
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
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.
Heurísticas evaluadas
• Número de fichas desacomodadas.
• Distancia Manhattan total.
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
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
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.
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
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.
Las clases
• A continuación se muestran las clases desarroladas:
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.
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.
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.
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.
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.
Class NodaCerrado
• Clase que nos sirve para generar
objetos tipo NodoCerrado para
agregarlos a la cola de cerrados.
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.
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.
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.
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.
Class ImprimirNodo
• Este método imprime los nodos
que representan el camino
desde el nodo inicial al nodo
meta.
Demostración del Código
• A continuación se hace una demostración del código desarrollado en
la consola de NetBeans.
Gracias!
• Fin de la presentación.

Más contenido relacionado

La actualidad más candente

Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de java
innovalabcun
 
Estructuras dinámicas
Estructuras dinámicasEstructuras dinámicas
Estructuras dinámicas
PatriciaU
 
Tipos de datos C#
Tipos de datos C#Tipos de datos C#
Tipos de datos C#
alex28Xx
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejercicios
testgrupocomex
 

La actualidad más candente (20)

Recursividad (Divide y Vencerás)
Recursividad (Divide y Vencerás)Recursividad (Divide y Vencerás)
Recursividad (Divide y Vencerás)
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
Busqueda por profundidad iterativa
Busqueda por profundidad iterativaBusqueda por profundidad iterativa
Busqueda por profundidad iterativa
 
Abstracción de datos
Abstracción de datosAbstracción de datos
Abstracción de datos
 
Busquedas a Heuristicas
Busquedas a HeuristicasBusquedas a Heuristicas
Busquedas a Heuristicas
 
Unidad III procedimientos
Unidad III procedimientosUnidad III procedimientos
Unidad III procedimientos
 
Encapsulamiento en JAVA-NETBEANS
Encapsulamiento en JAVA-NETBEANSEncapsulamiento en JAVA-NETBEANS
Encapsulamiento en JAVA-NETBEANS
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de java
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
POO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilosPOO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilos
 
Estructuras dinámicas
Estructuras dinámicasEstructuras dinámicas
Estructuras dinámicas
 
Normalizacion de base de datos
Normalizacion de base de datosNormalizacion de base de datos
Normalizacion de base de datos
 
Programación Orientada a Objetos (POO) y UML
Programación Orientada a Objetos (POO) y UMLProgramación Orientada a Objetos (POO) y UML
Programación Orientada a Objetos (POO) y UML
 
Simulacion de pi - monte carlo - buffon java
Simulacion de pi - monte carlo - buffon  javaSimulacion de pi - monte carlo - buffon  java
Simulacion de pi - monte carlo - buffon java
 
9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetos9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetos
 
Pilas En C++
Pilas En C++Pilas En C++
Pilas En C++
 
Valores y prácticas XP
Valores y prácticas XPValores y prácticas XP
Valores y prácticas XP
 
Tipos de datos C#
Tipos de datos C#Tipos de datos C#
Tipos de datos C#
 
Poo programacion orientada a objetos - renee morales
Poo programacion orientada a objetos - renee moralesPoo programacion orientada a objetos - renee morales
Poo programacion orientada a objetos - renee morales
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejercicios
 

Destacado

Problema de la ocho reinas. Implementación en Prolog.
Problema de la ocho reinas. Implementación en Prolog.Problema de la ocho reinas. Implementación en Prolog.
Problema de la ocho reinas. Implementación en Prolog.
Mayra Villanueva
 
El algoritmo a (asterisco)
El algoritmo a (asterisco)El algoritmo a (asterisco)
El algoritmo a (asterisco)
Cristina Lopez
 
Chipkit comunicacion puerto serie
Chipkit comunicacion puerto serieChipkit comunicacion puerto serie
Chipkit comunicacion puerto serie
Daniel Cruz
 
Transformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logicoTransformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logico
josecuartas
 

Destacado (12)

Busqueda informada y explorada
Busqueda informada y exploradaBusqueda informada y explorada
Busqueda informada y explorada
 
Problema de la ocho reinas. Implementación en Prolog.
Problema de la ocho reinas. Implementación en Prolog.Problema de la ocho reinas. Implementación en Prolog.
Problema de la ocho reinas. Implementación en Prolog.
 
El algoritmo a (asterisco)
El algoritmo a (asterisco)El algoritmo a (asterisco)
El algoritmo a (asterisco)
 
Aprendiendo SQL 2
Aprendiendo SQL 2 Aprendiendo SQL 2
Aprendiendo SQL 2
 
Sq Lv1a
Sq Lv1aSq Lv1a
Sq Lv1a
 
Desarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDesarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nube
 
Chipkit comunicacion puerto serie
Chipkit comunicacion puerto serieChipkit comunicacion puerto serie
Chipkit comunicacion puerto serie
 
Programación Lógica con PROLOG
Programación Lógica con PROLOGProgramación Lógica con PROLOG
Programación Lógica con PROLOG
 
Problema de las 8 reinas
Problema de las 8 reinasProblema de las 8 reinas
Problema de las 8 reinas
 
Transformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logicoTransformar modelo entidad relacion a modelo logico
Transformar modelo entidad relacion a modelo logico
 
Distribucion de planta
Distribucion de plantaDistribucion de planta
Distribucion de planta
 
Clase II
Clase IIClase II
Clase II
 

Similar a Problema 8 puzzle

Búsqueda inteligencia artificial
Búsqueda inteligencia artificialBúsqueda inteligencia artificial
Búsqueda inteligencia artificial
Alexis Pilco
 
Tablas hash
Tablas hashTablas hash
Tablas hash
Privada
 
Busquedas inteligencia artificail
Busquedas inteligencia artificailBusquedas inteligencia artificail
Busquedas inteligencia artificail
Luis Cambal
 
Sistemas basados en casos
Sistemas basados en casosSistemas basados en casos
Sistemas basados en casos
Luis Álamo
 
Informe algoritmos de busqueda
Informe algoritmos de busquedaInforme algoritmos de busqueda
Informe algoritmos de busqueda
Gonzalo Retamal
 

Similar a Problema 8 puzzle (15)

Criterios de Búsqueda en Inteligencia Artificial
Criterios de Búsqueda en Inteligencia ArtificialCriterios de Búsqueda en Inteligencia Artificial
Criterios de Búsqueda en Inteligencia Artificial
 
Criterios de Búsquedas en Inteligencia artificial
Criterios de Búsquedas en Inteligencia artificialCriterios de Búsquedas en Inteligencia artificial
Criterios de Búsquedas en Inteligencia artificial
 
Búsqueda inteligencia artificial
Búsqueda inteligencia artificialBúsqueda inteligencia artificial
Búsqueda inteligencia artificial
 
Tecnicas de Busqueda en IA
Tecnicas de Busqueda en IATecnicas de Busqueda en IA
Tecnicas de Busqueda en IA
 
Estructura de datos s14
Estructura de datos s14Estructura de datos s14
Estructura de datos s14
 
Estructura de datos s14
Estructura de datos s14Estructura de datos s14
Estructura de datos s14
 
Tipos de búsquedas de inteligencia artificial
Tipos de búsquedas de inteligencia artificialTipos de búsquedas de inteligencia artificial
Tipos de búsquedas de inteligencia artificial
 
metodos de busqueda en inteligencia artificial
metodos de busqueda en inteligencia artificialmetodos de busqueda en inteligencia artificial
metodos de busqueda en inteligencia artificial
 
Tablas hash
Tablas hashTablas hash
Tablas hash
 
Busquedas inteligencia artificail
Busquedas inteligencia artificailBusquedas inteligencia artificail
Busquedas inteligencia artificail
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativo
 
Inteligencia Artificial - Leonys B
Inteligencia Artificial - Leonys BInteligencia Artificial - Leonys B
Inteligencia Artificial - Leonys B
 
Búsqueda no informada - Búsqueda bidireccional
Búsqueda no informada - Búsqueda  bidireccionalBúsqueda no informada - Búsqueda  bidireccional
Búsqueda no informada - Búsqueda bidireccional
 
Sistemas basados en casos
Sistemas basados en casosSistemas basados en casos
Sistemas basados en casos
 
Informe algoritmos de busqueda
Informe algoritmos de busquedaInforme algoritmos de busqueda
Informe algoritmos de busqueda
 

Más de Juan Paúl Chávez Sierra

Más de Juan Paúl Chávez Sierra (16)

Sistemas de archivos ext y discos opticos
Sistemas de archivos ext y discos opticosSistemas de archivos ext y discos opticos
Sistemas de archivos ext y discos opticos
 
Presentacion fausto
Presentacion faustoPresentacion fausto
Presentacion fausto
 
Presentacion gestión de los riesgos del proyecto
Presentacion gestión de los riesgos del proyectoPresentacion gestión de los riesgos del proyecto
Presentacion gestión de los riesgos del proyecto
 
Vigilancia tecnológica, benchmarking e inteligencia competitiva
Vigilancia tecnológica, benchmarking e inteligencia competitivaVigilancia tecnológica, benchmarking e inteligencia competitiva
Vigilancia tecnológica, benchmarking e inteligencia competitiva
 
Comandapp
ComandappComandapp
Comandapp
 
Estrategia empresarial y tecnologica
Estrategia empresarial y tecnologicaEstrategia empresarial y tecnologica
Estrategia empresarial y tecnologica
 
Quicksort
QuicksortQuicksort
Quicksort
 
Proyecto base de datos hospital angeles
Proyecto base de datos hospital angelesProyecto base de datos hospital angeles
Proyecto base de datos hospital angeles
 
Cable Coaxial
Cable CoaxialCable Coaxial
Cable Coaxial
 
Muestreo aleatorio sistematico
Muestreo aleatorio sistematicoMuestreo aleatorio sistematico
Muestreo aleatorio sistematico
 
Montaje del rack del servidor
Montaje del rack del servidorMontaje del rack del servidor
Montaje del rack del servidor
 
3m health care products
3m health care products3m health care products
3m health care products
 
Problemas graficales y de test de CI
Problemas graficales y de test de CIProblemas graficales y de test de CI
Problemas graficales y de test de CI
 
Italy
ItalyItaly
Italy
 
Caso tricomv1
Caso tricomv1Caso tricomv1
Caso tricomv1
 
Sección ii administración global de la TI
Sección ii administración global de la TISección ii administración global de la TI
Sección ii administración global de la TI
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (10)

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 

Problema 8 puzzle

  • 1. 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
  • 2. 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
  • 3. 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.
  • 4. Heurísticas evaluadas • Número de fichas desacomodadas. • Distancia Manhattan total.
  • 5. 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
  • 6. 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
  • 7. 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.
  • 8. 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
  • 9. 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.
  • 10. Las clases • A continuación se muestran las clases desarroladas:
  • 11. 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.
  • 12. 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.
  • 13. 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.
  • 14. 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.
  • 15. 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.
  • 16. Class NodaCerrado • Clase que nos sirve para generar objetos tipo NodoCerrado para agregarlos a la cola de cerrados.
  • 17. 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.
  • 18. 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.
  • 19. 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.
  • 20. 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.
  • 21. Class ImprimirNodo • Este método imprime los nodos que representan el camino desde el nodo inicial al nodo meta.
  • 22. Demostración del Código • A continuación se hace una demostración del código desarrollado en la consola de NetBeans.
  • 23. Gracias! • Fin de la presentación.