SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
1
Universidad Nacional de Trujillo
Facultad de Ciencias Físicas y Matemáticas
Escuela Profesional de Informática
PROGRAMACIÓN LÓGICA
“El problema de las jarras de agua”
Autores:
Poémape Vargas Oscar Roberto
Silva Coronado Oskar Hernando
Vásquez Alvarado Mario Fernando
Ciclo:
VII
Profesor:
Arturo Díaz Pulido
2014
2
Índice
Dedicatoria...................................................................................................................................................3
Introducción ................................................................................................................................................4
Marco teórico ..............................................................................................................................................5
Capitulo I. Teoría de Grafos y árboles................................................................................................5
Capitulo II. Búsqueda por Profundidad y Búsqueda por amplitud.......................................................8
Capitulo III. Descripción y Solución del Problema.............................................................................10
A. Enunciado del problema..................................................................................................................10
B. Descripción .....................................................................................................................................11
1. Algoritmo Principal ....................................................................................................................11
2. Algoritmo busca..........................................................................................................................11
3. Algoritmo aplica.........................................................................................................................12
4. Algoritmo llenar .........................................................................................................................13
5. Algoritmo vaciar.........................................................................................................................14
6. Algoritmo verter .........................................................................................................................15
7. Algoritmo vertido........................................................................................................................16
C. Código solución ..............................................................................................................................17
Conclusiones..............................................................................................................................................18
Referencias Bibliográficas........................................................................................................................19
Anexos........................................................................................................................................................20
Apéndice A. Código en Prolog para el Problema de Jarras de 3 y 5 unidades.................................20
Apéndice B. Algoritmo Solución para el problema de las Jarras Propuesto....................................23
3
Dedicatoria
El presente trabajo está dedicado a todos los compañeros
que llevan el curso de Programación Lógica, a aquellos
que lo llevarán en el futuro y también para quienes les
interese esta parte de las Ciencias de la Computación,
esperando contribuir con el aprendizaje de todos y
también contar con sus críticas constructivas las cuales,
estamos seguros, nos harán mejorar.
4
Introducción
Si consideramos un problema como una situación que se presenta en la que se sabe más o menos, o
con toda claridad, a dónde se quiere ir, pero no se sabe cómo; entonces resolver un problema es
precisamente aclarar dicha situación y encontrar algún camino adecuado que lleve a la meta.
A veces no sabremos si la herramienta adecuada para la situación está entre la colección de técnicas
que dominamos o ni siquiera si se ha creado una técnica que pueda ser suficientemente potente para
resolver el problema. Esta es precisamente la circunstancia del investigador, en matemáticas y en
cualquier otro campo, y, por otra parte, ésta es la situación en la que nos encontramos a veces en nuestra
vida normal.
Precisamente en el presente trabajo, se trata un problema lógico: El problema de las jarras de agua;
y se concibe una solución utilizando herramientas muy potentes como son la programación lógica y los
árboles de búsqueda.
Para la introducción al tema se ha considerado la teoría más importante y necesaria para entender el
modo de resolución del problema: primero un breve repaso por la teoría de grafos para luego usar este
concepto en la definición de árbol y cómo es que se aplica en la solución mediante la búsqueda por
profundidad y la búsqueda por amplitud.
Teniendo ya claros los conceptos básicos, se presenta la descripción del problema y luego la
descripción de la solución, finalizando con la presentación del código del programa en lenguaje Prolog
que refleja la solución planteada.
5
Marco teórico
Capitulo I. Teoría de Grafos y árboles.
A. Introducción
La Teoría de Grafos juega un papel importante en la fundamentación matemática
de las Ciencias de la Computación. Los grafos constituyen una herramienta básica para
modelar fenómenos discretos y son fundamentales para la comprensión de las estructuras
de datos y el análisis de algoritmos. En matemáticas y ciencias de la computación, la
teoría de grafos estudia las propiedades de los grafos, que son colecciones de objetos
llamados vértices (o nodos) conectados por líneas llamadas aristas (o arcos) que pueden
tener orientación (dirección asignada). Típicamente, un grafo está diseñado por una serie
de puntos (los vértices) conectados por líneas (las aristas).
B. Definición
Un grafo es una pareja G = (V, A), donde V es un conjunto de puntos, llamados
vértices, y A es un conjunto de pares de vértices, llamadas aristas.
En teoría de grafos, sólo queda lo esencial del dibujo: la forma de las aristas no son
relevantes, sólo importa a qué vértices están unidas. La posición de los vértices tampoco
importa, y se puede variar para obtener un grafo más claro.
C. Elementos
Vértices: Son los objetos representados por punto dentro del grafo.
Aristas: son las líneas que unen dos vértices.
Aristas Adyacentes: dos aristas son adyacentes si convergen sobre el mismo
vértice.
6
D. Caracterización de los grafos
Grafos simples
Un grafo es simple si a lo más existe una arista uniendo dos vértices cualesquiera.
Esto es equivalente a decir que una arista cualquiera es la única que une dos vértices
específicos. Un grafo que no es simple se denomina multigrafo.
Grafos conexos
Un grafo es conexo si cada par de vértices está conectado por un camino; es decir,
si para cualquier par de vértices (a, b), existe al menos un camino posible desde a hacia b.
Un grafo es doblemente conexo si cada par de vértices está conectado por al menos
dos caminos disjuntos; es decir, es conexo y no existe un vértice tal que al sacarlo el grafo
resultante sea disconexo.
Es posible determinar si un grafo es conexo usando un algoritmo Búsqueda en
anchura (BFS) o Búsqueda en profundidad (DFS).
En términos matemáticos la propiedad de un grafo de ser (fuertemente) conexo
permite establecer con base en él una relación de equivalencia para sus vértices, la cual
lleva a una partición de éstos en "componentes (fuertemente) conexas", es decir,
porciones del grafo, que son (fuertemente) conexas cuando se consideran como grafos
aislados. Esta propiedad es importante para muchas demostraciones en teoría de grafos.
E. Árbol
Sea G un grafo no dirigido. G es un árbol si satisface las siguientes condiciones:
● G es conexo y no tiene ciclos (ciclo es un camino que no repite aristas y llega al
mismo vértice inicial)
● G no tiene ciclos y, si se añade alguna arista se forma un ciclo.
● G es conexo y si se le quita alguna arista deja de ser conexo.
● Dos vértices cualesquiera de G están conectados por un único camino simple.
Las condiciones anteriores son todas equivalentes, es decir, si se cumple una las
demás se cumplirán.
Si un árbol G tiene un número finito de vértices, n, entonces tiene n − 1 aristas.
En resumen:
7
Un árbol es un grafo en el que cualesquiera dos vértices están conectados por
exactamente un camino.
F. Árboles en resolución de problemas
Mediante los árboles de búsqueda se puede representar todo el espacio de estados
para resolver un problema y así todos los caminos posibles desde la raíz hasta las hojas
representan una posible solución o un fracaso. Está claro que la forma de hallar las
soluciones sería realizando una búsqueda que recorra el árbol.
8
Capitulo II. Búsqueda por Profundidad y Búsqueda por amplitud
A. Búsqueda por profundidad:
Una búsqueda por profundidad es un algoritmo que permite recorrer todos los
nodos de un grafo o árbol de manera ordenada, pero no uniforme. Su funcionamiento
consiste en ir expandiendo todos y cada uno de los nodos que va localizado, de forma
recurrente, en un camino concreto. Cuando ya no quedan más nodos que visitar en dicho
camino, regresa (Backtracking), de modo que repite el mismo proceso con cada uno de
los hermanos del nodo ya procesado.
B. Búsqueda por amplitud:
Una búsqueda por amplitud o anchura es un algoritmo para recorrer o
buscar elementos en un grafo. Intuitivamente, se comienza en la raíz (eligiendo algún
nodo como elemento raíz en el caso de un grafo) y se exploran todos los vecinos de este
nodo. A continuación para cada uno de los vecinos se exploran sus respectivos vecinos
adyacentes, y así hasta que se recorra todo el árbol.Formalmente es un algoritmo de
búsqueda sin información, que se expande y examina todos los nodos de un árbol
sistemáticamente para buscar una solucion. El algoritmo no usa estrategia heurística.
Si las aristas tienen pesos negativos aplicaremos el algoritmo de Bellman-Ford en
alguna de sus dos versiones.
9
10
Capitulo III. Descripción y Solución del Problema
A. Enunciado del problema
“Tenemos dos jarras, una de 4 litros de capacidad y otra de 3 litros.
Ninguna de ellas tiene marcas que permitan identificar cuánta agua hay en ellas.
Existe un grifo que permite llenar las jarras de agua; es posible vaciar el
contenido de las jarras; verter el contenido de una en otra. El problema consiste
en encontrar una secuencia de movimientos que consiga dejar exactamente 2
litros de agua en la jarra de 4 litros de capacidad.”
En este enunciado nos presenta las siguientes propiedades, operaciones y
estados que se pueden realizar en las jarras:
● Propiedades:
○ Se refiere al maximo y minimo de cantidades que puede
poseer una jarra, hay que entender que como mínimo la
cantidad será 0 para ambas jarras y como máximo
dependerá de la jarra
● Estados
○ Es la cantidad de litros que posea jarra en un momento
dado
● Operaciones:
○ Llenado
○ Vaciado
○ Vertido
A su vez se ha decidido añadir algunas restricciones en cuanto a las
operaciones, con el fin de evitar caer en bucles o no recorrer nodos innecesarios,
entre las restricciones planteadas tenemos:
● No se puede verter a una jarra que esté llena
● No se puede vaciar una jarra vacía
● No se puede llenar una jarra llena
● Solo se llenan jarras vacías
11
B. Descripción
Para la solución se usa el árbol búsqueda de Prolog, donde tenemos 6
nodos hijos (de los cuales solo algunos se cumplirán dependiendo del caso).
1. Algoritmo Principal
2. Algoritmo busca
12
3. Algoritmo aplica
13
4. Algoritmo llenar
14
5. Algoritmo vaciar
15
6. Algoritmo verter
16
7. Algoritmo vertido
17
C. Código solución
Una solución propuesta se ve en el Apéndice A, propuesta para jarras de
tres y cinco litros, y la jarra más grande debe llenarse con cuatro litros, usando
cierto número de litros de agua, que sirve como delimitador y evita que se caiga
en un bucle infinito, pues el vaciado de una jarra no se retorna a los litros de agua
disponible.
Se ha decidido realizar ciertas modificaciones al algoritmo (Apéndice B),
con el fin de generalizar la solución modificando la menor cantidad de lineas de
codigo, para eso se añaden tres hechos que son:
● maxJarraGrande
● maxJarraPequena
● litrosObjetivo
Se añaden estos hechos para que solo modificando estos se logre cambiar
completamente el funcionamiento del algoritmo a diferencia del primero que es
necesario cambiar más de tres lineas de codigo para conseguir el objetivo
planteado, es decir (jarras de tres y cuatro litros y como objetivo llenar dos litros
en la más grande)
18
Conclusiones
Se realizó un programa en prolog para solucionar el problema de las jarras bajo el concepto de árboles de
búsqueda por profundidad.
Se buscó la forma de construir el algoritmo para el programa de la manera más eficiente de tal forma que
no recorra caminos innecesario o repita algunos ya descartados
Construimos el árbol de manera gráfica para poder demostrar y comprobar el recorrido que tendrá el arbol
en el programa.
19
Referencias Bibliográficas
● Wikipedia, Árbol (informática), recuperado el 29/06/2014
http://es.wikipedia.org/wiki/%C3%81rbol_(inform%C3%A1tica)
● Nabor Chirinos, Teoría de grafos, recuperado el 29/06/2014
http://www.slideshare.net/naborchirinos/conceptos-teoria-de-grafos-5778778
● Wikipedia, Teoría de grafos, recuperado el 29/06/2014
http://es.wikipedia.org/wiki/Teor%C3%ADa_de_grafos
● Wikipedia, Árbol (teoría de grafos), recuperado el 29/06/2014
http://es.wikipedia.org/wiki/%C3%81rbol_(teor%C3%ADa_de_grafos)
● Yarox, Resolución del problema de las jarras en Prolog, recuperado el 29/06/2014
https://gist.github.com/yarox/2829983
20
Anexos
Apéndice A. Código en Prolog para el Problema de Jarras de 3 y 5 unidades
Descripción: La solución usada es para jarras de 3 y 5 litros, además de usar un
limitante (agua disponible)
21
22
23
Apéndice B. Algoritmo Solución para el problema de las Jarras Propuesto
24

