SlideShare una empresa de Scribd logo
Universidad Nacional de Trujillo
Facultad de Ciencias Físicas y Matemáticas
Escuela de Ingeniería Informática
Programación Lógica
Problema de las Jarras
Autores:
Castillo Farfan, George Kelvin
Cruz Otiniano, Jose Martin
Fernandez Segura, Joel Cesar
Problema de la Jarras 2014
1
INDICE
Contenido Pág.
1. Introducción ………………………………………………………..… 3
MARCO TEORICO
2. Capítulo I: Importancia ……………………………….…........................ 4
3. Capítulo II: Planteamiento del problema …………………………… 4
4. Capítulo III: Análisis del problema …….………………………..… 5
5. Capítulo IV: Métodos de búsqueda…… …………………………… 6
6. Búsqueda por profundidad…………………………………………… 6
7. Búsqueda por anchura……………………………………………….. 10
8. Capítulo V: Aplicaciones……………… …………………………… 12
9. Capítulo VI: Código de programa……. …………………………… 13
CONCLUSIONES
10. Conclusiones......................................................................................... 15
REFERENCIAS BIBLIOGRAFICAS
11. Bibliografía y Webgrafía…………………............................................. 16
Problema de la Jarras 2014
2
DEDICATORIAS
“Este proyecto está dedicado a las Ciencias de la Computación,
ya que ella es el motivo de nuestro esfuerzo y perseverancia
ardua del día a día.”
“También va dedicado a nuestra familia de cada uno de nuestros
desarrolladores de este proyecto, porque son el motor de nuestra
vida y de luchar en toda circunstancia que nos pone la vida”
Problema de la Jarras 2014
3
1.INTRODUCCION:
Es cierto que la tecnología evoluciona y va cambiando
conforme avanza el tiempo, claro ya es fácil decir que a
menudo los avances tecnológicos nos dejan atónitos con tantas
nuevas cosas que podemos ver y disfrutar hoy en día para que
faciliten nuestra calidad de vida. Pero no se da en todos los
países, regiones o ciudades del mundo, la tecnología puede ir
avanzando pero no está al alcance de todos, he aquí nuestra
problemática que muy pocos saben y no se dan cuenta; en la
parte de la sierra o selva de nuestro país, o pueblos alejados de
las grandes ciudades, nos damos con la sorpresa que aún siguen
habiendo los conocidos trueques y que a veces estos son mal
hechos debido a que no cuentan con un instrumento de medida,
adicionalmente las medidas están en todas las profesiones,
dedicaciones y otros trabajos, como en la agricultura,
construcción, y otros , en este trabajo se hablara sobre las
medidas, ejemplificadas en un problema “El Problema de las
Jarras”, el cual no solo mostraremos la realización sino que es
un caso base que se puede usar en muchas ramas, y
aplicaciones.
Problema de la Jarras 2014
4
2.MARCO TEORICO:
2.1. Capítulo I: Importancia
 Es un problema que ayuda a desarrollar la destreza
intelectual del usuario.
 Al resolver este problema, no solo implica obtener el
resultado, sino comprender la importancia de usar La
Teoría de Grafos y el algoritmo de Recorrido en
Profundidad y Anchura en la solución de los problemas
lógicos y algoritmos actuales, ya que nos permite hacerlo
de forma ordenada y se pueden usar técnicas como el
Back tracking.
2.2. Capitulo II: Planteamiento del Problema
En mediciones existen distintos tipos de medidas, metro,
grados, litros, etc. este trabajo se basará en obtener medidas
en litros, pero no exactamente medir litros de la forma
habitual con medidas en el recipiente, sino que a partir de
dos jarras obtener una cantidad de litros de agua en la jarra
más grande, partiendo de dos jarras las cuales iniciaran
vacías y se irán midiendo y vaciando hasta obtener el
resultado. Para el estudio de este trabajo se realizará un solo
caso de todas las variantes que existen, para esto los puntos
que se plantean a resolver son los siguientes:
Problema de la Jarras 2014
5
 Se tienen dos jarras, una de 4 litros de capacidad y otra
de 3.
 Ninguna de ellas tiene marcas de medición.
 Se tiene una bomba que permite llenar las jarras de
agua.
 Averiguar cómo se puede lograr tener exactamente 2
litros de agua en la jarra de 4 litros de capacidad.
 Enfocar este ejercicio en un área de trabajo como la
