Está en la página 1de 4

Ingeniera T

ecnica en
Informatica de Gestion
Inteligencia Artificial
Curso 2007/08. Ejercicios
Departamento de Informa tica
Universidad Carlos III de Madrid

Soluci
on a los ejercicios de l
ogica de predicados
El tiempo estimado para realizar los ejercicios es de 1 hora

1. Se tiene un robot que se puede mover por una habitacion de N xN casillas. La posicion del robot viene
determinada por las coordenadas x e y de la habitacion, tomando como origen de coordenadas la esquina
superior izquierda. El robot puede estar orientado hacia el norte, sur, este u oeste. El robot recibe tres tipos
de orden: moverse, girar 90 grados a la derecha y girar 90 grados a la izquierda. Cuando recibe la orden de
moverse avanzar a una casilla en la direccion en la que este orientado. Por ejemplo, si el robot se encuentra en
la casilla (2,3), con orientacion norte, avanzara hasta la casilla (2,2). Las ordenes de girar hacen que el robot
modifique su orientaci on en 90 grados, por ejemplo, si tiene orientacion norte y recibe la orden de girar a la
derecha, pasar a a tener orientaci on este, y su posicion no vara.
a) Representar en logica de predicados las tres ordenes que puede recibir el robot, describiendo claramente
los predicados elegidos para la representacion.
b) Suponiendo que el robot est a en las coordenadas (2,3) con orientacion norte inferir el conocimiento que
se obtendr
a al recibir las
ordenes de moverse, girar a la derecha y girar a la izquierda.
Soluci
on:

a) Los predicados necesarios para representar el problema son:


robot(X,Y,O): el robot se encuentra en la casilla (X,Y) con orientacion O. Los valores X e Y ser an
n
umeros entre 1 y N y la orientacion O puede ser norte, sur, este y oeste.
girar(S): el robot recibe la orden de girar en sentido S (derecha, izquierda)
mover: el robot recibe la orden de moverse una casilla
plantilla-giro(S,I,F): si el robot esta inicialmente en una orientacion I y tiene que girar en sentido S
(derecha o izquierda) acabar a con orientacion F. I y F pueden ser norte, sur, este y oeste
plantilla-move(O,Dx,Dy): si el robot tiene una orientacion O y recibe la orden de moverse una casilla
tendra que incrementar su coordenada x en Dx y la coordenada y en Dy
Las f
ormulas bien formadas ser
an:
W
R1: X,Y,Oi,Of,S robot(X,Y,Oi) girar(S) plantilla-giro(S,Oi,Of) robot(X,Y,Of)
W
R2: X,Y,O,Dx,Dy robot(X,Y,O) mover plantilla-move(O,Dx,Dy) (X+Dx) > 0 (Y+Dy) > 0
(X+Dx) N (Y+Dy) N robot(X+Dx, Y+Dy,O)
b) Suponiendo que el robot est a en las coordenadas (2,3) con orientacion norte inferir el conocimiento que
se obtendra al recibir las
ordenes de moverse, girar a la derecha y girar a la izquierda. En todas las
inferencias ser
a necesario incluir en el estado los siguientes hechos:
a) plantilla-giro(derecha, norte, este)
b) plantilla-giro(izquierda, norte, oeste)
c) plantilla-giro(derecha, este, sur)
d) plantilla-giro(izquierda, oeste, sur)
e) plantilla-giro(derecha, sur, oeste)
f) plantilla-giro(izquierda, sur, este)
g) plantilla-giro(derecha, oeste, norte)
h) plantilla-giro(izquierda, este, norte)
i) plantilla-move(norte, 0, -1)
j) plantilla-move(sur, 0, 1)
k) plantilla-move(este, 1, 0)
l) plantilla-move(oeste, -1, 0)
Ademas, para el ejemplo concreto se tiene los 4 primeros hechos y se pueden deducir los tres u
ltimos de
la manera siguiente:
1) robot(2,3,norte)
2) mover
3) girar(derecha)
4) girar(izquierda)
5) Con R2 y ={X=2,Y=3,O=norte,Dx=0,Dy=-1}, 1, 2 y i. Se deduce robot(2, 3-2, norte).
(robot(2,3,norte) mover plantilla-move(norte,0,-1) robot(2,2,norte) )
6) Con R1 y ={X=2,Y=2,Oi=norte,0f=este, S=derecha}, 5, 3 y a se deduce robot(2,2,este)
(robot(2,2,norte) girar(derecha) plantilla-giro(derecha, norte, este) robot(2,2,este))
7) Con R1 y ={X=2, Y=2, Oi=este, Of=este, S=izquierda}, 6, 4 y h se deduce robot(2,2,norte)
(robot(2,2,este) girar(izquierda) plantilla-giro(izquierda,este, norte) robot(2,2,norte))