Más contenido relacionado

La actualidad más candente

Transacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLTransacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLLuiS YmAY
 
Unidad no. 2 búsqueda en espacio de estados
Unidad no. 2   búsqueda en espacio de estadosUnidad no. 2   búsqueda en espacio de estados
Unidad no. 2 búsqueda en espacio de estadosMilton Klapp
 
Tipos de búsqueda en Inteligencia Artificial
Tipos de búsqueda en Inteligencia ArtificialTipos de búsqueda en Inteligencia Artificial
Tipos de búsqueda en Inteligencia ArtificialJuank Grifin
 
Algoritmo de backtracking
Algoritmo de backtrackingAlgoritmo de backtracking
Algoritmo de backtrackingVictor Gonzalez
 
Bases De Datos Paralelas
Bases De Datos ParalelasBases De Datos Paralelas
Bases De Datos Paralelaspineda2
 
Búsqueda informada y exploración
Búsqueda informada y exploraciónBúsqueda informada y exploración
Búsqueda informada y exploraciónHéctor Estigarribia
 
Métodos de Búsquedas en Inteligencia Artificial
Métodos de Búsquedas en Inteligencia ArtificialMétodos de Búsquedas en Inteligencia Artificial
Métodos de Búsquedas en Inteligencia ArtificialGregorys Gimenez
 