agricultura, para ver su importancia y aplicación.
2.3. Capítulo III: Análisis del Problema
2.3.1. Solución Teórica:
1. Llenar la jarra de 4 litros completamente (para
ello, la jarra de 4 litros no debe estar
completamente llena).
2. Llenar la jarra de 3 litros completamente (para
ello, la jarra de 3 litros no debe estar
completamente llena).
3. Vaciar la jarra de 4 litros (para ello, la jarra debe
contener algo de líquido).
4. Vaciar la jarra de 3 litros (para ello, la jarra debe
contener algo de líquido).
5. Verter el contenido de la jarra de 4 litros en la
jarra de 3 litros (para ello, la jarra de 4 litros debe
Problema de la Jarras 2014
6
contener algo de líquido y la de 3 litros no estar
completamente llena).
6. Verter el contenido de la jarra de 3 litros en la
jarra de 4 litros (para ello, la jarra de 3 litros debe
contener algo de líquido y la de 4 litros no estar
completamente llena).
2.3.2. Herramientas a Utilizar:
Para este programa se utilizará el lenguaje de
programación PROLOG, se utilizará dos técnicas de
métodos de búsqueda: Búsqueda en profundidad y
búsqueda en anchura.
2.4. Capítulo IV: Métodos de Búsqueda
2.4.1. Búsqueda por Profundidad
La búsqueda en profundidad, llamada
DepthFirstSearch 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
Problema de la Jarras 2014
7
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:
En cada llamada recursiva marcaremos el nodo actual
como visitado y luego verificamos si es el nodo
buscado para salir de la recursión, este será nuestro
caso base. De no ser el nodo requerido, se hace la
llamada recursiva con todos los nodos hijos del nodo
actual, pero en este caso, a diferencia del recorrido
BFS, no se visitarán todos los hijos de forma
consecutiva, sino que el algoritmo recorrerá en
profundidad hasta llegar a un nodo extremo o nodo
hoja, antes de retornar al ambiente de recursión en
donde se encuentran los otros nodos hijos.
El orden en que se eligen las ramas en un recorrido
DFS está determinado por el tipo de recorrido de
Problema de la Jarras 2014
8
procesamiento de árbol que se haya elegido, estos
pueden ser:
 Pre-orden: Se procesa primero la raíz, luego la rama
izquierda y luego las ramas siguientes hasta llegar a la
que se encuentra más a la derecha.
 Post-orden: Se procesa el árbol desde las ramas
izquierdas hasta la que se encuentra más a la derecha.
Finalmente se procesa el nodo raíz
 Simétrico o In-orden: Se procesa la rama de la