2. Realizar las modificaciones necesarias para que pueda haber mas de un robot en la habitacion evitando que
se choquen y particularizando las
ordenes para un robot en concreto. Se supone que los robots tienen sensores
que les permiten detectar obst
aculos por lo que nunca se posicionaran en una casilla donde haya otro robot.
Soluci
on:
Los predicados necesarios para representar el problema son:
robot(R,X,Y,O): el robot R se encuentra en la casilla (X,Y) con orientacion O. Los valores X e Y ser
an
n
umeros entre 1 y N y la orientacion O puede ser norte, sur, este y oeste.
girar(R,S): el robot R recibe la orden de girar en sentido S (derecha, izquierda)
mover(R): el robot R recibe la orden de moverse una casilla
plantilla-giro(S,I,F): si el robot esta inicialmente en una orientacion I y tiene que girar en sentido S
(derecha o izquierda) acabar a con orientacion F. I y F pueden ser norte, sur, este y oeste
plantilla-move(O,Dx,Dy): si el robot tiene una orientacion O y recibe la orden de moverse una casilla
tendr
a que incrementar su coordenada x en Dx y la coordenada y en Dy
Las f
ormulas bien formadas ser
an:
W
R1: R,X,Y,Oi,Of,S robot(R,X,Y,Oi) girar(R,S) plantilla-giro(S,Oi,Of) robot(R,X,Y,Of)
W
R2: R,R2,X,Y,O,Dx,Dy robot(R,X,Y,O) mover plantilla-move(O,Dx,Dy) (X+Dx) > 0 (Y+Dy)
> 0 (X+Dx) N (Y+Dy) N not(robot(R2,X+Dx,Y+Dy)) robot(X+Dx, Y+Dy,O)
3. Tenemos cuatro perros: un galgo, un dogo, un alano y un podenco. Este u
ltimo come mas que el galgo; el
alano come mas que el galgo y menos que el dogo, pero este come mas que el podenco. Cual de los cuatro
ser
a m
as barato de mantener? Hacer la demostracion utilizando logica de primer orden.
Soluci
on:
Para representar el problema utilizamos los siguientes predicados:
come-mas(X,Y): el perro X come mas que el perro Y
come-menos(X,Y): el perro X come menos que el perro Y
Habr
a que demostrar que uno de los perros come menos que los otros. En particular el galgo, por tanto
habr
a que demostrar come-menos(galgo,podenco), come-menos(galgo,alano) y come-menos(galgo,dogo).
Las f
ormulas bien formadas necesarias para la demostracion son:
W
R1: X,Y come-mas(X,Y) come-menos(Y,X)
W
R2: X,Y,Z come-menos(X,Y) come-menos(Y,Z) come-menos(X,Z)

Demostraci
on: Los cuatro primeros hechos se dicen en el enunciado
1) come-mas(podenco,galgo)
2) come-mas(alano,galgo)
3) come-menos(alano,dogo)
4) come-mas(dogo,podenco)
5) Con R1 y ={X=podenco, Y=galgo} y 1 se deduce come-menos(galgo,podenco)
6) Con R1 y ={X=alano, Y=galgo} y 2 se deduce come-menos(galgo,alano)
7) Con R2 y ={X=galgo, Y=alano, Z=dogo}, 4 y 6 se deduce come-menos(galgo,dogo)
(come-menos(galgo,alano) come-menos(alano,dogo) come-menos(galgo,dogo) )
4. Las siguientes sentencias reflejan las circunstancias en las que un equipo de baloncesto gana sus partidos.
a) Hoy se puede jugar si ni ayer ni antes de ayer llovio
b) Hoy se puede jugar con precauci
on si ayer no llovio aunque antes de ayer s que haya llovido
c) Hoy ganaremos si pudimos entrenar ayer y antes de ayer
d) Los entrenamientos se pueden efectuar si se puede jugar sin problemas o con precaucion.
Se desea saber si ganaremos el sabado, sabiendo que llovio el martes, pero que no llovio el miercoles ni el
jueves ni el viernes. NOTA: solucionar el problema utilizando exclusivamente clausulas de Horn.
Soluci
on:
Los predicados a utilizar son:
jugar(X): el da X se pudo jugar (X puede ser lunes, martes..domingo)
llover(X): el da X llovi
o
precuacion(X): el da X se pudo jugar con precaucion
entrenar(X): el da X se pudo entrenar
ganar(X): el da X se gan
o el partido
ayer(X,Y): X es el da de ayer de Y

Las f
ormulas bien formadas utilizando clausulas de Horn seran:
W
R1: X,Y,Z ayer(Y,X) ayer(Z,Y) not(llover(Y)) not(llover(Z)) jugar(X)
W
R2: X,Y,Z ayer(Y,X) ayer(Z,Y) not(llover(Y)) llover(Z) precaucion(X)
W
R3: X,Y,Z ayer(Y,X) ayer(Z,Y) entrenar(Y) entrenar(Z) ganar(X)
W
R4: X jugar(X) entrenar(X)
W
R5: X precaucion(X) entrenar(X)
Demostraci
on: Se desea deducir ganar(sabado) sabiendo que son ciertos los cuatro primeros hechos:
1) llover(martes)
2) not(llover(miercoles))
3) not(llover(jueves))
4) not(llover(viernes))
5) ayer(viernes,sabado)
6) ayer(jueves,viernes)
7) ayer(miercoles,jueves)
8) ayer(martes,miercoles)
9) con R1 y ={X=viernes, Y=jueves, Z=miercoles}, 2, 3, 6 y 7 se deduce jugar(viernes)
(ayer(jueves,viernes) ayer(miercoles,jueves) not(llover(jueves)) not(llover(miercoles)) jugar(viernes))
10) con R4 y ={X=viernes} y 9 se deduce entrenar(viernes)
(jugar(viernes) entrenar(viernes))
11) con R2 y ={X=jueves, Y=miercoles, Z=martes }, 1, 2, 7 y 8 se deduce precaucion(jueves)
( ayer(miercoles,jueves) ayer(martes,miercoles) not(llover(miercoles)) llover(martes) precaucion(jueves))
12) con R5 y ={X=jueves} y 11 se deduce entrenar(jueves)
(precaucion(jueves) entrenar(jueves))
13) con R3 y ={X=sabado, Y=viernes, Z=jueves }, 5, 6, 10 y 12 se deduce ganar(sabado)
(ayer(viernes,sabado) ayer(jueves,viernes) entrenar(viernes) entrenar(jueves) ganar(sabado))

También podría gustarte