View
1.371
Download
7
Embed Size (px)
Citation preview
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