Arboles En Estructura de Datos
Arboles En Estructura de DatosArboles En Estructura de Datos
Arboles En Estructura de DatosDARKGIRL93
 
Características, componentes y arquitectura de los dbms.
Características, componentes y arquitectura de los dbms.Características, componentes y arquitectura de los dbms.
Características, componentes y arquitectura de los dbms.Julicamargo
 
Digramas de venn aplicado en las bases datos
Digramas de venn aplicado en las bases datosDigramas de venn aplicado en las bases datos
Digramas de venn aplicado en las bases datosjosecuartas
 
Normalización de Bases de Datos Relacionales y Primera Forma Normal (1NF)
Normalización de Bases de Datos Relacionales y Primera Forma Normal (1NF)Normalización de Bases de Datos Relacionales y Primera Forma Normal (1NF)
Normalización de Bases de Datos Relacionales y Primera Forma Normal (1NF)Enzo D'Amario
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicoslandeta_p
 
Solución de problemas mediante busqueda
Solución de problemas mediante busquedaSolución de problemas mediante busqueda
Solución de problemas mediante busquedasacrilegetx
 
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?¿Cómo realizar entrevistas eficaces para obtener requisitos de software?
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?Software Guru
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de javainnovalabcun
 

La actualidad más candente (20)

Transacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLTransacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQL
 
