Pontificia Universidad Católica de Chile Escuela de Ingenierı́a Departamento de Ciencia de la Computación Tarea 5 IIC2212 - Lógica para Ciencia de la Computación Primer Semestre, 2004 Entrega: Jueves 10 de junio, hasta las 23:59 hrs., en archivos separados a jabaier@ing.puc.cl. Estructuras de datos La estructura de dato árbol binario puede ser representada en Prolog a través el functor arb/3. Ası́, arb(Key,Iz,Der) representa a un árbol cuyo nodo raı́z contiene el valor Key, y cuyos subárboles izquierdo y derecho son, respectivamente, Iz y Der. Adicionalmente, la constante nil representa al árbol vacı́o. De esta manera el árbol de la siguiente figura a b c d queda representado por el término arb(a,arb(b,nil,nil),arb(c,nil,arb(d,nil,nil))). Escriba los siguientes predicados Prolog. 1. pertenece/2, tal que pertenece(Key,Arb) se satisface ssi el elemento Key está presente en el árbol Arb. 2. de busqueda/1, tal que de_busqueda(Arb) se satisface ssi Arb contiene sólo números naturales1 y es un árbol binario de búsqueda (ABB); es decir, uno que cumple que para todo nodo interno, los elementos que se encuentran en el subárbol izquierdo son menores o iguales a él y los que se encuentran al lado derecho son mayores que él. 3. menor/2, tal que menor(X,Arb) se satisface ssi X es el menor elemento del ABB Arb. 4. insertar/3, tal que insertar(X,Arb,Arb2), cuando Arb contiene un ABB y X es un número, unifica a Arb2 con un ABB con exactamente todos los elementos de Arb más X. 5. abusqueda/2, tal que abusqueda(Arb1,Arb2) se satisface ssi Arb2 es un ABB que tiene los mismos elementos que el árbol Arb1. (Puede suponer que Arb1 sólo contiene números.) 6. juntar/3, tal que juntar(Arb1,Arb2,Arb3) se satisface ssi Arb3 es un ABB que contiene todos y sólo los elementos de Arb1 y de Arb2. Suponga que Arb1 y Arb2 son ABBs. 1 Estos números están representados en la notación s(. . . (0) . . .) vista en clases. Prolog y mundos dinámicos En el mundo del laberinto con persecución (MLP) existen dos agentes, bueno y malo, quienes se pueden desplazar sobre una matriz de 10 × 9 celdas (ver figura). Los agentes pueden ubicarse sobre exactamente una celda libre (marcada con blanco en el dibujo). Cada agente puede ejecutar cuatro movimientos: arriba, abajo, izquierda y derecha, que lo llevan a la celda vecina en la dirección homóloga. ... Y 3 Salida 2 1 2 3 ... 1 X Para representar el MLP en el Cálculo de Situaciones sobre Prolog se ha escogido ocupar los siguientes predicados y fluentes. muro(X,Y) se satisface ssi existe un muro en la posición (X, Y) de la matriz. posicion(A,X,Y,S) se satisface ssi el agente A se encuentra en la posición (X, Y) en la situación S. 1. Represente en Prolog la situación inicial tal como la que se muestra en la figura2 . 2. Escriba axiomas de precondición para cada una de las acciones (identificando por separado las del agente bueno y las de malo), y de estado sucesor para el fluente posicion/2. 3. Escriba el predicado salida/1, tal que salida(S) se satisface si S es una situación en la cual bueno ha salido del laberinto3 . 4. Una persecución es una sucuencia finita de pasos, que a su vez se componen de una movida de malo seguida de una movida de bueno. Escriba el predicado escape/1, tal que escape(N) se satisface si no existe una persecución de N pasos en la que malo alcanza a bueno. Esta tarea vale por dos notas 2 3 Considere que la situación inicial se representa usando la constante s 0. Se considera que el sujeto ha salido cuando está sobre la celda marcada con la palabra “Salida”. 2