19
TRUJILLO-PERU Universidad Nacional de Trujillo ESCUELA DE INFORMATICA INTEGRANTES: APRECIADO RIVERA JHEFERSOWN DOMINGUEZ HONORIO EMERSON ALEXANDER ESQUIVEL SALDAÑA GIANCARLOS LAURENTE PACHAMANGO CRISTHIAN EL GRANJERO, EL LOBO, LA CABRA Y LA COL DOCENTE: ARTURO DIAZ PULIDO MONOGRAFIA

Juego Lógico. El lobo, la cabra y la col

Embed Size (px)

Citation preview

Page 1: Juego Lógico. El lobo, la cabra  y  la col

TRUJILLO-PERU

Universidad Nacional de Trujillo ESCUELA DE INFORMATICA

INTEGRANTES: APRECIADO RIVERA JHEFERSOWN

DOMINGUEZ HONORIO EMERSON ALEXANDER

ESQUIVEL SALDAÑA GIANCARLOS LAURENTE PACHAMANGO CRISTHIAN

EL GRANJERO, EL LOBO, LA CABRA Y LA COL

DOCENTE: ARTURO DIAZ PULIDO

MONOGRAFIA

Page 2: Juego Lógico. El lobo, la cabra  y  la col

1

INDICE

1. DEDICATORIA ………………………………………………………………...................... 2

2. INTRODUCCION …………………………………………………………………………........... 3

3. MARCO TEORICO …………………………………………………………………………………….. 4

3.1 ANTECEDENTES DE ACERTIJO …………………………………………………….. 4

3.2 ANALISIS DE ACERTIJO …………………………………………………….. 4

3.2.1 DECLARACION DEACERTIJO …………………………………………… 4

3.2.2 METODO DE SOLUCION POR ESTADOS ………………………….. 4

3.2.3 AUTOMATA DE SOLUCIONES …………………………………………. 5

3.2.4 TIPO DE METODOS DE BUSQUEDA …………………………………. 6

3.3 REPPRESENTACION DE CASO Y PROBLEMA ……………………………………….. 6

3.3.1 PEOR CASO ……………………………………………………………………….. 7

3.4 IMPLEMENTACION EN PROLOG ………………………………………………………. 8

3.4.1 ALGORITMO …………………………………………………………………….. 8

3.4.2 ANALISIS DE ALGORITMO …………………………………………………… 10

4. CONCLUSIONES ……………………………………………………………………………………….. 11

5. ANEXOS ……………………………………………………………………………………… 12

6. BIOGRAFIA ……………………………………………………………………………………….. 18

Page 3: Juego Lógico. El lobo, la cabra  y  la col

2

DEDICATORIA

A Dios, por

brindarnos la dicha

de la salud y

bienestar físico y

espiritual

Dedicado a todos las

personas e integrantes

de

Esta monografía que

invirtieron tiempo,

responsabilidad,

Y muchas cosas.

A todos los apasionados por

las Ciencias de la

Computación

Que día a día se abstraen

para darle la mejor

Solución a los problemas de

la humanidad.

Page 4: Juego Lógico. El lobo, la cabra  y  la col

3

INTRODUCCION

Los juegos de lógica son una gran herramienta educativa para

profesores.

Son juegos divertidos para que los niños jueguen y a la vez abran sus

mentes. Hay todo tipo de juegos de lógica que se adaptan a cualquier

edad.

Con los “Juegos de lógica” desarrollamos el intelecto, trabajamos las

matemáticas, la lógica, la agilidad visual, vemos los problemas desde una

perspectiva nueva y original que nos ayudará en el futuro a afrontar los

problemas y vicisitudes de la vida.

Hay mucha variedad en los juegos de lógica: Desde los clásicos como

jeroglíficos o puzles. A los más actuales como los sudukus.

Hay acertijos que tienen miles de años y otros que tienen sólo días. Sólo

es cuestión de imaginación.

El acertijo del lobo, la cabra y la col es un popular juego de lógica. Se