Unidad no. 2 búsqueda en espacio de estados
Unidad no. 2   búsqueda en espacio de estadosUnidad no. 2   búsqueda en espacio de estados
Unidad no. 2 búsqueda en espacio de estados
 
Tipos de búsqueda en Inteligencia Artificial
Tipos de búsqueda en Inteligencia ArtificialTipos de búsqueda en Inteligencia Artificial
Tipos de búsqueda en Inteligencia Artificial
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
Clase 2
Clase 2Clase 2
Clase 2
 
Algoritmo de backtracking
Algoritmo de backtrackingAlgoritmo de backtracking
Algoritmo de backtracking
 
Bases De Datos Paralelas
Bases De Datos ParalelasBases De Datos Paralelas
Bases De Datos Paralelas
 
Búsqueda informada y exploración
Búsqueda informada y exploraciónBúsqueda informada y exploración
Búsqueda informada y exploración
 
Métodos de Búsquedas en Inteligencia Artificial
Métodos de Búsquedas en Inteligencia ArtificialMétodos de Búsquedas en Inteligencia Artificial
Métodos de Búsquedas en Inteligencia Artificial
 
Diseño de bases de datos
Diseño de bases de datosDiseño de bases de datos
Diseño de bases de datos
 
Arboles En Estructura de Datos
Arboles En Estructura de DatosArboles En Estructura de Datos
Arboles En Estructura de Datos
 
Características, componentes y arquitectura de los dbms.
Características, componentes y arquitectura de los dbms.Características, componentes y arquitectura de los dbms.
Características, componentes y arquitectura de los dbms.
 
Problema del barbero durmiente
Problema del barbero durmienteProblema del barbero durmiente
Problema del barbero durmiente
 
Digramas de venn aplicado en las bases datos
Digramas de venn aplicado en las bases datosDigramas de venn aplicado en las bases datos
Digramas de venn aplicado en las bases datos
 
Normalización de Bases de Datos Relacionales y Primera Forma Normal (1NF)
Normalización de Bases de Datos Relacionales y Primera Forma Normal (1NF)Normalización de Bases de Datos Relacionales y Primera Forma Normal (1NF)
Normalización de Bases de Datos Relacionales y Primera Forma Normal (1NF)
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicos
 
Couchdb
CouchdbCouchdb
Couchdb
 
Solución de problemas mediante busqueda
Solución de problemas mediante busquedaSolución de problemas mediante busqueda
Solución de problemas mediante busqueda
 
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?¿Cómo realizar entrevistas eficaces para obtener requisitos de software?
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de java
 

Similar a El problema de las jarras de agua tema 6 prolog

Similar a El problema de las jarras de agua tema 6 prolog (20)

Tema 5 diapositivas de la teoría de grafos.pptx
Tema 5 diapositivas de la teoría de grafos.pptxTema 5 diapositivas de la teoría de grafos.pptx
Tema 5 diapositivas de la teoría de grafos.pptx
 
Presentación1 grafos
Presentación1 grafosPresentación1 grafos
Presentación1 grafos
 
Presentación1 grafos
Presentación1 grafosPresentación1 grafos
Presentación1 grafos
 