izquierda, luego el nodo raíz y luego la rama derecha.
En este caso el recorrido es Pre-orden.
• Aplicado al caso del Problema de las jarras:
En el caso del problema de las jarras, se genera el
siguiente grafo de búsqueda en profundidad:
Problema de la Jarras 2014
9
Este grafo de búsqueda por profundidad nos denota la
siguiente tabla de búsqueda en profundidad:
• Estados de la solución:
Problema de la Jarras 2014
10
((2 3) (4 1) (0 1) (1 0) (1 3) (4 0) (0 0))
2.4.2. Búsqueda por Anchura
La búsqueda en anchura (o búsqueda en amplitud),
llamada BreadthFirstSearch en inglés, es un algoritmo
usado para recorrer o buscar elementos en una
estructura de datos como los árboles y los grafos.
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):
De modo que lo primero que hará será visitar la raíz,
luego los hijos de la raíz, luego los hijos de cada uno
de estos hijos y así sucesivamente.
Problema de la Jarras 2014
11
• Aplicado al caso del Problema de las jarras:
En el caso del problema de las jarras, se genera el
siguiente grafo de búsqueda en anchura:
Este grafo de búsqueda por anchura nos denota la
siguiente tabla de búsqueda en anchura:
Problema de la Jarras 2014
12
2.5. Capítulo V: Aplicaciones
En la vida real este tema tiene varias aplicaciones, las cuales
usarlas ayudaría a mejorar mucho distintas ocupaciones y trabajos
de las personas, en este apartado mencionaremos algunos
ejemplos de aplicaciones de las jarras de agua:
En la Ganadería:
En la sierra, la tecnología no llega tan rápidamente como en la
costa, de manera que no hay muchos implementos y medidas, las
jarras de agua seria un ejemplo de aplicación en la medicación y
dosificación de animales, ya que al usar medicamentos sabemos
que no todos los animales tienen el mismo peso y tamaño
entonces con el problema de las jarras de agua podríamos
establecer medidas exactas a partir de 2 jarras.
Problema de la Jarras 2014
13
En la Agricultura:
Exactamente de la sierra, toma un papel muy importante en
nuestra alimentación, ya que la mayoría de productos, proviene de
esta región, con las lluvias acidas y heladas, las plantas sufren
muchos daños, para esto el agricultor debe de utilizar una dosis
exacta para poder mantener estas plantas y así puedan llegar a
nuestra casa, entonces el problema de las jarras logra establecer
cantidades exactas de medicamento de plantas. Adicionalmente
las plantas son fertilizadas para producir cantidades de frutos,
entonces para poder fertilizarlas es necesario usar el riego como
medio de distribución, al agricultor le dan una medida estañar por
cierta cantidad de tierra, y de acuerdo a eso el medicamento, que
es liquido deberá ser distribuido exactamente para poder
aprovechar su función y no distribuir una cantidad baja o una
cantidad alta.
En el Acuarismo:
El Acuarismo es un mundo muy amplio, y este va desde las
empresas que se dedican a criar peces para venta, hasta un
acuario en una casa cualquiera, como sabemos los peces también
necesitan una dosis de medicamento el cual sirve para eliminar
hongos y también para mantenerlos saludables, y en el caso de la
crianza de peces para venta puedan ser aprovechados para tener
un animal de calidad y de buena salud, aquí también se usaría el
Problema de la Jarras 2014
14
problema de las jarras pues nos daría una cantidad exacta de
medicamento para cierta cantidad de agua de los peces.
2.6. Capítulo VI: Código del Programa
% El estado de las jarras se representa con una lista [J3, J4] que
% indica el contenido de la jarra de 3 litros, primero, y el
% contenido de la jarra de 4 litros después.
% El objetivo es dejar 2 litros en la jarra de 4 litros.
% Lo que tenga la jarra de 3 litros es indiferente.
meta([_,2]).
% Las operaciones permitidas son:
% vaciar la de 4 litros y la de 3 litros
operacion(vaciar_4, [J3,_], [J3,0]).
operacion(vaciar_3, [_,J4], [0,J4]).
% llenar la de 4 litros y la de 3 litros
operacion(llenar_4, [J3,_], [J3,4]).
operacion(llenar_3, [_,J4], [3,J4]).
% verter la de 4 litros en la de 3 litros
operacion(verter_4_en_3, [J3,J4], [NJ3,0]):-
Cantidad is 3-J3,
Cantidad >= J4,
NJ3 is J3+J4.
operacion(verter_4_en_3, [J3,J4], [3,NJ4]):-
Cantidad is 3-J3,
Cantidad < J4,
NJ4 is J4-Cantidad.
Problema de la Jarras 2014
15
% verter la de 3 litros en la de 4 litros
operacion(verter_3_en_4, [J3,J4], [0,NJ4]):-
Cantidad is 4-J4,
Cantidad >= J3,
NJ4 is J3+J4.
operacion(verter_3_en_4, [J3,J4], [NJ3,4]):-
Cantidad is 4-J4,
Cantidad < J3,
NJ3 is J3-Cantidad.
% Buscar las soluciones. La búsqueda se hace por niveles.
% Es decir, el árbol de búsqueda se recorre en anchura.
% La llamada inicial debe ser buscar_solucion([0,0], L, 6).
% o bien una profundidad mayor que 6
buscar_solucion(EstadoInicial, [], Pasos):-
Pasos >= 0,
meta(EstadoInicial).
buscar_solucion(EstadoInicial, [X|RX], Pasos):-
Pasos > 0,
operacion(X, EstadoInicial, EstadoNuevo),
NPasosis Pasos-1,
buscar_solucion(EstadoNuevo, RX, NPasos).
3.CONCLUSIONES
a) Las estrategias de búsquedas vistas en esta unidad nos
dan una idea de cómo los investigadores en IA proponen
diferentes formas de solución para los problemas. Estas
técnicas son clásicas de la IA y es por ello que deben ser
Problema de la Jarras 2014
16
conocidas por todos aquellos que están relacionados con
programación de soluciones por computadora.
b) El mundo real es más complejo de lo que se formula en
los problemas para solucionar por computadora, sin
embargo asumimos que los seres humanos para encontrar
soluciones tampoco requieren de mucha información, o al
menos no requiere conocer todo el universo para
encontrar soluciones buenas.
c) Mediante la realización del trabajo se usó la
programación lógica para llevar a cabo un programa que
ayuda a desarrollar las destrezas mentales.
d) Se logró ver la forma de aplicación de este problema de
medición en distintas áreas como la agricultura,
ganadería y acuarismo.
4.BIBLIOGRAFIA
 Russell, S. y Norvig, P. Inteligencia Artificial: Un enfoque
moderno (segunda edición) (Prentice Hall, 2004).
Cap. 3: “Solución de problemas mediante búsqueda”
 http://www.cs.us.es/~jalonso/cursos/ia1-99/temas/tema-
