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.