SlideShare uma empresa Scribd logo
1 de 12
Baixar para ler offline
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.1ALGORITMO :
%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

Mais conteúdo relacionado

Destaque

Internacionalización de contenidos e-learning: Producto global, éxito local
Internacionalización de contenidos e-learning: Producto global, éxito localInternacionalización de contenidos e-learning: Producto global, éxito local
Internacionalización de contenidos e-learning: Producto global, éxito localCRISEL BY AEFOL
 
Peligros de las redes sociales
Peligros de las redes socialesPeligros de las redes sociales
Peligros de las redes socialesAngel Torres
 
Seminario desarrollo rural y construcción de territorios dinámicos y pacíficos
Seminario desarrollo rural y construcción de territorios dinámicos y pacíficos Seminario desarrollo rural y construcción de territorios dinámicos y pacíficos
Seminario desarrollo rural y construcción de territorios dinámicos y pacíficos Fundación Acua
 
La Experiencia de la URV con Port Aventura. B-Learning: una herramienta para ...
La Experiencia de la URV con Port Aventura. B-Learning: una herramienta para ...La Experiencia de la URV con Port Aventura. B-Learning: una herramienta para ...
La Experiencia de la URV con Port Aventura. B-Learning: una herramienta para ...CRISEL BY AEFOL
 
Plan anticorrupcion 2013.doc
Plan anticorrupcion 2013.docPlan anticorrupcion 2013.doc
Plan anticorrupcion 2013.docjhonaloe
 
Pacto por la autodetermiancion mapuche 2013
Pacto por la autodetermiancion mapuche 2013Pacto por la autodetermiancion mapuche 2013
Pacto por la autodetermiancion mapuche 2013radatemuko
 
El tamaño NO es importante
El tamaño NO es importanteEl tamaño NO es importante
El tamaño NO es importanteCRISEL BY AEFOL
 
"Conocimiento, aprendizaje e innovación" parte 4
"Conocimiento, aprendizaje e innovación" parte 4"Conocimiento, aprendizaje e innovación" parte 4
"Conocimiento, aprendizaje e innovación" parte 4CRISEL BY AEFOL
 
Storytelling, el poder de las historias como elemento de gestión del conocimi...
Storytelling, el poder de las historias como elemento de gestión del conocimi...Storytelling, el poder de las historias como elemento de gestión del conocimi...
Storytelling, el poder de las historias como elemento de gestión del conocimi...CRISEL BY AEFOL
 
¿Realmente sirve la Web 2.0 para el e-learning?
¿Realmente sirve la Web 2.0 para el e-learning?¿Realmente sirve la Web 2.0 para el e-learning?
¿Realmente sirve la Web 2.0 para el e-learning?CRISEL BY AEFOL
 
¿Por que el tutor es un actor central en la modalidad virtual? 3
¿Por que el tutor es un actor central en la modalidad virtual? 3¿Por que el tutor es un actor central en la modalidad virtual? 3
¿Por que el tutor es un actor central en la modalidad virtual? 3CRISEL BY AEFOL
 
Servicios y análisis de uso del campus virtual de la urv (moodle)
Servicios y análisis de uso del campus virtual de la urv (moodle)Servicios y análisis de uso del campus virtual de la urv (moodle)
Servicios y análisis de uso del campus virtual de la urv (moodle)CRISEL BY AEFOL
 
Conclusiones Taller GESTIÓN DEL CONOCIMIENTO
Conclusiones Taller GESTIÓN DEL CONOCIMIENTOConclusiones Taller GESTIÓN DEL CONOCIMIENTO
Conclusiones Taller GESTIÓN DEL CONOCIMIENTOCRISEL BY AEFOL
 
Facebook y twitter_para_adultos
Facebook y twitter_para_adultosFacebook y twitter_para_adultos
Facebook y twitter_para_adultosCristi Gaskell
 
Interim tests for CELLUWOOD project
Interim tests for CELLUWOOD projectInterim tests for CELLUWOOD project
Interim tests for CELLUWOOD projecttorrubia
 

Destaque (20)

Internacionalización de contenidos e-learning: Producto global, éxito local
Internacionalización de contenidos e-learning: Producto global, éxito localInternacionalización de contenidos e-learning: Producto global, éxito local
Internacionalización de contenidos e-learning: Producto global, éxito local
 
Música
MúsicaMúsica
Música
 
Peligros de las redes sociales
Peligros de las redes socialesPeligros de las redes sociales
Peligros de las redes sociales
 
