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

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
 
3. conceptos de calidad del software
3. conceptos de calidad del software3. conceptos de calidad del software
3. conceptos de calidad del softwareJuan Pablo Carvallo
 
RED NEURONAL Backpropagation
RED NEURONAL BackpropagationRED NEURONAL Backpropagation
RED NEURONAL BackpropagationESCOM
 
Varios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióNVarios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióNSalvador Fernández Fernández
 
Algoritmo de dijkstra
Algoritmo de dijkstraAlgoritmo de dijkstra
Algoritmo de dijkstraKeily Solano
 
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
 
Estrategias De BúSqueda No Informada
Estrategias De BúSqueda No InformadaEstrategias De BúSqueda No Informada
Estrategias De BúSqueda No InformadaDiana
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discretaJunior Soto
 
Ejercicio de máquina de turing
Ejercicio de máquina de turingEjercicio de máquina de turing
Ejercicio de máquina de turingJonathan Bastidas
 
Unidad No. 5 - Agentes Inteligentes
Unidad No. 5 - Agentes InteligentesUnidad No. 5 - Agentes Inteligentes
Unidad No. 5 - Agentes InteligentesMilton Klapp
 
APRENDIZAJE SUPERVISADO Y APRENDIZAJE NO SUPERVISADO
APRENDIZAJE SUPERVISADO Y APRENDIZAJE NO SUPERVISADOAPRENDIZAJE SUPERVISADO Y APRENDIZAJE NO SUPERVISADO
APRENDIZAJE SUPERVISADO Y APRENDIZAJE NO SUPERVISADOsystemprisoners
 
2.5.3 Algoritmo de Dijkstra.pptx
2.5.3 Algoritmo de Dijkstra.pptx2.5.3 Algoritmo de Dijkstra.pptx
2.5.3 Algoritmo de Dijkstra.pptxFernando Solis
 
Ingeniería de requisitos e ingeniería de requerimientos
Ingeniería de requisitos e ingeniería de requerimientosIngeniería de requisitos e ingeniería de requerimientos
Ingeniería de requisitos e ingeniería de requerimientosCesar Prado
 
Representacion del Conocimiento Inteligencia Artificial
Representacion del Conocimiento Inteligencia ArtificialRepresentacion del Conocimiento Inteligencia Artificial
Representacion del Conocimiento Inteligencia Artificialjorgeescalona2387
 

La actualidad más candente (20)

Abd procesamiento consultas (parte1)
Abd procesamiento consultas (parte1)Abd procesamiento consultas (parte1)
Abd procesamiento consultas (parte1)
 
Ley de amdahl
Ley de amdahlLey de amdahl
Ley de amdahl
 
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
 
3. conceptos de calidad del software
3. conceptos de calidad del software3. conceptos de calidad del software
3. conceptos de calidad del software
 
RED NEURONAL Backpropagation
RED NEURONAL BackpropagationRED NEURONAL Backpropagation
RED NEURONAL Backpropagation
 
Varios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióNVarios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióN
 
Algoritmo de dijkstra
Algoritmo de dijkstraAlgoritmo de dijkstra
Algoritmo de dijkstra
 
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
 
Estrategias De BúSqueda No Informada
Estrategias De BúSqueda No InformadaEstrategias De BúSqueda No Informada
Estrategias De BúSqueda No Informada
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discreta
 
Problema 8 puzzle
Problema 8 puzzleProblema 8 puzzle
Problema 8 puzzle
 
Ejercicio de máquina de turing
Ejercicio de máquina de turingEjercicio de máquina de turing
Ejercicio de máquina de turing
 
Técnicas de representación del conocimiento
Técnicas de representación del conocimientoTécnicas de representación del conocimiento
Técnicas de representación del conocimiento
 
Dijkstra
DijkstraDijkstra
Dijkstra
 
Unidad No. 5 - Agentes Inteligentes
Unidad No. 5 - Agentes InteligentesUnidad No. 5 - Agentes Inteligentes
Unidad No. 5 - Agentes Inteligentes
 
APRENDIZAJE SUPERVISADO Y APRENDIZAJE NO SUPERVISADO
APRENDIZAJE SUPERVISADO Y APRENDIZAJE NO SUPERVISADOAPRENDIZAJE SUPERVISADO Y APRENDIZAJE NO SUPERVISADO
APRENDIZAJE SUPERVISADO Y APRENDIZAJE NO SUPERVISADO
 
2.5.3 Algoritmo de Dijkstra.pptx
2.5.3 Algoritmo de Dijkstra.pptx2.5.3 Algoritmo de Dijkstra.pptx
2.5.3 Algoritmo de Dijkstra.pptx
 
Ingeniería de requisitos e ingeniería de requerimientos
Ingeniería de requisitos e ingeniería de requerimientosIngeniería de requisitos e ingeniería de requerimientos
Ingeniería de requisitos e ingeniería de requerimientos
 
Representacion del Conocimiento Inteligencia Artificial
Representacion del Conocimiento Inteligencia ArtificialRepresentacion del Conocimiento Inteligencia Artificial
Representacion del Conocimiento Inteligencia Artificial
 
Metodo escalada
Metodo escaladaMetodo escalada
Metodo escalada
 

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

Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdfFernandaGarca788912
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
Curso Análisis Fisicoquímico y Microbiológico de Aguas -EAI - SESIÓN 5.pdf
Curso Análisis Fisicoquímico y Microbiológico de Aguas -EAI - SESIÓN 5.pdfCurso Análisis Fisicoquímico y Microbiológico de Aguas -EAI - SESIÓN 5.pdf
Curso Análisis Fisicoquímico y Microbiológico de Aguas -EAI - SESIÓN 5.pdfcesar17lavictoria
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7luisanthonycarrascos
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptEduardoCorado
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfyoseka196
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacajeremiasnifla
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
Falla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralFalla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralsantirangelcor
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxEverardoRuiz8
 
presentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctricopresentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctricoalexcala5
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfDanielaVelasquez553560
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdfvictoralejandroayala2
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 

Último (20)

Curso intensivo de soldadura electrónica en pdf
Curso intensivo de soldadura electrónica  en pdfCurso intensivo de soldadura electrónica  en pdf
Curso intensivo de soldadura electrónica en pdf
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
Curso Análisis Fisicoquímico y Microbiológico de Aguas -EAI - SESIÓN 5.pdf
Curso Análisis Fisicoquímico y Microbiológico de Aguas -EAI - SESIÓN 5.pdfCurso Análisis Fisicoquímico y Microbiológico de Aguas -EAI - SESIÓN 5.pdf
Curso Análisis Fisicoquímico y Microbiológico de Aguas -EAI - SESIÓN 5.pdf
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.ppt
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdf
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpaca
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
Falla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralFalla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integral
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptx
 
presentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctricopresentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctrico
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptx
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdf
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdf
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdfVALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
 

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