Algoritmo de Floyd-Warshall
Algoritmo de Floyd-WarshallAlgoritmo de Floyd-Warshall
Algoritmo de Floyd-Warshall
 
Aplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafosAplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafos
 
Matematicas discretas
Matematicas discretasMatematicas discretas
Matematicas discretas
 
Grafos
GrafosGrafos
Grafos
 
MONOGRAFIA DAG.pdf
MONOGRAFIA DAG.pdfMONOGRAFIA DAG.pdf
MONOGRAFIA DAG.pdf
 
Grafos
GrafosGrafos
Grafos
 
Teoría de grafos
Teoría de grafosTeoría de grafos
Teoría de grafos
 
Grafos
GrafosGrafos
Grafos
 
Presentación de grafos
Presentación de  grafosPresentación de  grafos
Presentación de grafos
 
Unidad IV
Unidad IVUnidad IV
Unidad IV
 
Ascii
AsciiAscii
Ascii
 
Grafos (angel)[1]
Grafos (angel)[1]Grafos (angel)[1]
Grafos (angel)[1]
 
Capitulo1 grafos
Capitulo1 grafosCapitulo1 grafos
Capitulo1 grafos
 
Grafos del algebra
Grafos del algebraGrafos del algebra
Grafos del algebra
 
Arbol
ArbolArbol
Arbol
 
Arbol
ArbolArbol
Arbol
 
Grafos
GrafosGrafos
Grafos
 

Último

Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaANDECE
 
LIQUIDACION OBRAS PUBLICAS POR CONTRATA.pdf
LIQUIDACION OBRAS PUBLICAS  POR CONTRATA.pdfLIQUIDACION OBRAS PUBLICAS  POR CONTRATA.pdf
LIQUIDACION OBRAS PUBLICAS POR CONTRATA.pdfManuelVillarreal44
 
S454444444444444444_CONTROL_SET_A_GEOMN1204.pdf
S454444444444444444_CONTROL_SET_A_GEOMN1204.pdfS454444444444444444_CONTROL_SET_A_GEOMN1204.pdf
S454444444444444444_CONTROL_SET_A_GEOMN1204.pdffredyflores58
 
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...Arquitecto Alejandro Gomez cornejo muñoz
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEANDECE
 
Sistema de gestión de turnos para negocios
Sistema de gestión de turnos para negociosSistema de gestión de turnos para negocios
Sistema de gestión de turnos para negociosfranchescamassielmor
 
Peligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionPeligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionOsdelTacusiPancorbo
 
Sistema de Base de Datos para renta de trajes
Sistema de Base de Datos para renta de trajesSistema de Base de Datos para renta de trajes
Sistema de Base de Datos para renta de trajesjohannyrmnatejeda
 
trabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidastrabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidasNelsonQuispeQuispitu
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfIsbelRodrguez
 
ESTRUCTURAS EN LA SUPERVISIÓN Y RESIDENCIA DE OBRAS
ESTRUCTURAS EN LA SUPERVISIÓN Y RESIDENCIA DE OBRASESTRUCTURAS EN LA SUPERVISIÓN Y RESIDENCIA DE OBRAS
ESTRUCTURAS EN LA SUPERVISIÓN Y RESIDENCIA DE OBRASenriquezerly87
 
4.3 Subestaciones eléctricas tipos caracteristicas.pptx
4.3 Subestaciones eléctricas tipos caracteristicas.pptx4.3 Subestaciones eléctricas tipos caracteristicas.pptx
4.3 Subestaciones eléctricas tipos caracteristicas.pptxEfrain Yungan
 
Tarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieriaTarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieriaSebastianQP1
 
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdfSEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdffredyflores58
 
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRQUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRyanimarca23
 
NOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptxNOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptxJairReyna1
 
Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...esandoval7
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaANDECE
 
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTOESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTOCamiloSaavedra30
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxLuisvila35
 

Último (20)

Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de Almería
 
LIQUIDACION OBRAS PUBLICAS POR CONTRATA.pdf
LIQUIDACION OBRAS PUBLICAS  POR CONTRATA.pdfLIQUIDACION OBRAS PUBLICAS  POR CONTRATA.pdf
LIQUIDACION OBRAS PUBLICAS POR CONTRATA.pdf
 
S454444444444444444_CONTROL_SET_A_GEOMN1204.pdf
S454444444444444444_CONTROL_SET_A_GEOMN1204.pdfS454444444444444444_CONTROL_SET_A_GEOMN1204.pdf
S454444444444444444_CONTROL_SET_A_GEOMN1204.pdf
 
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSE
 
