el lobo la cabra y la col
-
Upload
emerson-dh -
Category
Science
-
view
306 -
download
12
Transcript of 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
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 …………………………………. 5
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 …………………………………………………… 9
4. CONCLUCIONES ……………………………………………………………………………………….. 10
5. ANEXOS ……………………………………………………………………………………… 11
6. BIOGRAFIA ……………………………………………………………………………………….. 11
2
DEDICATORIA
A Dios, por brindarnos la dicha de la salud y bienestar físico y espiritual
3
INTRODUCCION
El presente documento 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.
4
Capítulo 1: ANTECEDENTES DEL ACERTIJO
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.
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.
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
5
2.3. AUTOMATA DEL PROCESO DE SOLUCINES:
Estados :
Diagrama del autómata :
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
6
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)
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.
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).
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.
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.
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]
CONCLUCIONES:
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
ANEXO:
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
BIBLIOGRAFIA:
VICENTE MEAVILLA, el lobo la cabra y la col 272 pags