Você está na página 1de 16

Universidad Nacional de Trujillo

Escuela Profesional de Informtica


Tema:
Problema de los misioneros y los canbales

Integrantes:
- Pomape Vargas Oscar Roberto
- Silva Coronado Oskar Hernando
- Vsquez Alvarado Mario Fernando

Docente:
Arturo Daz Pulido

Trujillo - 2014
Presentacin
Para resolver un problema lgico, su solucin o conjunto de soluciones deben ser
vistas a manera de rbol, en el cual para encontrar determinada solucin debe hacrsele
un recorrido. Este recorrido puede ser de dos tipos: por profundidad o por amplitud.

El presente trabajo trata sobre la solucin de un problema lgico denominado
Problema de los misioneros y los canbales, el cual ha sido resuelto mediante un
algoritmo de bsqueda por profundidad, implementndolo luego en el lenguaje de
programacin PROLOG.

Primero se realiza el planteamiento del problema, para luego especificar la
solucin describiendo el algoritmo que se usar para resolverlo y finalmente se presenta
su implementacin en PROLOG.
Importancia
Los rboles de bsqueda son importantes ya que nos ayudan a modelar
problemas de la vida real, pues nos definen el espacio de estados de un
problema, el cual puede tener una o ms soluciones; de modo que, estas
estructuras resultan tiles para obtener todas las soluciones posibles
haciendo un recorrido del rbol y obtenindolas (las soluciones) de
manera rpida.
Descripcin del Problema
Tres misioneros y tres canbales quieren cruzar un ro. Solo hay una
canoa que puede ser usada por una o dos personas, ya sean
misioneros o canbales. En ningn momento el nmero de canbales
debe superar al de misioneros, en ninguna de las dos orillas (estn
en la barca o fuera de ella), porque se los comern.
El problema consiste en encontrar una secuencia de movimientos
posibles para que los seis pasen de una orilla a la otra. Existe ms
de una solucin a este problema. El mnimo nmero de movimientos
es de once.

Ingeniera del
Proyecto
Algoritmo
Funcin: Recorrer
Entrada
Lado_Orig: [N_Misioneros, N_Canibales]
Lado_Dest: [N_Misioneros, N_Canibales]
Iter: 0
SolAux: []
Lado A: [3, 3]
Lado B: [0, 0]
Algoritmo
SALIDA
Solucion
Solucion es una lista de desplazamientos,
cada desplazamiento tiene la siguiente
estructura:
[Puerto_Destino, N_Misioneros,
N_Canibales]
Algoritmo
Si Iter = 11 entonces:
Si Lado_Dest esta vacio entonces:
SolAux <= Solucion
mostrar Solucion
retornar Solucion
Sino:
retornar []
Algoritmo
Sino:
movim(Mis, Can) % Escogemos un movimiento
Si desplazamiento es vlido entonces:
Lado_Orig2, Lado_Dest2 <=
desplazamos(Lado_Orig, Lado_Dest, Mis, Can)
Si no se comen en los lados entonces:
Iter2 <= Iter + 1
SolAux2 <= [Depl|SolAux]
retornar Recorrer (Lado_Dest2, Lado_Orig2, Iter2,
SolAux2)
Fin_Si
Gestin de bsqueda
Cdigo en Prolog
Cdigo en Prolog
Cdigo en Prolog
Conclusiones
- Se observa que PROLOG forma un rbol de bsqueda de soluciones y
realiza una bsqueda por profundidad.

- El algoritmo planteado para la solucin consta bsicamente de un conjunto
de condiciones para saber si se toma o no un nodo como parte de la solucin.

- Utilizando el rbol que genera PROLOG fue posible programar la solucin sin
necesidad de construir todo el rbol mediante cdigo.

- Se observa que el rbol de bsqueda es una especie de simulacin de cmo
hacemos los seres humanos para resolver este tipo de problemas.
Referencias bibliogrficas
Jorge Baier Aranda, PUC,
https://forja.rediris.es/docman/view.php/82/3
00/busqueda1.pdf, Bsqueda, Problema de
los misioneros y los canbales.