03.pdf
 http://www.widget-101.com/codigo/algoritmos-de-
busqueda-en-anchura-bfs-y-busqueda-en-profundidad-dfs/
Problema de la Jarras 2014
17
 Inteligencia Artificial Un Enfoque Moderno, 2° Edición,
Russell y Norvig
 http://www.unistmo.edu.mx/~daniel.garcia/unidadiii_ia.pdf

Más contenido relacionado

La actualidad más candente

Lema de bombeo
Lema de bombeoLema de bombeo
Lema de bombeo
Omega Tech
 
Problema de la ocho reinas. Implementación en Prolog.
Problema de la ocho reinas. Implementación en Prolog.Problema de la ocho reinas. Implementación en Prolog.
Problema de la ocho reinas. Implementación en Prolog.
Mayra Villanueva
 
Requerimientos funcionales y no funcionales de la aplicación
Requerimientos funcionales y no funcionales de la aplicaciónRequerimientos funcionales y no funcionales de la aplicación
Requerimientos funcionales y no funcionales de la aplicación
Yare LoZada
 

La actualidad más candente (20)

Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..
 
Lema de bombeo
Lema de bombeoLema de bombeo
Lema de bombeo
 
Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
Procesos e Hilos en los Sistemas Operativos
Procesos e Hilos en los Sistemas OperativosProcesos e Hilos en los Sistemas Operativos
Procesos e Hilos en los Sistemas Operativos
 
Recursividad
RecursividadRecursividad
Recursividad
 
Recursividad directa e indirecta
Recursividad directa e indirectaRecursividad directa e indirecta
Recursividad directa e indirecta
 
Problema de la ocho reinas. Implementación en Prolog.
Problema de la ocho reinas. Implementación en Prolog.Problema de la ocho reinas. Implementación en Prolog.
Problema de la ocho reinas. Implementación en Prolog.
 
Programación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosProgramación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenados
 
Ejercicios de búsqueda a Ciegas y Búsqueda informada
Ejercicios de búsqueda a Ciegas y Búsqueda informadaEjercicios de búsqueda a Ciegas y Búsqueda informada
Ejercicios de búsqueda a Ciegas y Búsqueda informada
 
Recursividad
RecursividadRecursividad
Recursividad
 
Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificación
 
Requerimientos funcionales y no funcionales de la aplicación
Requerimientos funcionales y no funcionales de la aplicaciónRequerimientos funcionales y no funcionales de la aplicación
Requerimientos funcionales y no funcionales de la aplicación
 
Monitores-sistemas operativos
Monitores-sistemas operativosMonitores-sistemas operativos
Monitores-sistemas operativos
 
Listas doblemente enlazadas
Listas doblemente enlazadasListas doblemente enlazadas
Listas doblemente enlazadas
 
Modelo de entidad relación extendido
Modelo de entidad relación extendidoModelo de entidad relación extendido
Modelo de entidad relación extendido
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
Ejercicios
EjerciciosEjercicios
Ejercicios
 

Destacado (8)

Formas de representar el conocimiento
Formas de representar el conocimientoFormas de representar el conocimiento
Formas de representar el conocimiento
 
Formulacion estrategica de problemas mg
Formulacion estrategica de problemas mgFormulacion estrategica de problemas mg
Formulacion estrategica de problemas mg
 
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
 
Formas de representacion del conocimiento
Formas de representacion del conocimientoFormas de representacion del conocimiento
Formas de representacion del conocimiento
 
Ejercicios c#
Ejercicios c#Ejercicios c#
Ejercicios c#
 
Redes semánticas
Redes semánticasRedes semánticas
Redes semánticas
 
RAZONAMIENTO LOGICO Verdades y mentiras EUREKA
RAZONAMIENTO LOGICO Verdades y mentiras EUREKARAZONAMIENTO LOGICO Verdades y mentiras EUREKA
RAZONAMIENTO LOGICO Verdades y mentiras EUREKA
 
Ejercicios Resueltos LEVIN
Ejercicios Resueltos LEVINEjercicios Resueltos LEVIN
Ejercicios Resueltos LEVIN
 

Similar a Problema de las jarras

Metodologia para el analisis y planteamiento del problema
Metodologia para el analisis y planteamiento del problemaMetodologia para el analisis y planteamiento del problema
Metodologia para el analisis y planteamiento del problema
yenmary
 
Taller para el desarrollo de las funciones ejecutivas.
Taller para el desarrollo de las funciones ejecutivas. Taller para el desarrollo de las funciones ejecutivas.
Taller para el desarrollo de las funciones ejecutivas.
Ktaandrea EloLeo
 