Sistema de gestión de turnos para negocios
Sistema de gestión de turnos para negociosSistema de gestión de turnos para negocios
Sistema de gestión de turnos para negocios
 
Peligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionPeligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacion
 
Sistema de Base de Datos para renta de trajes
Sistema de Base de Datos para renta de trajesSistema de Base de Datos para renta de trajes
Sistema de Base de Datos para renta de trajes
 
trabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidastrabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidas
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdf
 
ESTRUCTURAS EN LA SUPERVISIÓN Y RESIDENCIA DE OBRAS
ESTRUCTURAS EN LA SUPERVISIÓN Y RESIDENCIA DE OBRASESTRUCTURAS EN LA SUPERVISIÓN Y RESIDENCIA DE OBRAS
ESTRUCTURAS EN LA SUPERVISIÓN Y RESIDENCIA DE OBRAS
 
4.3 Subestaciones eléctricas tipos caracteristicas.pptx
4.3 Subestaciones eléctricas tipos caracteristicas.pptx4.3 Subestaciones eléctricas tipos caracteristicas.pptx
4.3 Subestaciones eléctricas tipos caracteristicas.pptx
 
Tarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieriaTarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieria
 
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdfSEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdf
 
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRQUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
 
NOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptxNOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptx
 
Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes Granada
 
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTOESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
 

