problema de las jarras

18
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

Upload: national-university-of-trujillo

Post on 09-Jul-2015

1.385 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Problema de las jarras

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

Page 2: Problema de las jarras

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

Page 3: Problema de las jarras

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”

Page 4: Problema de las jarras

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.

Page 5: Problema de las jarras

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:

Page 6: Problema de las jarras

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

Page 7: Problema de las jarras

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

Page 8: Problema de las jarras

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

Page 9: Problema de las jarras

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:

Page 10: Problema de las jarras

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:

Page 11: Problema de las jarras

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.

Page 12: Problema de las jarras

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:

Page 13: Problema de las jarras

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.

Page 14: Problema de las 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

Page 15: Problema de las jarras

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.

Page 16: Problema de las jarras

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

Page 17: Problema de las jarras

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/

Page 18: Problema de las jarras

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