sabe que existe al menos desde el siglo IX y que forma parte del folclore

de un gran número de grupos étnicos.

En este caso se plantea la solución a un acertijo matemático. Se

esquematiza la solución con un gráfico de autómata para un mejor

entendimiento. Se explica los 2 tipos de búsqueda pero solo se utilizara

un tipo de búsqueda. La solución se realiza implementa en el lenguaje

de programación llamado Prolog.

Page 5: Juego Lógico. El lobo, la cabra  y  la col

4

Capítulo 1: ANTECEDENTES DEL ACERTIJO

Este acertijo es un forma parte de los denominados “puzzles de cruzar el

río”, en los que el objetivo es mover una serie de objetos al otro lado del

río siguiendo una serie de normas.

La aparición más temprana de este problema es en el manuscrito

medieval Propositiones ad Acuendos Juvenes, los tres objetos son un lobo,

una cabra y una col. Existen variaciones de este acertijo siendo los

objetos una cabra, una oveja y un repollo; un zorro, una gallina y unas

semillas; un zorro, un ganso y una mazorca de maíz y una pantera, un

cerdo y unas gachas. La lógica del acertijo sigue siendo la misma.

Este acertijo ha formado parte del folclore de los afroamericanos,

Camerún, Cabo Verde, Dinamarca, Etiopía, Ghana, Italia, Rusia, Rumania,

Escocia, Sudán, Uganda, Zambia y Zimbabue. En algunos lugares de África,

se han encontrado variaciones del juego en las cuales la barca no puede

llevar dos objetos en lugar de sólo uno.

Este acertijo era uno de los favoritos de Lewis Carroll, y ha sido incluido

en varios libros de matemática recreativa

Capítulo 2: ANALISIS DEL ACERTIJO

2.1. DECLARACION DEL ACERTIJO:

Hace mucho tiempo un granjero fue al mercado y compró un lobo,

una cabra y una col. Para volver a su casa tenía que cruzar un río. El

agricultor dispone de una barca para cruzar a la otra orilla, pero en la

barca solo caben él y una de sus compras.

Si el lobo se queda solo con la cabra se la come, si la cabra se queda sola

con la col se la come.

El reto del granjero era cruzar él mismo y dejar sus compras a la otra

orilla del río, dejando cada compra intacta. ¿Cómo lo hizo?

2.2. METODO DE SOLUCION POR ESTADOS:

Espacio de estados: granjero, cabra, lobo, col; izquierda y derecha.

Numero de estados: 13.

Estado inicial: izquierda.

Page 6: Juego Lógico. El lobo, la cabra  y  la col

5

Estado final (único): pasar todos a la derecha.

Operadores :

Pasa el granjero solo

Pasa el granjero con el lobo

Pasa el granjero con la cabra

Pasa el granjero con la col

Paso de soluciones:

Dejar la cabra al otro lado

Vuelve

Dejar el lobo del otro lado

Regresar con la cabra

Dejar a la col o al lobo del otro lado

Vuelve

Dejar a la cabra del otro lado

2.3. AUTOMATA DEL PROCESO DE SOLUCINES:

Estados :

Diagrama del autómata :

Page 7: Juego Lógico. El lobo, la cabra  y  la col

6

2.4. TIPOS DE METODOS DE BUSQUEDA:

Búsqueda por anchura:

- Los nodos se visitan y generan niveles

- La estructura para los nodos abiertos es una cola (FIFO)

- Un nodo es visitado cuando todos los nodos de los niveles

superiores y sus hermanos precedentes han sido visitados Búsqueda por profundidad:

- Los nodos se visitan y generan buscando los nodos a mayor

profundidad y retrocediendo cuando no se encuentran los

nodos sucesores

- La estructura de los nodos abiertos es un pila (LIFO)

- Para garantizar que el algoritmo acaba de imponerse un límite

en la profundidad de explosión.

Capítulo 3: REPRESENTACIÓN Y CASOS DEL PROBLEMA