El problema de las jarras de agua tema 6 prolog

  • 1. 1 Universidad Nacional de Trujillo Facultad de Ciencias Físicas y Matemáticas Escuela Profesional de Informática PROGRAMACIÓN LÓGICA “El problema de las jarras de agua” Autores: Poémape Vargas Oscar Roberto Silva Coronado Oskar Hernando Vásquez Alvarado Mario Fernando Ciclo: VII Profesor: Arturo Díaz Pulido 2014
  • 2. 2 Índice Dedicatoria...................................................................................................................................................3 Introducción ................................................................................................................................................4 Marco teórico ..............................................................................................................................................5 Capitulo I. Teoría de Grafos y árboles................................................................................................5 Capitulo II. Búsqueda por Profundidad y Búsqueda por amplitud.......................................................8 Capitulo III. Descripción y Solución del Problema.............................................................................10 A. Enunciado del problema..................................................................................................................10 B. Descripción .....................................................................................................................................11 1. Algoritmo Principal ....................................................................................................................11 2. Algoritmo busca..........................................................................................................................11 3. Algoritmo aplica.........................................................................................................................12 4. Algoritmo llenar .........................................................................................................................13 5. Algoritmo vaciar.........................................................................................................................14 6. Algoritmo verter .........................................................................................................................15 7. Algoritmo vertido........................................................................................................................16 C. Código solución ..............................................................................................................................17 Conclusiones..............................................................................................................................................18 Referencias Bibliográficas........................................................................................................................19 Anexos........................................................................................................................................................20 Apéndice A. Código en Prolog para el Problema de Jarras de 3 y 5 unidades.................................20 Apéndice B. Algoritmo Solución para el problema de las Jarras Propuesto....................................23
  • 3. 3 Dedicatoria El presente trabajo está dedicado a todos los compañeros que llevan el curso de Programación Lógica, a aquellos que lo llevarán en el futuro y también para quienes les interese esta parte de las Ciencias de la Computación, esperando contribuir con el aprendizaje de todos y también contar con sus críticas constructivas las cuales, estamos seguros, nos harán mejorar.
  • 4. 4 Introducción Si consideramos un problema como una situación que se presenta en la que se sabe más o menos, o con toda claridad, a dónde se quiere ir, pero no se sabe cómo; entonces resolver un problema es precisamente aclarar dicha situación y encontrar algún camino adecuado que lleve a la meta. A veces no sabremos si la herramienta adecuada para la situación está entre la colección de técnicas que dominamos o ni siquiera si se ha creado una técnica que pueda ser suficientemente potente para resolver el problema. Esta es precisamente la circunstancia del investigador, en matemáticas y en cualquier otro campo, y, por otra parte, ésta es la situación en la que nos encontramos a veces en nuestra vida normal. Precisamente en el presente trabajo, se trata un problema lógico: El problema de las jarras de agua; y se concibe una solución utilizando herramientas muy potentes como son la programación lógica y los árboles de búsqueda. Para la introducción al tema se ha considerado la teoría más importante y necesaria para entender el modo de resolución del problema: primero un breve repaso por la teoría de grafos para luego usar este concepto en la definición de árbol y cómo es que se aplica en la solución mediante la búsqueda por profundidad y la búsqueda por amplitud. Teniendo ya claros los conceptos básicos, se presenta la descripción del problema y luego la descripción de la solución, finalizando con la presentación del código del programa en lenguaje Prolog que refleja la solución planteada.
  • 5. 5 Marco teórico Capitulo I. Teoría de Grafos y árboles. A. Introducción La Teoría de Grafos juega un papel importante en la fundamentación matemática de las Ciencias de la Computación. Los grafos constituyen una herramienta básica para modelar fenómenos discretos y son fundamentales para la comprensión de las estructuras de datos y el análisis de algoritmos. En matemáticas y ciencias de la computación, la teoría de grafos estudia las propiedades de los grafos, que son colecciones de objetos llamados vértices (o nodos) conectados por líneas llamadas aristas (o arcos) que pueden tener orientación (dirección asignada). Típicamente, un grafo está diseñado por una serie de puntos (los vértices) conectados por líneas (las aristas). B. Definición Un grafo es una pareja G = (V, A), donde V es un conjunto de puntos, llamados vértices, y A es un conjunto de pares de vértices, llamadas aristas. En teoría de grafos, sólo queda lo esencial del dibujo: la forma de las aristas no son relevantes, sólo importa a qué vértices están unidas. La posición de los vértices tampoco importa, y se puede variar para obtener un grafo más claro. C. Elementos Vértices: Son los objetos representados por punto dentro del grafo. Aristas: son las líneas que unen dos vértices. Aristas Adyacentes: dos aristas son adyacentes si convergen sobre el mismo vértice.
  • 6. 6 D. Caracterización de los grafos Grafos simples Un grafo es simple si a lo más existe una arista uniendo dos vértices cualesquiera. Esto es equivalente a decir que una arista cualquiera es la única que une dos vértices específicos. Un grafo que no es simple se denomina multigrafo. Grafos conexos Un grafo es conexo si cada par de vértices está conectado por un camino; es decir, si para cualquier par de vértices (a, b), existe al menos un camino posible desde a hacia b. Un grafo es doblemente conexo si cada par de vértices está conectado por al menos dos caminos disjuntos; es decir, es conexo y no existe un vértice tal que al sacarlo el grafo resultante sea disconexo. Es posible determinar si un grafo es conexo usando un algoritmo Búsqueda en anchura (BFS) o Búsqueda en profundidad (DFS). En términos matemáticos la propiedad de un grafo de ser (fuertemente) conexo permite establecer con base en él una relación de equivalencia para sus vértices, la cual lleva a una partición de éstos en "componentes (fuertemente) conexas", es decir, porciones del grafo, que son (fuertemente) conexas cuando se consideran como grafos aislados. Esta propiedad es importante para muchas demostraciones en teoría de grafos. E. Árbol Sea G un grafo no dirigido. G es un árbol si satisface las siguientes condiciones: ● G es conexo y no tiene ciclos (ciclo es un camino que no repite aristas y llega al mismo vértice inicial) ● G no tiene ciclos y, si se añade alguna arista se forma un ciclo. ● G es conexo y si se le quita alguna arista deja de ser conexo. ● Dos vértices cualesquiera de G están conectados por un único camino simple. Las condiciones anteriores son todas equivalentes, es decir, si se cumple una las demás se cumplirán. Si un árbol G tiene un número finito de vértices, n, entonces tiene n − 1 aristas. En resumen:
  • 7. 7 Un árbol es un grafo en el que cualesquiera dos vértices están conectados por exactamente un camino. F. Árboles en resolución de problemas Mediante los árboles de búsqueda se puede representar todo el espacio de estados para resolver un problema y así todos los caminos posibles desde la raíz hasta las hojas representan una posible solución o un fracaso. Está claro que la forma de hallar las soluciones sería realizando una búsqueda que recorra el árbol.
  • 8. 8 Capitulo II. Búsqueda por Profundidad y Búsqueda por amplitud A. Búsqueda por profundidad: Una búsqueda por profundidad es un algoritmo que permite recorrer todos los nodos de un grafo o árbol de manera ordenada, pero no uniforme. Su funcionamiento consiste en ir expandiendo todos y cada uno de los nodos que va localizado, de forma recurrente, en un camino concreto. Cuando ya no quedan más nodos que visitar en dicho camino, regresa (Backtracking), de modo que repite el mismo proceso con cada uno de los hermanos del nodo ya procesado. B. Búsqueda por amplitud: Una búsqueda por amplitud o anchura es un algoritmo para recorrer o buscar elementos en un grafo. Intuitivamente, se comienza en la raíz (eligiendo algún nodo como elemento raíz en el caso de un grafo) y se exploran todos los vecinos de este nodo. A continuación para cada uno de los vecinos se exploran sus respectivos vecinos adyacentes, y así hasta que se recorra todo el árbol.Formalmente es un algoritmo de búsqueda sin información, que se expande y examina todos los nodos de un árbol sistemáticamente para buscar una solucion. El algoritmo no usa estrategia heurística. Si las aristas tienen pesos negativos aplicaremos el algoritmo de Bellman-Ford en alguna de sus dos versiones.
  • 9. 9
  • 10. 10 Capitulo III. Descripción y Solución del Problema A. Enunciado del problema “Tenemos dos jarras, una de 4 litros de capacidad y otra de 3 litros. Ninguna de ellas tiene marcas que permitan identificar cuánta agua hay en ellas. Existe un grifo que permite llenar las jarras de agua; es posible vaciar el contenido de las jarras; verter el contenido de una en otra. El problema consiste en encontrar una secuencia de movimientos que consiga dejar exactamente 2 litros de agua en la jarra de 4 litros de capacidad.” En este enunciado nos presenta las siguientes propiedades, operaciones y estados que se pueden realizar en las jarras: ● Propiedades: ○ Se refiere al maximo y minimo de cantidades que puede poseer una jarra, hay que entender que como mínimo la cantidad será 0 para ambas jarras y como máximo dependerá de la jarra ● Estados ○ Es la cantidad de litros que posea jarra en un momento dado ● Operaciones: ○ Llenado ○ Vaciado ○ Vertido A su vez se ha decidido añadir algunas restricciones en cuanto a las operaciones, con el fin de evitar caer en bucles o no recorrer nodos innecesarios, entre las restricciones planteadas tenemos: ● No se puede verter a una jarra que esté llena ● No se puede vaciar una jarra vacía ● No se puede llenar una jarra llena ● Solo se llenan jarras vacías
  • 11. 11 B. Descripción Para la solución se usa el árbol búsqueda de Prolog, donde tenemos 6 nodos hijos (de los cuales solo algunos se cumplirán dependiendo del caso). 1. Algoritmo Principal 2. Algoritmo busca
  • 17. 17 C. Código solución Una solución propuesta se ve en el Apéndice A, propuesta para jarras de tres y cinco litros, y la jarra más grande debe llenarse con cuatro litros, usando cierto número de litros de agua, que sirve como delimitador y evita que se caiga en un bucle infinito, pues el vaciado de una jarra no se retorna a los litros de agua disponible. Se ha decidido realizar ciertas modificaciones al algoritmo (Apéndice B), con el fin de generalizar la solución modificando la menor cantidad de lineas de codigo, para eso se añaden tres hechos que son: ● maxJarraGrande ● maxJarraPequena ● litrosObjetivo Se añaden estos hechos para que solo modificando estos se logre cambiar completamente el funcionamiento del algoritmo a diferencia del primero que es necesario cambiar más de tres lineas de codigo para conseguir el objetivo planteado, es decir (jarras de tres y cuatro litros y como objetivo llenar dos litros en la más grande)
  • 18. 18 Conclusiones Se realizó un programa en prolog para solucionar el problema de las jarras bajo el concepto de árboles de búsqueda por profundidad. Se buscó la forma de construir el algoritmo para el programa de la manera más eficiente de tal forma que no recorra caminos innecesario o repita algunos ya descartados Construimos el árbol de manera gráfica para poder demostrar y comprobar el recorrido que tendrá el arbol en el programa.
  • 19. 19 Referencias Bibliográficas ● Wikipedia, Árbol (informática), recuperado el 29/06/2014 http://es.wikipedia.org/wiki/%C3%81rbol_(inform%C3%A1tica) ● Nabor Chirinos, Teoría de grafos, recuperado el 29/06/2014 http://www.slideshare.net/naborchirinos/conceptos-teoria-de-grafos-5778778 ● Wikipedia, Teoría de grafos, recuperado el 29/06/2014 http://es.wikipedia.org/wiki/Teor%C3%ADa_de_grafos ● Wikipedia, Árbol (teoría de grafos), recuperado el 29/06/2014 http://es.wikipedia.org/wiki/%C3%81rbol_(teor%C3%ADa_de_grafos) ● Yarox, Resolución del problema de las jarras en Prolog, recuperado el 29/06/2014 https://gist.github.com/yarox/2829983
  • 20. 20 Anexos Apéndice A. Código en Prolog para el Problema de Jarras de 3 y 5 unidades Descripción: La solución usada es para jarras de 3 y 5 litros, además de usar un limitante (agua disponible)
  • 21. 21
  • 22. 22
  • 23. 23 Apéndice B. Algoritmo Solución para el problema de las Jarras Propuesto
  • 24. 24