Zambrano, R. - Historia mínima de la música en Occidente [2013].pdf
Juego Lógico. El lobo, la cabra y la col
1. 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
2. 1
INDICE
1. DEDICATORIA ………………………………………………………………...................... 2
2. INTRODUCCION …………………………………………………………………………........... 3
3. MARCO TEORICO …………………………………………………………………………………….. 4
3.1 ANTECEDENTESDE ACERTIJO …………………………………………………….. 4
3.2 ANALISISDEACERTIJO …………………………………………………….. 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 TIPODE METODOS DE BUSQUEDA …………………………………. 6
3.3 REPPRESENTACION DECASOY PROBLEMA ……………………………………….. 6
3.3.1 PEOR CASO ……………………………………………………………………….. 7
3.4 IMPLEMENTACION EN PROLOG ………………………………………………………. 8
3.4.1 ALGORITMO …………………………………………………………………….. 8
3.4.2 ANALISISDEALGORITMO …………………………………………………… 10
4. CONCLUSIONES ……………………………………………………………………………………….. 11
5. ANEXOS ……………………………………………………………………………………… 12
6. BIOGRAFIA ……………………………………………………………………………………….. 18
3. 2
DEDICATORIA
A Dios, por
brindarnosla dicha
de la salud y
bienestar físico y
espiritual
Dedicado a todoslas
personase integrantes
de
Esta monografía que
invirtieron tiempo,
responsabilidad,
Y muchascosas.
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 problemasde
la humanidad.
4. 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.
5. 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: ANALISISDEL ACERTIJO
2.1. DECLARACIONDEL 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 DESOLUCIONPORESTADOS:
Espacio de estados: granjero, cabra, lobo, col; izquierda y derecha.
Numero de estados: 13.
Estado inicial: izquierda.
6. 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 DESOLUCINES:
Estados :
Diagrama del autómata :
7. 6
2.4. TIPOS DEMETODOS DEBUSQUEDA:
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ÓNY 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)
8. 7
Gráficodeespacio deestado,incluidas estadosinseguros:
3.1 PEOR CASO: BUCLEINFINITO:
Trate agricultor teniendo lobo. Cabra come la col. Inseguro? Backtrack.
10. 9
4.2ANALISIS DECODIGO:
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.
11. 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.
12. 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.
13. 12
ANEXOS:
Del libro: Applications of C++ Programming: Administration, Finance, and
Statistics. Pag. 339 – 345. Algoritmo del granjero, lobo, la cabra y la col
implementadoenC++.