Similar a Problema de las jarras (20)

Problema de las 8 reinas
Problema de las 8 reinasProblema de las 8 reinas
Problema de las 8 reinas
 
Rc pilar monroy
Rc pilar monroyRc pilar monroy
Rc pilar monroy
 
Solucionar problemas por medio de algoritmos
Solucionar problemas por medio de algoritmosSolucionar problemas por medio de algoritmos
Solucionar problemas por medio de algoritmos
 
Algoritmosprogramacioncuaderno1
Algoritmosprogramacioncuaderno1Algoritmosprogramacioncuaderno1
Algoritmosprogramacioncuaderno1
 
Solucionar problemas-por-medio-de-algoritmo
Solucionar problemas-por-medio-de-algoritmoSolucionar problemas-por-medio-de-algoritmo
Solucionar problemas-por-medio-de-algoritmo
 
Solucionar problemas-por-medio-de-algoritmo
Solucionar problemas-por-medio-de-algoritmoSolucionar problemas-por-medio-de-algoritmo
Solucionar problemas-por-medio-de-algoritmo
 
Rc dariel rios
Rc dariel riosRc dariel rios
Rc dariel rios
 
TALLER DESARROLLO DE HABILIDADES DE PENSAMIENTO.docx
TALLER DESARROLLO DE HABILIDADES DE PENSAMIENTO.docxTALLER DESARROLLO DE HABILIDADES DE PENSAMIENTO.docx
TALLER DESARROLLO DE HABILIDADES DE PENSAMIENTO.docx
 
TALLER DESARROLLO DE HABILIDADES DE PENSAMIENTO.docx
TALLER DESARROLLO DE HABILIDADES DE PENSAMIENTO.docxTALLER DESARROLLO DE HABILIDADES DE PENSAMIENTO.docx
TALLER DESARROLLO DE HABILIDADES DE PENSAMIENTO.docx
 
TALLER DESARROLLO DE HABILIDADES DE PENSAMIENTO.docx
TALLER DESARROLLO DE HABILIDADES DE PENSAMIENTO.docxTALLER DESARROLLO DE HABILIDADES DE PENSAMIENTO.docx
TALLER DESARROLLO DE HABILIDADES DE PENSAMIENTO.docx
 
TALLER DESARROLLO DE HABILIDADES DE PENSAMIENTO.docx
TALLER DESARROLLO DE HABILIDADES DE PENSAMIENTO.docxTALLER DESARROLLO DE HABILIDADES DE PENSAMIENTO.docx
TALLER DESARROLLO DE HABILIDADES DE PENSAMIENTO.docx
 
Actividad 08 ok (1)
Actividad 08 ok (1)Actividad 08 ok (1)
Actividad 08 ok (1)
 
Partes de las plantas
Partes de las plantasPartes de las plantas
Partes de las plantas
 
Algoritmos+y+solucion+de+problemas
Algoritmos+y+solucion+de+problemasAlgoritmos+y+solucion+de+problemas
Algoritmos+y+solucion+de+problemas
 
MANUAL DIDÁCTICO PARA LA ELABORACIÓN DEL PLAN DE DISERTACIÓN
MANUAL DIDÁCTICO PARA LA ELABORACIÓN DEL PLAN DE DISERTACIÓNMANUAL DIDÁCTICO PARA LA ELABORACIÓN DEL PLAN DE DISERTACIÓN
MANUAL DIDÁCTICO PARA LA ELABORACIÓN DEL PLAN DE DISERTACIÓN
 
Metodologia para el analisis y planteamiento del problema
Metodologia para el analisis y planteamiento del problemaMetodologia para el analisis y planteamiento del problema
Metodologia para el analisis y planteamiento del problema
 
Dossier alumnado funciones ejecutivas
Dossier alumnado funciones ejecutivasDossier alumnado funciones ejecutivas
Dossier alumnado funciones ejecutivas
 
Taller para el desarrollo de las funciones ejecutivas.
Taller para el desarrollo de las funciones ejecutivas. Taller para el desarrollo de las funciones ejecutivas.
Taller para el desarrollo de las funciones ejecutivas.
 
webquest.Trabajando con sistemas
webquest.Trabajando con sistemaswebquest.Trabajando con sistemas
webquest.Trabajando con sistemas
 
taller 1.pdf
taller 1.pdftaller 1.pdf
taller 1.pdf
 