Estado Predicado (F, W, G, C), describe la ubicación del

agricultor, lobo, la cabra y la col.

Las ubicaciones posibles son el correo para este, w para

oeste, banco para cada una de las 4 variables.

Estado inicial es el estado (w, w, w, w)

Estado de metas es estatal (e, e, e, e)

Page 8: Juego Lógico. El lobo, la cabra  y  la col

7

Gráfico de espacio de estado, incluidas estados inseguros:

3.1 PEOR CASO: BUCLE INFINITO:

Trate agricultor teniendo lobo. Cabra come la col. Inseguro? Backtrack.

Page 9: Juego Lógico. El lobo, la cabra  y  la col

8

Capítulo 4: IMPLEMENTACION EN PROLOG:

4.1 ALGORITMO :

%Cambiar

cambiar(d,i).

cambiar(i,d).

%Mover

mover([X,X,Cabra,Col],lobo,[Y,Y,Cabra,Col]) :- cambiar(X,Y).

mover([X,Lobo,X,Col],cabra,[Y,Lobo,Y,Col]) :- cambiar(X,Y).

mover([X,Lobo,Cabra,X],col,[Y,Lobo,Cabra,Y]) :- cambiar(X,Y).

mover([X,Lobo,Cabra,C],nada,[Y,Lobo,Cabra,C]) :- cambiar(X,Y).

%Revisar

esIgual(X,X,_).

esIgual(X,_,X).

%Verificar

verificacion([Granjero,Lobo,Cabra,Col]) :

esIgual(Granjero,Cabra,Lobo),

esIgual(Granjero,Cabra,Col).

%Hallar la solución

solucion([d,d,d,d],[]).

solucion(Config,[Movi|Rest]) :- mover(Config,Movi,SigConfig),

verificacion(SigConfig), solucion(SigConfig,Rest).

Page 10: Juego Lógico. El lobo, la cabra  y  la col

9

4.2ANALISIS DE CODIGO:

Para resolver este problema, se puede codificar la configuración

de los 4 objetos (el granjero, el lobo, la cabra, la col) en forma de

lista.

Si ' i ' denota la ribera izquierda y ' d ' la ribera derecha, entonces

el estado inicial es el siguiente:

[i, i, i, i] (Todo el mundo está en la orilla de la izquierda)

Si el granjero se va con el lobo, entonces la configuración se

convierte en:

[d, d, i, i] (y la cabra se come la col)

La configuración final deseada es:

[d, d, d, d] (Todo el mundo está en la orilla de la derecha)

En cada movimiento, el granjero cruza el río con el lobo, la cabra,

la col, o nada. Cada movimiento puede ser representado por un

átomo correspondiente: lobo, la cabra, la col, y nada.

Esto se puede escribir como un predicado de movimiento(Config,

Movi, SigConfig) donde :

Config es una configuración

Movi es uno de los cuatro movimientos básicos

SigConfig es la configuración que resulta de la aplicación de

esa medida a Config

Ahora, hay un movimiento cuando van el granjero y el lobo

mover ([X, X, Cabra, Col], lobo, [Y, Y, Cabra, Col]): - cambio

(X, Y).

que supone que un predicado de cambio se define como:

cambiar (d, i).

cambiar (i, d).

Uno podría haber pensado en sólo escribir:

mover ([X, X, Cabra, Col], lobo, [Y, Y, Cabra, Col]).

pero en este caso X e Y anteriormente podrían unificar a cualquier

átomo (por ejemplo, a la cabra), el cual no es válido.

Page 11: Juego Lógico. El lobo, la cabra  y  la col

10

Ahora, uno puede codificar todos los movimientos válidos:

cambiar(d, i).

cambiar(i, d).

mover([X,X,Cabra,Col],lobo,[Y,Y,Cabra,Col]) :-

cambiar(X,Y).

mover([X,Lobo,X,Col],cabra,[Y,Lobo,Y,Col]) :-

cambiar(X,Y).