Seminario desarrollo rural y construcción de territorios dinámicos y pacíficos
Seminario desarrollo rural y construcción de territorios dinámicos y pacíficos Seminario desarrollo rural y construcción de territorios dinámicos y pacíficos
Seminario desarrollo rural y construcción de territorios dinámicos y pacíficos
 
La Experiencia de la URV con Port Aventura. B-Learning: una herramienta para ...
La Experiencia de la URV con Port Aventura. B-Learning: una herramienta para ...La Experiencia de la URV con Port Aventura. B-Learning: una herramienta para ...
La Experiencia de la URV con Port Aventura. B-Learning: una herramienta para ...
 
Plan anticorrupcion 2013.doc
Plan anticorrupcion 2013.docPlan anticorrupcion 2013.doc
Plan anticorrupcion 2013.doc
 
Pacto por la autodetermiancion mapuche 2013
Pacto por la autodetermiancion mapuche 2013Pacto por la autodetermiancion mapuche 2013
Pacto por la autodetermiancion mapuche 2013
 
El tamaño NO es importante
El tamaño NO es importanteEl tamaño NO es importante
El tamaño NO es importante
 
Definicion de la programacion
Definicion de la programacionDefinicion de la programacion
Definicion de la programacion
 
"Conocimiento, aprendizaje e innovación" parte 4
"Conocimiento, aprendizaje e innovación" parte 4"Conocimiento, aprendizaje e innovación" parte 4
"Conocimiento, aprendizaje e innovación" parte 4
 
Conocimiento
ConocimientoConocimiento
Conocimiento
 
Storytelling, el poder de las historias como elemento de gestión del conocimi...
Storytelling, el poder de las historias como elemento de gestión del conocimi...Storytelling, el poder de las historias como elemento de gestión del conocimi...
Storytelling, el poder de las historias como elemento de gestión del conocimi...
 
Parcial2 villalba felicia
Parcial2 villalba feliciaParcial2 villalba felicia
Parcial2 villalba felicia
 
¿Realmente sirve la Web 2.0 para el e-learning?
¿Realmente sirve la Web 2.0 para el e-learning?¿Realmente sirve la Web 2.0 para el e-learning?
¿Realmente sirve la Web 2.0 para el e-learning?
 
¿Por que el tutor es un actor central en la modalidad virtual? 3
¿Por que el tutor es un actor central en la modalidad virtual? 3¿Por que el tutor es un actor central en la modalidad virtual? 3
¿Por que el tutor es un actor central en la modalidad virtual? 3
 
2. Cumplido
2. Cumplido2. Cumplido
2. Cumplido
 
Servicios y análisis de uso del campus virtual de la urv (moodle)
Servicios y análisis de uso del campus virtual de la urv (moodle)Servicios y análisis de uso del campus virtual de la urv (moodle)
Servicios y análisis de uso del campus virtual de la urv (moodle)
 
Conclusiones Taller GESTIÓN DEL CONOCIMIENTO
Conclusiones Taller GESTIÓN DEL CONOCIMIENTOConclusiones Taller GESTIÓN DEL CONOCIMIENTO
Conclusiones Taller GESTIÓN DEL CONOCIMIENTO
 
Facebook y twitter_para_adultos
Facebook y twitter_para_adultosFacebook y twitter_para_adultos
Facebook y twitter_para_adultos
 
Interim tests for CELLUWOOD project
Interim tests for CELLUWOOD projectInterim tests for CELLUWOOD project
Interim tests for CELLUWOOD project
 

Semelhante a Informe final de prolog

Semelhante a Informe final de prolog (6)

Juego Lógico. El lobo, la cabra y la col
Juego Lógico. El lobo, la cabra  y  la colJuego Lógico. El lobo, la cabra  y  la col
Juego Lógico. El lobo, la cabra y la col
 
Monografia
MonografiaMonografia
Monografia
 
Prolog
PrologProlog
Prolog
 
Exp2
Exp2Exp2
Exp2
 
El monte el viejo un ejemplo real del monte bajo
El monte el viejo  un ejemplo real del monte bajoEl monte el viejo  un ejemplo real del monte bajo
El monte el viejo un ejemplo real del monte bajo
 
Monografia lobo cabra y col
Monografia lobo cabra y colMonografia lobo cabra y col
Monografia lobo cabra y col
 

Informe final de prolog

  • 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 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
  • 3. 2 DEDICATORIA A Dios, por brindarnos la dicha de la salud y bienestar físico y espiritual
  • 4. 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.
  • 5. 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
  • 6. 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
  • 7. 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)
  • 8. 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.
  • 9. 8 Capítulo 4: IMPLEMENTACION EN PROLOG: 4.1ALGORITMO : %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).
  • 10. 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.
  • 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] 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