Problema de las jarras

  • 1. Universidad Nacional de Trujillo Facultad de Ciencias Físicas y Matemáticas Escuela de Ingeniería Informática Programación Lógica Problema de las Jarras Autores: Castillo Farfan, George Kelvin Cruz Otiniano, Jose Martin Fernandez Segura, Joel Cesar
  • 2. Problema de la Jarras 2014 1 INDICE Contenido Pág. 1. Introducción ………………………………………………………..… 3 MARCO TEORICO 2. Capítulo I: Importancia ……………………………….…........................ 4 3. Capítulo II: Planteamiento del problema …………………………… 4 4. Capítulo III: Análisis del problema …….………………………..… 5 5. Capítulo IV: Métodos de búsqueda…… …………………………… 6 6. Búsqueda por profundidad…………………………………………… 6 7. Búsqueda por anchura……………………………………………….. 10 8. Capítulo V: Aplicaciones……………… …………………………… 12 9. Capítulo VI: Código de programa……. …………………………… 13 CONCLUSIONES 10. Conclusiones......................................................................................... 15 REFERENCIAS BIBLIOGRAFICAS 11. Bibliografía y Webgrafía…………………............................................. 16
  • 3. Problema de la Jarras 2014 2 DEDICATORIAS “Este proyecto está dedicado a las Ciencias de la Computación, ya que ella es el motivo de nuestro esfuerzo y perseverancia ardua del día a día.” “También va dedicado a nuestra familia de cada uno de nuestros desarrolladores de este proyecto, porque son el motor de nuestra vida y de luchar en toda circunstancia que nos pone la vida”
  • 4. Problema de la Jarras 2014 3 1.INTRODUCCION: Es cierto que la tecnología evoluciona y va cambiando conforme avanza el tiempo, claro ya es fácil decir que a menudo los avances tecnológicos nos dejan atónitos con tantas nuevas cosas que podemos ver y disfrutar hoy en día para que faciliten nuestra calidad de vida. Pero no se da en todos los países, regiones o ciudades del mundo, la tecnología puede ir avanzando pero no está al alcance de todos, he aquí nuestra problemática que muy pocos saben y no se dan cuenta; en la parte de la sierra o selva de nuestro país, o pueblos alejados de las grandes ciudades, nos damos con la sorpresa que aún siguen habiendo los conocidos trueques y que a veces estos son mal hechos debido a que no cuentan con un instrumento de medida, adicionalmente las medidas están en todas las profesiones, dedicaciones y otros trabajos, como en la agricultura, construcción, y otros , en este trabajo se hablara sobre las medidas, ejemplificadas en un problema “El Problema de las Jarras”, el cual no solo mostraremos la realización sino que es un caso base que se puede usar en muchas ramas, y aplicaciones.
  • 5. Problema de la Jarras 2014 4 2.MARCO TEORICO: 2.1. Capítulo I: Importancia  Es un problema que ayuda a desarrollar la destreza intelectual del usuario.  Al resolver este problema, no solo implica obtener el resultado, sino comprender la importancia de usar La Teoría de Grafos y el algoritmo de Recorrido en Profundidad y Anchura en la solución de los problemas lógicos y algoritmos actuales, ya que nos permite hacerlo de forma ordenada y se pueden usar técnicas como el Back tracking. 2.2. Capitulo II: Planteamiento del Problema En mediciones existen distintos tipos de medidas, metro, grados, litros, etc. este trabajo se basará en obtener medidas en litros, pero no exactamente medir litros de la forma habitual con medidas en el recipiente, sino que a partir de dos jarras obtener una cantidad de litros de agua en la jarra más grande, partiendo de dos jarras las cuales iniciaran vacías y se irán midiendo y vaciando hasta obtener el resultado. Para el estudio de este trabajo se realizará un solo caso de todas las variantes que existen, para esto los puntos que se plantean a resolver son los siguientes:
  • 6. Problema de la Jarras 2014 5  Se tienen dos jarras, una de 4 litros de capacidad y otra de 3.  Ninguna de ellas tiene marcas de medición.  Se tiene una bomba que permite llenar las jarras de agua.  Averiguar cómo se puede lograr tener exactamente 2 litros de agua en la jarra de 4 litros de capacidad.  Enfocar este ejercicio en un área de trabajo como la agricultura, para ver su importancia y aplicación. 2.3. Capítulo III: Análisis del Problema 2.3.1. Solución Teórica: 1. Llenar la jarra de 4 litros completamente (para ello, la jarra de 4 litros no debe estar completamente llena). 2. Llenar la jarra de 3 litros completamente (para ello, la jarra de 3 litros no debe estar completamente llena). 3. Vaciar la jarra de 4 litros (para ello, la jarra debe contener algo de líquido). 4. Vaciar la jarra de 3 litros (para ello, la jarra debe contener algo de líquido). 5. Verter el contenido de la jarra de 4 litros en la jarra de 3 litros (para ello, la jarra de 4 litros debe
  • 7. Problema de la Jarras 2014 6 contener algo de líquido y la de 3 litros no estar completamente llena). 6. Verter el contenido de la jarra de 3 litros en la jarra de 4 litros (para ello, la jarra de 3 litros debe contener algo de líquido y la de 4 litros no estar completamente llena). 2.3.2. Herramientas a Utilizar: Para este programa se utilizará el lenguaje de programación PROLOG, se utilizará dos técnicas de métodos de búsqueda: Búsqueda en profundidad y búsqueda en anchura. 2.4. Capítulo IV: Métodos de Búsqueda 2.4.1. Búsqueda por Profundidad La búsqueda en profundidad, llamada DepthFirstSearch 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
  • 8. Problema de la Jarras 2014 7 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: En cada llamada recursiva marcaremos el nodo actual como visitado y luego verificamos si es el nodo buscado para salir de la recursión, este será nuestro caso base. De no ser el nodo requerido, se hace la llamada recursiva con todos los nodos hijos del nodo actual, pero en este caso, a diferencia del recorrido BFS, no se visitarán todos los hijos de forma consecutiva, sino que el algoritmo recorrerá en profundidad hasta llegar a un nodo extremo o nodo hoja, antes de retornar al ambiente de recursión en donde se encuentran los otros nodos hijos. El orden en que se eligen las ramas en un recorrido DFS está determinado por el tipo de recorrido de
  • 9. Problema de la Jarras 2014 8 procesamiento de árbol que se haya elegido, estos pueden ser:  Pre-orden: Se procesa primero la raíz, luego la rama izquierda y luego las ramas siguientes hasta llegar a la que se encuentra más a la derecha.  Post-orden: Se procesa el árbol desde las ramas izquierdas hasta la que se encuentra más a la derecha. Finalmente se procesa el nodo raíz  Simétrico o In-orden: Se procesa la rama de la izquierda, luego el nodo raíz y luego la rama derecha. En este caso el recorrido es Pre-orden. • Aplicado al caso del Problema de las jarras: En el caso del problema de las jarras, se genera el siguiente grafo de búsqueda en profundidad:
  • 10. Problema de la Jarras 2014 9 Este grafo de búsqueda por profundidad nos denota la siguiente tabla de búsqueda en profundidad: • Estados de la solución:
  • 11. Problema de la Jarras 2014 10 ((2 3) (4 1) (0 1) (1 0) (1 3) (4 0) (0 0)) 2.4.2. Búsqueda por Anchura La búsqueda en anchura (o búsqueda en amplitud), llamada BreadthFirstSearch en inglés, es un algoritmo usado para recorrer o buscar elementos en una estructura de datos como los árboles y los grafos. 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): De modo que lo primero que hará será visitar la raíz, luego los hijos de la raíz, luego los hijos de cada uno de estos hijos y así sucesivamente.
  • 12. Problema de la Jarras 2014 11 • Aplicado al caso del Problema de las jarras: En el caso del problema de las jarras, se genera el siguiente grafo de búsqueda en anchura: Este grafo de búsqueda por anchura nos denota la siguiente tabla de búsqueda en anchura:
  • 13. Problema de la Jarras 2014 12 2.5. Capítulo V: Aplicaciones En la vida real este tema tiene varias aplicaciones, las cuales usarlas ayudaría a mejorar mucho distintas ocupaciones y trabajos de las personas, en este apartado mencionaremos algunos ejemplos de aplicaciones de las jarras de agua: En la Ganadería: En la sierra, la tecnología no llega tan rápidamente como en la costa, de manera que no hay muchos implementos y medidas, las jarras de agua seria un ejemplo de aplicación en la medicación y dosificación de animales, ya que al usar medicamentos sabemos que no todos los animales tienen el mismo peso y tamaño entonces con el problema de las jarras de agua podríamos establecer medidas exactas a partir de 2 jarras.
  • 14. Problema de la Jarras 2014 13 En la Agricultura: Exactamente de la sierra, toma un papel muy importante en nuestra alimentación, ya que la mayoría de productos, proviene de esta región, con las lluvias acidas y heladas, las plantas sufren muchos daños, para esto el agricultor debe de utilizar una dosis exacta para poder mantener estas plantas y así puedan llegar a nuestra casa, entonces el problema de las jarras logra establecer cantidades exactas de medicamento de plantas. Adicionalmente las plantas son fertilizadas para producir cantidades de frutos, entonces para poder fertilizarlas es necesario usar el riego como medio de distribución, al agricultor le dan una medida estañar por cierta cantidad de tierra, y de acuerdo a eso el medicamento, que es liquido deberá ser distribuido exactamente para poder aprovechar su función y no distribuir una cantidad baja o una cantidad alta. En el Acuarismo: El Acuarismo es un mundo muy amplio, y este va desde las empresas que se dedican a criar peces para venta, hasta un acuario en una casa cualquiera, como sabemos los peces también necesitan una dosis de medicamento el cual sirve para eliminar hongos y también para mantenerlos saludables, y en el caso de la crianza de peces para venta puedan ser aprovechados para tener un animal de calidad y de buena salud, aquí también se usaría el
  • 15. Problema de la Jarras 2014 14 problema de las jarras pues nos daría una cantidad exacta de medicamento para cierta cantidad de agua de los peces. 2.6. Capítulo VI: Código del Programa % El estado de las jarras se representa con una lista [J3, J4] que % indica el contenido de la jarra de 3 litros, primero, y el % contenido de la jarra de 4 litros después. % El objetivo es dejar 2 litros en la jarra de 4 litros. % Lo que tenga la jarra de 3 litros es indiferente. meta([_,2]). % Las operaciones permitidas son: % vaciar la de 4 litros y la de 3 litros operacion(vaciar_4, [J3,_], [J3,0]). operacion(vaciar_3, [_,J4], [0,J4]). % llenar la de 4 litros y la de 3 litros operacion(llenar_4, [J3,_], [J3,4]). operacion(llenar_3, [_,J4], [3,J4]). % verter la de 4 litros en la de 3 litros operacion(verter_4_en_3, [J3,J4], [NJ3,0]):- Cantidad is 3-J3, Cantidad >= J4, NJ3 is J3+J4. operacion(verter_4_en_3, [J3,J4], [3,NJ4]):- Cantidad is 3-J3, Cantidad < J4, NJ4 is J4-Cantidad.
  • 16. Problema de la Jarras 2014 15 % verter la de 3 litros en la de 4 litros operacion(verter_3_en_4, [J3,J4], [0,NJ4]):- Cantidad is 4-J4, Cantidad >= J3, NJ4 is J3+J4. operacion(verter_3_en_4, [J3,J4], [NJ3,4]):- Cantidad is 4-J4, Cantidad < J3, NJ3 is J3-Cantidad. % Buscar las soluciones. La búsqueda se hace por niveles. % Es decir, el árbol de búsqueda se recorre en anchura. % La llamada inicial debe ser buscar_solucion([0,0], L, 6). % o bien una profundidad mayor que 6 buscar_solucion(EstadoInicial, [], Pasos):- Pasos >= 0, meta(EstadoInicial). buscar_solucion(EstadoInicial, [X|RX], Pasos):- Pasos > 0, operacion(X, EstadoInicial, EstadoNuevo), NPasosis Pasos-1, buscar_solucion(EstadoNuevo, RX, NPasos). 3.CONCLUSIONES a) Las estrategias de búsquedas vistas en esta unidad nos dan una idea de cómo los investigadores en IA proponen diferentes formas de solución para los problemas. Estas técnicas son clásicas de la IA y es por ello que deben ser
  • 17. Problema de la Jarras 2014 16 conocidas por todos aquellos que están relacionados con programación de soluciones por computadora. b) El mundo real es más complejo de lo que se formula en los problemas para solucionar por computadora, sin embargo asumimos que los seres humanos para encontrar soluciones tampoco requieren de mucha información, o al menos no requiere conocer todo el universo para encontrar soluciones buenas. c) Mediante la realización del trabajo se usó la programación lógica para llevar a cabo un programa que ayuda a desarrollar las destrezas mentales. d) Se logró ver la forma de aplicación de este problema de medición en distintas áreas como la agricultura, ganadería y acuarismo. 4.BIBLIOGRAFIA  Russell, S. y Norvig, P. Inteligencia Artificial: Un enfoque moderno (segunda edición) (Prentice Hall, 2004). Cap. 3: “Solución de problemas mediante búsqueda”  http://www.cs.us.es/~jalonso/cursos/ia1-99/temas/tema- 03.pdf  http://www.widget-101.com/codigo/algoritmos-de- busqueda-en-anchura-bfs-y-busqueda-en-profundidad-dfs/
  • 18. Problema de la Jarras 2014 17  Inteligencia Artificial Un Enfoque Moderno, 2° Edición, Russell y Norvig  http://www.unistmo.edu.mx/~daniel.garcia/unidadiii_ia.pdf