mover([X,Lobo,Cabra,X],col,[Y,Lobo,Cabra,Y]) :-

cambiar(X,Y).

mover([X,Lobo,Cabra,C],nada,[Y,Lobo,Cabra,C]) :-

cambiar(X,Y).

A continuación, las configuraciones deben ser probadas para la

seguridad (para que nada se coma a nada). Para ello se define un

predicado esIgual(X, Y, Z) que es true si al menos uno de Y o Z es

igual a X.

esIgual(X, X, _).

esIgual (X, _, X).

La idea es que si al menos uno, la cabra o el lobo está en el mismo

lado del granjero, y si al menos una, la cabra o la col, está en el

mismo lado del granjero. Esto puede ser codificada como:

verificacion([Granjero,Lobo,Cabra,Col]) :-

esIgual(Granjero,Cabra,Lobo),

esIgual(Granjero,Cabra,Col).

Una solución se define como una configuración inicial y una lista

de movimientos que le lleva a la configuración del objetivo. Una

solución para [d, d, d, d] sería la lista vacía (no se necesitan

movimientos).

De lo contrario, una solución se define recursivamente como una

movida que le lleva a una configuración segura, seguido de una

solución.

Page 12: Juego Lógico. El lobo, la cabra  y  la col

11

Esta recursión es fácilmente codificada como:

solucion([d,d,d,d],[]).

solucion(Config,[Movi|Rest]) :-

mover(Config,Movi,SigConfig),

verificacion(SigConfig),

solucion(SigConfig,Rest).

ADVERTENCIA: Una solución podría ser arbitraria larga (por

ejemplo, insertar un número infinito de nada se mueve cuando la

cabra está en un lado y el lobo y la col en la otra). Pero aquí se

pidió una solución de una longitud específica, se le obliga a:

? - Length (X, 7), solución ([w, w, w, w], X).

X = [cabra, nada, el lobo, la cabra, la col, la nada, la cabra]

CONCLUSIONES:

El problema ayuda a incrementar la capacidad de análisis de

la persona dado que se utiliza mucha lógica para su análisis.

El documento plantea una implementación a un acertijo

matemático con más de 1000 años de antigüedad.

Para el desarrollo del problema se estructuro en forma de

árbol por lo cual se utilizó el lenguaje de programación prolog

y métodos de búsqueda por profundidad.

Hay Infinidad de juegos de lógica. Todos tienen una cosa en

común, nos ayudan a ejercitar el cerebro. Son juegos con los

que podemos pasar horas y horas y no sentirnos culpables,

porque estamos haciendo algo útil, estamos poniendo en

forma nuestras mente, así en el futuro éste estará más sano.

Page 13: Juego Lógico. El lobo, la cabra  y  la col

12

ANEXOS:

Del libro: Applications of C++ Programming: Administration, Finance, and

Statistics. Pag. 339 – 345. Algoritmo del granjero, lobo, la cabra y la col

implementado en C++.

Page 14: Juego Lógico. El lobo, la cabra  y  la col

13

Page 15: Juego Lógico. El lobo, la cabra  y  la col

14

Page 16: Juego Lógico. El lobo, la cabra  y  la col

15

Page 17: Juego Lógico. El lobo, la cabra  y  la col

16

Page 18: Juego Lógico. El lobo, la cabra  y  la col

17

Page 19: Juego Lógico. El lobo, la cabra  y  la col

18

BIBLIOGRAFIA:

VICENTE MEAVILLA, el lobo la cabra y la col 272 pags

Applications of C++ Programming: Administration, Finance, and Statistics.

http://books.google.com.pe/books?id=I8bq7QaM7UsC&pg=PA339&dq=wolf+c

abbage+goat&hl=es&sa=X&ei=u0izU5icNriosAT7lYHoBA&ved=0CBkQ6AEwAA#

v=onepage&q=wolf%20cabbage%20goat&f=false

http://es.wikipedia.org/wiki/Acertijo_del_lobo,_la_cabra_y_la_col