Upload
lizeeeeth
View
2.088
Download
18
Embed Size (px)
DESCRIPTION
Programacion Logica, busquedas por profundidad y anchura
Citation preview
PROBLEMA DE LAS JARRAS 1
UNIVERSIDAD NACIONAL DE TRUJILLO
FACULTAD DE CIENCIAS FÍSICAS Y
MATEMÁTICAS
ESCUELA DE INFORMÁTICA
MONOGRAFIA
ASIGNATURA: Programación Lógica
PROFESOR: Ing. José Arturo Díaz Pulido.
INTEGRANTES: Mendez Echevarria Alessia
Meza Sanchez Kathiuska
Reyes Mozo Lizeth
CICLO: VII
TRUJILLO-PERÚ
2014
PROBLEMA DE LAS
JARRAS
PROBLEMA DE LAS JARRAS 2
A Dios, por brindarnos la dicha de la
salud y bienestar físico y espiritual
A nuestros padres, como agradecimiento a su esfuerzo, amor y apoyo incondicional, durante nuestra formación tanto personal como profesional.
A nuestros docentes, por brindarnos su guía
y sabiduría en el desarrollo de este trabajo.
PROBLEMA DE LAS JARRAS 3
CONTENIDO
INTRODUCCIÓN..................................................................................................................... 4
MARCO TEORICO .................................................................................................................. 5
1. CAPÍTULO I: TEORÍA DE TÉCNICAS DE BÚSQUEDA ............................................. 5
1.1. Búsqueda en Anchura ............................................................................................. 5
1.2. Búsqueda en Profundidad ....................................................................................... 6
2. CAPÍTULO II: PROBLEMA DE LAS JARRAS ............................................................. 8
2.1. Representación De Problemas: .............................................................................. 8
2.2. Planteamiento del problema de las Jarras ............................................................ 8
2.3. Formulación del problema de las Jarras ................................................................ 9
3. CAPITULO III: SOLUCION PROBLEMA DE LAS JARRAS ...................................... 11
3.1. PROBLEMA DE LAS JARRAS DE AGUA (PROFUNDIDAD) ........................... 11
3.2. PROBLEMA DE LAS JARRAS DE AGUA (ANCHURA) .................................... 13
4. CAPITULO IV: IMPLEMENTACION ............................................................................ 15
4.1. Código en Prolog ....................................................................................................... 15
4.2. ANIMACION DEL PROBLEMA EN JAVA (PASO A PASO) .............................. 17
CONCLUSIONES: ................................................................................................................. 19
ANEXOS .................................................................................................................................. 20
BIBLIOGRAFÍA ..................................................................................................................... 21
PROBLEMA DE LAS JARRAS 4
INTRODUCCIÓN
La Ciencia de la Computación trata cada vez de plantear nuevos problemas que
sean difíciles de resolver mediante las técnicas computacionales existentes. Estos
problemas generalmente no tienen solución algorítmica conocida o esta es tan
compleja que no tiene una implementación práctica computacional.
Los problemas de decisión que normalmente se presentan en la vida empresarial
pueden caer en esta clase de problemas.
Por lo general existe una serie de recursos escasos (obreros, presupuesto,
tiempo, etc.), o bien requisitos mínimos que hay que condicionan la elección de la
estrategia más adecuada. Por lo general el objetivo al tomar la decisión es llevar a
cabo el plan propuesto de manera óptima (bien incurriendo en mínimos costes o
bien buscando el máximo beneficio).
El proceso de buscar una solución a un problema produce un espacio solución, o
sea, la parte del espacio problema que se examina realmente. A diferencia de las
estructuras de datos que están predefinidas y ya existen cuando comienza la
búsqueda, los espacios problema son generalmente definidos proceduralmente,
es decir, el espacio problema es creado a medida que es explorado. Se usan
procedimientos para definir los siguientes estados posibles en el espacio a través
de los cuales la búsqueda puede continuar desde el estado actual. Solamente los
caminos explorados tienen que estar definidos explícitamente.
PROBLEMA DE LAS JARRAS 5
MARCO TEORICO
1. CAPÍTULO I: TEORÍA DE TÉCNICAS DE BÚSQUEDA
1.1. Búsqueda en Anchura
La búsqueda en anchura (o búsqueda en amplitud), llamada Breadth
First Search en inglés, es un algoritmo usado para recorrer o buscar
elementos en una estructura de datos como los árboles y los grafos
(aunque nosotros nos centremos ahora mismo en los árboles).
Pertenece al grupo de las búsquedas no informadas (sin heurísticas).
Su procedimiento consiste en ir visitando todos los nodos de un nivel
antes de proceder con el siguiente nivel tal y como mostramos en la
siguiente figura (los números en naranja indican el orden de
exploración de los nodos):
PROBLEMA DE LAS JARRAS 6
Entonces, la búsqueda en anchura va a encontrar el elemento
de menor profundidad del árbol, si es que existe.
Ventajas de la búsqueda en Anchura:
- Es completo: siempre encuentra la solución si existe.
- Es óptimo si el coste de cada rama es constante: en Inteligencia Artificial
puede que cada nodo sea un estado de un problema, y que unas ramas
tengan un coste diferente a las demás.
Desventajas de la búsqueda en Anchura:
- Complejidad exponencial en espacio y tiempo (incluso peor la del espacio
que la del tiempo)
1.2. Búsqueda en Profundidad
La búsqueda en profundidad, llamada Depth First Search en inglés, es un
algoritmo usado para recorrer o buscar elementos en un árbol o un grafo y
pertenece al grupo de las búsquedas no informadas (sin heurísticas). Su
procedimiento consiste en visitar todos los nodos de forma ordenada pero no
uniforme en un camino concreto, dejando caminos sin visitar en su proceso.
Una vez llega al final del camino vuelve atrás hasta que encuentra una
bifurcación que no ha explorado, y repite el proceso hasta acabar el árbol
(esto se conoce como backtracking). En la siguiente figura mostramos el
orden de visita, siendo los números en naranja dicho orden:
PROBLEMA DE LAS JARRAS 7
Como vemos, la búsqueda en profundidad busca el elemento por el
camino de máxima profundidad y cuando éste se acaba, vuelve al último
nodo que había visitado con caminos posibles (caminos abiertos).
Ventajas de la búsqueda en Profundidad:
- Es completa si no existen ciclos repetidos.
- Tiene menor complejidad en espacio que la búsqueda en anchura,
porque solo mantenemos en memoria un camino simultáneamente.
Desventajas de la búsqueda en Profundidad:
- No es óptima.
- Puede no encontrar la solución aunque exista si hay caminos infinitos.
- No es completa.
PROBLEMA DE LAS JARRAS 8
2. CAPÍTULO II: PROBLEMA DE LAS JARRAS
2.1. Representación De Problemas:
Existen diferentes formas de representar problemas para resolverlos de
manera automática.
Representación General:
Espacio de Estado: un problema se divide en un conjunto de
pasos de resolución desde el inicio hasta el objetivo.
Reducción a Sub-Problemas: un problema se descompone en
una jerarquía de sub-problemas
Representaciones para problemas Específicos:
Resolución de juegos
Satisfacción de restricciones
2.2. Planteamiento del problema de las Jarras
Enunciado:
-Se tienen dos jarras de agua, una de 4 litros y otra de 3 litros sin escala
de medición. Se desea tener 2 litros de agua en la jarra de 4 litros. Las
siguientes operaciones son válidas: llenar las jarras, tirar agua de las
jarras, pasar agua de una jarra a otra.
Representación de estados:
- (x y) con x en {0,1,2,3,4} e y en {0,1,2,3}.
Número de estados: 20.
PROBLEMA DE LAS JARRAS 9
2.3. Formulación del problema de las Jarras
Estado inicial: (0 0).
Estados finales: todos los estados de la forma (2 y).
Operadores:
• Llenar la jarra de 4 litros con la bomba.
• Llenar la jarra de 3 litros con la bomba.
• Vaciar la jarra de 4 litros en el suelo.
• Vaciar la jarra de 3 litros en el suelo.
• Llenar la jarra de 4 litros con la jarra de 3 litros.
• Llenar la jarra de 3 litros con la jarra de 4 litros.
• Vaciar la jarra de 3 litros en la jarra de 4 litros.
• Vaciar la jarra de 4 litros en la jarra de 3 litros.
2.4. Las Reglas que se pueden aplicar son:
1. Llenar la jarra de 4l: Si (X,Y) AND X<4 => (4,Y)
2. Llenar la jarra de 3l: Si (X,Y) AND Y<3 => (X,3)
3. Vaciar la jarra de 4l: Si (X,Y) AND X>0 => (0, Y)
4. Vaciar la jarra de 3l: Si (X,Y) AND Y>0 => (X, 0)
PROBLEMA DE LAS JARRAS 10
5. Pasar agua de la jarra de 4l a la jarra de 3l hasta llenarla:
Si (X,Y) AND X>0 AND X+Y>=3 => (X-(3-Y),3)
6. Pasar agua de la jarra de 3l a la jarra de 4l hasta llenarla:
Si (X,Y) AND Y>0 AND X+Y>=4 => (4, Y-(4-X))
7. Pasar toda el agua de la jarra de 4l a la jarra de 3l:
Si (X,Y) AND X>0 AND X+Y<3 => (0,X+Y)
8. Pasar toda el agua de la jarra de 3l a la jarra de 4l:
Si (X,Y) AND Y>0 AND X+Y<4 => (X+Y,0)
El programa debería encontrar un pasaje de estados para ir del estado
(0,0) al estado (2,0). Puede existir más de un pasaje de estados hacia la
solución, por ejemplo:
(0,0) => (0,3) => (3,0) => (3,3) => (4,2) => (0,2) => (2,0)
En la cual, a partir del estado inicial, se aplicaron las reglas 2, 8, 2, 6, 3 y
8, hasta conseguir el estado objetivo.
Otro pasaje de estados hacia la solución es la siguiente
(0,0) => (4,0) => (1,3) => (1,0) => (0,1) => (4,1) => (2,3) => (2,0)
En la cual se aplicaron las reglas 1, 5, 4, 7, 1, 5 y 4
PROBLEMA DE LAS JARRAS 11
3. CAPITULO III: SOLUCION PROBLEMA DE LAS JARRAS
3.1. PROBLEMA DE LAS JARRAS DE AGUA (PROFUNDIDAD)
3.1.1. Grafo De Búsqueda En Profundidad
PROBLEMA DE LAS JARRAS 12
3.2.2 Tabla De Busqueda En Profundidad
3.2.3. Propiedades de la búsqueda en profundidad
Complejidad:
r: factor de ramificación.
m: máxima profundidad de la búsqueda. Complejidad en tiempo: O(rm).
Complejidad en espacio: O(rm). No es completa. No es minimal.
PROBLEMA DE LAS JARRAS 13
3.2. PROBLEMA DE LAS JARRAS DE AGUA (ANCHURA)
3.2.1 Grafo de búsqueda en anchura
PROBLEMA DE LAS JARRAS 14
3.2.2. Tabla de búsqueda en anchura
3.2.3. Propiedades de la búsqueda en anchura
Complejidad:
r: factor de ramificación.
p: profundidad de la solución.
Complejidad en tiempo: O(rp).
Complejidad en espacio: O(rp).
Es completa.
Es minimal.
PROBLEMA DE LAS JARRAS 19
CONCLUSIONES:
El problema de las jarras nos ayudó a resolver problemas reales, actuando como
un armamento de ideas acerca de cómo representar y utilizar el conocimiento, y
de cómo ensamblar sistemas
Es explicar varios tipos de inteligencia. Determinar qué ideas acerca de la
representación del conocimiento, del uso que se le da a éste, y del ensamble de
sistemas explican distintas clases de inteligencia
PROBLEMA DE LAS JARRAS 20
ANEXOS
Soluciones de los problemas
Los siguientes cuadros muestran un resumen de las estadísticas mediante
la técnica de búsqueda por anchura y por profundidad de algunos
problemas.
Estadística de búsqueda en anchura:
Estadística de búsqueda en profundidad:
PROBLEMA DE LAS JARRAS 21
BIBLIOGRAFÍA
http://www.cs.us.es/~jalonso/cursos/ia1-99/temas/tema-03.pdf
http://www.infcr.uclm.es/www/aadan/AIIA_Industriales2005_archivos/Manu
ales/tema1.pdf
-Juan Cruz Jiménez, A (2013), el problema de las jarras de agua con CLIPS-
búsqueda primero en profundidad
http://ccia.ei.uvigo.es/docencia/IA/1213/transparencias/Tema2.pdf
http://blog.vidasconcurrentes.com/programacion/busqueda-en-profundidad-y-
busqueda-en-anchura/
http://www.widget-101.com/codigo/algoritmos-de-busqueda-en-anchura-bfs-
y-busqueda-en-profundidad-dfs/
http://elvex.ugr.es/decsai/algorithms/slides/5%20Grafos.pdf