Sei sulla pagina 1di 33

Inteligencia Artificial 2011

Conteste con sus palabras las siguientes preguntas:


a) Qu es una formula bien formada (fbf)?
1

b) Qu es un axioma?
2

c) Defina con sus palabras el concepto de semntica entendimiento de significado de un smbolo (o signo)
3

en general, asiendo hincapi en el su

d) Explique, con sus propias palabras, la semntica de sentencias en lgica proposicional. Idem para lgica de predicados.
4

e) Qu es una regla de inferencia?


5

1 2

respuestas extradas de TP3-irrutia-german.pdf respuestas extradas de TP3-Da-Re-Lucero-Jonathan-Alejandro.pdf 3 respuestas extradas de TP3-daniele-mariela.pdf 4 respuestas extradas de TP3-marchetta-gaston.pdf 5 respuestas extradas de TP3-somlay-jimena.pdf Razonamiento lgico

Inteligencia Artificial 2011

f) Qu significa S |- ? (i.e. defina derivacin)


6

g) Qu es un teorema?
7

h) Qu diferencia hay entre |- y |=?. Qe significa Si |- entonces |=?, y Si |= entonces | ?


8

i)
9

Qu significa que una teora/lgica sea decidible?

j)
10

Que puede decir sobre la veracidad o falsedad de las sentencias axiomticas, (o simplemente axiomas)? Indique bajo que condiciones el algoritmo de encadenamiento hacia adelante es completo.

6 7

respuestas extradas de TP3-ferrero-mauricio.pdf respuestas extradas de TP3-Paca-Jose.pdf 8 respuestas extradas de TP3-Barraquero-Matias.pdf 9 respuestas extradas de TP3-Da-Re-Lucero-Jonathan-Alejandro.pdf 10 respuestas extradas de TP3-Da-Re-Lucero-Jonathan-Alejandro.pdf Razonamiento lgico

Inteligencia Artificial 2011

Demuestra para cada una de las siguientes sentencias, si es tautologa, insatisfactible o ninguna de las anteriores (slo satisfactible). Utiliza tablas de verdad y/o las reglas de equivalencia. (Describa cada paso)
a) (Humo -> Fuego) -> (Humo -> Fuego)
(Humo => Fuego) => (NOT Humo => NOT Fuego) p = humo q = fuego
********************************************************************************** * p * q * NOT p * NOT q * p => q * NOT p => NOT q * (p => q) => (NOT p => NOT q) * ********************************************************************************** * F * F * V * V * V * V * V * * F * V * V * F * V * F * F * * V * F * F * V * F * V * V * * V * V * F * F * V * V * V * **********************************************************************************

Por lo tanto es Satisfactible.

b) ((Humo Calor) -> Fuego) ((Humo -> Fuego) (Calor -> Fuego))
((Humo AND Calor) => Fuego) <=> ((Humo => Fuego) OR (Calor => Fuego)) p = humo q = fuego r = calor
********************************************************************************* * p * q * r * p AND r * (p AND r) => q * p => q * r => q * (p => q) OR (r => q) * ********************************************************************************* * F * F * F * F * V * V * V * V * * F * F * V * F * V * V * F * V * * F * V * F * F * V * V * V * V * * F * V * V * F * V * V * V * V * * V * F * F * F * V * F * V * V * * V * F * V * V * F * F * F * F * * V * V * F * F * V * V * V * V * * V * V * V * V * V * V * V * V * ********************************************************************************* *************************************************************************************** * (p AND r) => q * (p => q) OR (r => q) * ((p AND r) => q) <=> ((p => q) OR (r => q)) * *************************************************************************************** * V * V * V * * V * V * V * * V * V * V * * V * V * V * * V * V * V * * F * F * V * * V * V * V * * V * V * V * ***************************************************************************************

Por lo tanto es Tautologa.

c) Grande Mudo (Grande -> Mudo)


Grande OR Mudo OR (Grande => Mudo) p = grande q = mudo
************************************************ * p * q * p => q * p OR q * p OR q OR (p => q) * ************************************************ * F * F * V * F * V * * F * V * V * V * V * * V * F * F * V * V * * V * V * V * V * V * ************************************************

Por lo tanto es Tautologa.

d) (Grande Mudo) Mudo


Grande AND Mudo) OR NOT Mudo p = grande q = mudo
************************************************** * p * q * NOT q * p AND q * (p AND q) OR (NOT q) * ************************************************** * F * F * V * F * V * * F * V * F * F * F * * V * F * V * F * V * * V * V * F * V * V * **************************************************

Por lo tanto es Satisfactible

Razonamiento lgico

Inteligencia Artificial 2011

Construir la tabla de valores de verdad para: Muestre cada paso de su construccin

Pasar a Forma Normal Conjuntiva las siguientes frmulas proposicionales. (Muestre y Describa cada paso) a)
(p V ( p => q)) => (p V q) (p V p V q) => (p V q)...................eliminacin de la implicacin (p V q) V (p V q).......................eliminacin de la implicacin e inferencia ( p ^ q) V (p V q).....................de Morgan ( p V (p V q)) ^ ( q V (p V q)).......distributiva de V ( p V p V q) ^ ( q V p V q)...........asociativa de V (p v (q -> q)) -> (p v q) (p v (q v q)) -> (p v q) (p v (q v q)) v (p v q) (p ^ (q v q)) v (p v q) (p ^ q ^ q) v (p v q) (p v p) ^ (q v p) ^ (q v p) ^ (p v q) ^ (q v q) ^ (q v q) por ley de exclusin de termino medio V ^ (q v p) ^ (q v p) ^ (p v q) ^ V ^ V Ley de identidad y asociatividad ((q v p) ^ (q v p)) ^ (p v q) Por ley de idempotencia (q v p) ^ (p v q) (Tautologa)

b)
(p V (p ( p ( p q) => p V q) V p..............................eliminacin de la implicacin ^ q) V p.............................de Morgan V p) ^ ( q V p).....................distributiva de V

(p v q) -> p (p v q) v p (p ^ q) v p (p v p) ^ (q v p) Ley de exclusin de terminos medio V ^ (q v p) Ley de identidad (q v p)


Tabla de Verdad p q q V p F F V F V F V F V V V V

(NO Tautologa)

Razonamiento lgico

Inteligencia Artificial 2011

c)
(p ^ (p ((p (p q) V (p ^ V (p ^ r)) V p) ^ (p V p) ^ (p r) ^ (q V (p ^ r)).....................distributiva de V r)) ^ ((q V p) ^ (q V r)).......distributiva de V r) ^ (q V p) ^ (q V r)...........asociativa de ^ V V

(p ^ q) v (p ^ r) ((p ^ q) v p) ^ ((p ^ q) v r) ((p v p) ^ (q v p)) ^ ((p v r) ^ (q v r)) (p v p) ^ (q v p) ^ (p v r) ^ (q v r) Ley de idempotencia p ^ (q v p) ^ (p v r) ^ (q v r)


Tabla de Verdad p q r F F F F F V F V F F V V V F F V F V V V F V V V p ^ (q V r) F F F F F V V V

(NO Tautologa)

Explicar un ejemplo de 11FRMULA BIEN FORMADA (fbf) del Clculo de Predicado qu:
i) sea verdadera en todas las interpretaciones ii) sea falsa en todas las interpretaciones iii) sea verdadera en algunas interpretaciones y falsa en otras

iv) dada una interpretacin particular, no sea ni verdadera, ni falsa.

11

Una f.b.f. (oracin) es verdadera o falsa segn los valores de verdad o falsedad de los smbolos que la componen 4

Razonamiento lgico

Inteligencia Artificial 2011


12

Qu significa que una fbf sea cerrada?Qu particularidad tiene las frmulas cerradas, con respecto a su veracidad o falsedad, dada una interpretacin particular?
- Una VARIABLE ESTA LIGADA si est inmediatamente luego de un cuantificador o es una ocurrencia dentro del alcance de un cuantificador. - En caso contrario, diremos que la ocurrencia se encuentra LIBRE. - Una FRMULA CERRADA es una frmula que no presenta ocurrencias de variables libres. Por ejemplo, la frmula y x p(x,y) es cerrada, mientras que x p(x,y) no lo es, puesto que la variable y no est cuantificada aqu. - Sea F una FRMULA CERRADA e I una INTERPRETACIN I es un modelo para F si F es verdadera segn I (I satisface F) Sea x y p(x,y), una frmula de L, e I la siguiente interpretacin: D = N (conjunto de todos los nmeros naturales). Se puede observar que I es un modelo de la frmula. En I, la frmula toma el valor verdadero pues para cualquier nmero natural x, existe otro nmero natural y que es mayor que x. Sea ahora y x p(x,y) otra frmula de L, y mantenemos la interpretacin anterior I. Ahora, I no es un modelo de la frmula, pues en I la frmula toma el valor falso, dado que no todo natural tiene un menor, por ejemplo, el cero. - Sea F una frmula cerrada de un lenguaje de primer orden L: F es satisfacible si existe una interpretacin I tal que F es verdadera con respecto a I. F es vlida si para toda interpretacin I, F es verdadera con respecto a I. F es insatisfacible si existe una interpretacin I tal que F es falsa con respecto a I. F es no vlida si para toda interpretacin I, F es falsa con respecto a I.

Llenar la siguiente planilla segn el ejemplo de la primer fila.

12

respuestas extradas de TP3-Giaquinta-Miguel.pdf Razonamiento lgico

Inteligencia Artificial 2011

Escribir en Lgica de Primer Orden los siguientes enunciados expresados en lenguaje natural. Identifique Predicados y Cuantificadores
a) Un dragn es feliz si todas sus cras pueden volar. Los dragones verdes pueden volar. Un dragn es verde si al menos uno de sus progenitores es verde, y es rosa en cualquier otro caso.

Traduccin a LPO:
-

Predicados: dragon, feliz, crias, volar, verdes, progenitores, rosa. Cuantificadores: un, todas, los un x [(dragon(x) y[crias(y,x) volar(y)] feliz(x)] x [dragon(x)(verde(x) volar(x))] x [(dragon(x) y[progenitor(y,x) verde(y)] verde(x)]

b) Todos los periodistas son amigos de algn poltico. Algunos periodistas slo son amigos de los polticos.

Traduccin a LPO:
Predicados: periodista, amigo, poltico Cuantificadores: todos, algunos xy [periodista(x) politico(y) amigo(x,y)] xy [periodista(x) amigo(x,y) politico(y)]
-

Dadas las siguientes clusulas:

a) Cuales son clusulas de Horn?. Indicar qu clusulas de Horn son hechos y qu clusulas de Horn son Objetivos, Justifique su respuesta.
{P(x),P(x),Q(a)} {P(x),Q(x),R(x)} {P(x,x,z),Q(x,y),Q(y,z)} {M(1,2,x)} {P(x),Q(x),R(x)} {P(x,x,z),Q(x,y),Q(y,z)} {M(1,2,x)} No Es Es Es es clausula clausula de clausula de clausula de de Horn Horn Horn Horn regla objetivo hecho

b) Representar las clusulas de Horn en lenguaje Prolog (Revisar filminas de Prolog en Aula Virtual)
p(x):- q(x),r(x). ?- p(x,x,z) q(x,y),q(y,z). m(1,2,x).

Realizar los ejercicios A, B siguiendo los siguientes pasos:


a) b) c) d) Definir DOMINIO y Definir los PREDICADOS y FUNCIONES que se consideren necesarios Escribir las sentencias en lgica de predicados de primer orden (axiomas y teorema) NEGAR EL TEOREMA y pasar todas las sentencias a clusulas siguiendo los pasos estudiados en clase Utilizar REFUTACIN POR RESOLUCIN para llegar a la clusula vaca, utilizando las sustituciones que sean necesarias. (pueden utilizar el rbol de resolucin o armar una tabla). e) Responder a la PREGUNTA , indicando cmo se ha llegado a la respuesta

A. Sabiendo que Lanzarote ama a la reina Ginebra, Lanzarote no ama a ninguno de los amigos de Ginebra, el rey Arturo es amigo de Lanzarote, y los amigos de Lanzarote odian a quienes Lanzarote ama, a quin odia Arturo?

Traduccin a LPO:
Universo: amigos y amores - Predicados: amigo_de, ama_a, odia_a Cuantificadores: la, ninguno, los - Constantes: Lanzarote, Ginebra, Arturo Variables: X = amigo, Y = amor 1- ama_a(Lanzarote, Ginebra). 2- x [amigo_de(x,Ginebra) ama_a(Lanzarote,x)] 3- amigo_de(Arturo, Lanzarote). 4- x {amigo_de(x, Lanzarote) y [ama_a(Lanzarote,y) odia_a(x,y) ]}
-

Razonamiento lgico

Inteligencia Artificial 2011

Normalizacin a forma clausal:


1- ama_a(Lanzarote, Ginebra). es una clusula (Hecho) 2- x [amigo_de(x,Ginebra) ama_a(Lanzarote,x)] Eliminar x [amigo_de(x,Ginebra) ama_a(Lanzarote,x) ] Eliminar amigo_de(x,Ginebra) ama_a(Lanzarote,x) clusula amigo_de(x,Ginebra) ama_a(Lanzarote,x) 3- amigo_de(Arturo, Lanzarote). es una clusula (hecho) 4- x {amigo_de(x, Lanzarote) y [ama_a(Lanzarote,y) odia_a(x,y) ]} Eliminar x {amigo_de(x, Lanzarote) y [ama_a(Lanzarote,y) odia_a(x,y) ]} hacia delante x y {amigo_de(x, Lanzarote) (ama_a(Lanzarote,y) odia_a(x,y) )} Eliminar amigo_de(x, Lanzarote) (ama_a(Lanzarote,y) odia_a(x,y) ) clusula amigo_de(a, Lanzarote) ama_a(Lanzarote,y) odia_a(x,y) clusula

Planteamiento del problema. Base de conocimiento:


Clusulas
ama_a(Lanzarote, Ginebra) amigo_de(X,Ginebra) ama_a(Lanzarote,X) amigo_de(Arturo, Lanzarote) amigo_de(a, Lanzarote) ama_a(Lanzarote,y) odia_a(x,y)

Por demostrar: z odia_a(Arturo,z) Negacin: z odia_a(Arturo,z) Negacin de hiptesis: odia_a(Arturo,Z) Solucin


padre 1
odia_a(Arturo,Z) ama_a(Lanzarote,Y)

padre 2
ama_a(Lanzarote,Y) odia_a(a,Y) ama_a(Lanzarote, Ginebra)

unificador
{ Z / Y} { X / Ginebra }

resolvente
ama_a(Lanzarote,Y) (contradiccin)

La consulta se cumple para Z = Y = X = Ginebra. Como respuesta slo interesa desplegar el valor de las variables de la consulta. En este caso concreto, la respuesta es Z = Ginebra.
Prolog ama_a(Lanzarote, Ginebra). amigo_de(X,Ginebra) 5 ama_a(Lanzarote,X). amigo_de(Arturo, Lanzarote). amigo_de(a, Lanzarote). ama_a(Lanzarote,Y)7 odia_a(a,y). 5odia_a(Arturo,Z)

B. Todos los que ayudan a Juan viven en casa de Manolo. Antonio ayuda a todos aquellos con los que trabaja. Trabajan con Juan todos los amigos de Carlos. Antonio es amigo de Carlos. Quin vive en casa de Manolo?

Traduccin a LPO: x [Ayuda(x, Juan) ViveCon(x , Manolo)] x [Trabaja(Antonio, x) Ayuda(Antonio, x)] x [Amigo(x, Carlos) Trabaja(x, Juan)]
Amigo(Antonio, Carlos) demostrar z [ViveCon(z,Manolo)]

Razonamiento lgico

Inteligencia Artificial 2011

FNC de KB and Alfa:


1. 2. 3. 4. 5.

Ayuda(x, Juan) ViveCon(x , Manolo) Trabaja(Antonio, x) Ayuda(Antonio, x) Amigo(x, Carlos) Trabaja(x, Juan) Amigo(Antonio, Carlos) ViveCon(z,Manolo)
padre 1
ViveCon(z,Manolo) Ayuda(x, Juan) Trabaja(Antonio, x) Amigo(x, Carlos)

Resolucin:
padre 2
Ayuda(x, Juan) ViveCon(x , Manolo) Trabaja(Antonio, x) Ayuda(Antonio, x) Amigo(x, Carlos) Trabaja(x, Juan) Amigo(Antonio, Carlos)

unificador
{ Z / X} { X / Antonio, Juan/X} { Antonio/ X, X/ Juan} { X / Antonio}

resolvente
Ayuda(x, Juan) Trabaja(Antonio, x) Amigo(x, Carlos) (contradiccin)

Z = X = Antonio Respuesta: Antonio vive con Manolo.

Suponga que tiene el siguiente conjunto de reglas. Conteste la pregunta: Debera comprar una casa?. Justificar explicando el mecanismo de razonamiento por ENCADENAMIENTO, utilizado. Utilizar ENCADENAMIENTO HACIA DELANTE con el dato de inflacin baja, y ENCADENAMIENTO HACIA ATRS con el dato de inflacin alta.
Regla 1: IF inflacion es baja THEN tasa_interes es baja

ELSE tasa_interes es alta


Regla 2: IF tasa_interes es alta THEN precio_viviendas es alta

ELSE precio_viviendas es baja


Regla 3: IF precio_viviendas es alta THEN no_comprar_casa

ELSE comprar_casa

Pregunta: comprar_casa? a) Encadenamiento hacia adelante: Hecho: inflacion es baja Objetivo: comprar_casa
1- Se infiere que tasa_interes es baja por Regla 1. 2- Se infiere que precio_viviendas es baja por Regla 2. 3- Por Regla 3 podemos afirmar que debiera comprar una casa.

b) Encadenamiento hacia atras: Hecho: inflacion es alta Objetivo: comprar_casa


1- Por Regla 3 se infiere precio_viviendas es alta. 2- Por Regla 2 se infiere tasa_interes es alta. 3- Por Regla 1 podemos decir que inflacion es alta, con esto llegamos al hecho por lo tanto el objetivo comprar_casa es verdadero.
13a.

Hacia adelante

13

Respuesta extrada de TP3-Fratte-Daniel.pdf Razonamiento lgico

Inteligencia Artificial 2011

b. Hacia atrs

14

a. Hacia adelante

DEBE COMPRAR LA CASA b. Hacia atrs

14

Respuesta extrada de TP3-savio-facundo.pdf Razonamiento lgico

Inteligencia Artificial 2011

NO DEBE COMPRAR LA CASA

Razonamiento lgico

10

Inteligencia Artificial 2011

Problema de caeras15
Una empresa desea disear un sistema de razonamiento automtico para tomar decisiones sobre la canalizacin de las aguas a travs de su red de distribucin. En concreto, su red de distribucin est constituida por una cantidad arbitraria de depsitos (denominados genricamente con las letras A, B, . . . ) de los que salen canales que discurren en paralelo hasta un nmero igual de destinos, identificados con los nmeros 1, 2 . . . Entre los canales, puede haber tuberas que desvan todo el agua que llega de un canal hasta otro inmediatamente adyacente, en cualquier sentido.
Figura 1: Modelo de distribucin de aguas entre tres depsitos y destinos

Por ejemplo, la figura 1 muestra el caso de tres canales entre tres depsitos (A, B y C), hasta tres destinos diferentes (1, 2 y 3), entre los que se han dispuesto hasta tres tuberas entre canales adyacentes. Se debe asumir que las tuberas siempre estn abiertas y que, por ello, conducirn todo el caudal de agua que les llegue desde un canal hasta otro. Asimismo, solo esta abierto un nico depsito al mismo tiempo. Por lo tanto, si se abriera el depsito de A, todo el agua se conducira hasta el destino marcado con el nmero 2, pasando primero por la tubera que va de A a B, desde donde llegara a C por la segunda tubera y volvera, nuevamente, a B por la ltima tubera; o si nada mas que se abrieran las llaves de paso del depsito C, entonces el agua llegara nicamente hasta el destino 3; por ltimo, el agua desde B llegara hasta 1. Se pide: 1) Modelizar la red de canales y tuberas de la figura 1 con el uso de la LGICA PROPOSICIONAL, detallando los literales y reglas necesarios para ello

Los canales no tienen por qu modelizarse realmente y basta con describir secuencial mente los elementos que contienen. Puesto que el agua siempre circula en la misma direccin, puede asumirse que los canales estn divididos en pasos o etapas como muestra la figura 2, numerados ascendentemente desde los depsitos hasta los destinos.

Figura 2: Los canales se modelizan en pasos o etapas

En concreto, los canales se han dividido en cuatro pasos diferentes. Los tres primeros sirven para identificar la posicin en la que se han dispuesto tuberas entre canales. El ltimo tiene un propsito diferente y sirve para determinar el punto de cada canal en el que no hay ms tuberas y, por lo tanto, estn directamente conectados con los destinos o salidas. Su propsito se entender mejor al presentar las reglas que rigen el movimiento del agua en la red de la figura 1 Por lo tanto, los LITERALES necesarios para modelizar la red son: - Depsitos Los depsitos se identificarn con el literal dX donde X representa el nombre de un depsito. En concreto, en la figura 1 hay hasta tres depsitos: dA, dB y dC . - Destinos Anlogamente, cada destino se modelar con literales sY . En el caso de la figura 1 habr hasta tres: s1, s2 y s3 . - Tuberas Las tuberas sirven para conducir el agua y, por lo tanto, su comportamiento se modelar con el uso de REGLAS. Cada tubera desde un canal i hasta otro canal adyacente, j, en el paso k, se transcribe como: pik pj(k+1) . El hecho de que el consecuente de cada regla incremente el valor del paso sirve, precisamente, para indicar que el agua progresa en el siguiente canal. Adems, puesto que el agua puede transcurrir en cada tubera en cualquier sentido (segn venga por el primer o segundo canal), la misma tubera generar, adems, otra regla del modo pjk pi(k+1)
15

Examen de teora Septiembre 2008. Inteligencia Articial. Ingeniera Tcnica en Informtica de Gestin. Departamento de Informatica - Universidad Carlos III de Madrid Razonamiento lgico

11

Inteligencia Artificial 2011

En concreto, las tres tuberas de la figura 1 se representan en lgica proposicional con las SEIS REGLAS siguientes:

Sin embargo, esta modelizacin no es suficiente ni para mostrar cmo llega el agua hasta la red de distribucin, ni cmo sale de ella. En realidad, hacen falta reglas adicionales para iniciar el movimiento del agua cuando se abre una llave en uno de los depsitos (y slo uno!), y para indicar cmo el caudal se acumula en uno de los destinos o salidas: - Entrada La entrada del agua se hace, simplemente, con reglas que indican que cuando se usa un determinado depsito (identificado con un literal de la forma dX), el agua llega necesariamente al primer paso en el que haya una tubera de ese mismo canal16. As, las reglas que rigen la entrada de agua en la figura 1 son:

- Salida La salida se rige, igualmente, por reglas que determinan el punto por el que saldr el agua. Sin embargo, aqu hay un pequeo detalle que debe resolverse: si nada ms se numeran los puntos en los que hay tuberas, cuando el agua llega a la ltima tubera no sera posible saber si es que cambiar de canal o, por el contrario, progresar por el mismo canal hacia su salida. Es precisamente por este motivo por el que, como se anticipaba antes, es preciso disponer de un paso adicional (el cuarto en el caso de la figura 2) para distinguir un caso del otro: en el paso tres, el agua cambia de canal y en el cuatro se dirige hacia la salida. Las reglas para la descripcin de la salida del agua son anlogas a las de la entrada y resultan ser17 :

2) Es posible deducir automticamente hasta qu destino llegara el agua desde el depsito B con la modelizacin del apartado anterior? Si es as, cmo?, y si no es as, POR QU? Por supuesto que se puede. Para ello, basta con usar repetidamente el modus ponens. En concreto, si se abre la llave de paso en el depsito B, entonces dB es cierto. Usando la regla del modus ponens sobre la regla dBpB1 , que rige la entrada de agua en todo el sistema, se concluye necesariamente que el agua llega hasta el primer paso del canal b, que es precisamente lo que indica el consecuente de la regla usada: pB1 . A continuacin, la regla pB1pA2 que modeliza la primera tubera con la que se encuentra el agua en el canal B, sirve para deducir, automticamente (nuevamente en virtud del modus ponens), pA2 o, lo que es lo mismo, que el agua transcurre ahora por el segundo paso del canal A. Por ltimo, la regla de salida pA2s1 , servir para concluir de la misma manera s1 o, equivalentemente, que todo el agua llega hasta el primer destino. 3) Es razonable el uso de la lgica proposicional para la modelizacin de redes de distribucin arbitrariamente grandes? Si o no, y POR QU?. No lo es en absoluto. Mientras que la ventaja de la lgica proposicional es que es decidible, lo cierto es que adolece de capacidad de generalizacin. En concreto, todas las afirmaciones sobre grandes colecciones de individuos resultan en la definicin de muchos literales y reglas esencialmente repetitivos. Este problema se resolver, precisamente, con el uso de la lgica de predicados en el siguiente punto.
16

En particular, ntese que la entrada de agua desde el depsito C se puede hacer directamente hasta el segundo paso, puesto que antes no hay ninguna tubera que desve el movimiento del agua 17 Como ocurriera con las entradas, ntese ahora que la salida a 1 se puede modelizar en el canal a desde el paso 2 y es que a partir de l ya no hay tuberas que desven el curso de su caudal 12 Razonamiento lgico

Inteligencia Artificial 2011

4) Modelizar la red de canales y tuberas de la figura 1 con el uso de la LGICA DE PREDICADOS, detallando los predicados y reglas necesarios para ello. Naturalmente, para la modelizacin con lgica de predicados, deben tenerse en cuenta los mismos elementos y comportamientos identificados en el apartado 1. Sin embargo, en vez de usar literales, ahora es preciso distinguir PREDICADOS (que describirn el qu) y sus relaciones (o el cmo), con el uso de REGLAS. En realidad, ahora el esfuerzo de modelizacin es un poco mayor porque es preciso hacer una descripcin general de cualquier red de distribucin. En concreto: - Depsitos. Los depsitos se identificarn con el predicado Deposito(x) donde x representa el nombre de un depsito. En concreto, en la figura 1 hay hasta tres depsitos: Deposito(A), Deposito(B) y Deposito(C). - Destinos. Anlogamente, cada destino se modelar con predicados de la forma Destino(y). En el caso de la figura 1 habr hasta tres: Destino(1), Destino(2) y Destino(3) - Tuberas Como ocurriera en el caso de la lgica proposicional, las tuberas se describirn con reglas que determinarn el flujo del agua. En concreto, una tubera que progresa desde un canal i hasta otro canal j, en el paso k, se modelizar como: [agua(i,k) tuberia(i,j,k) succ(k,k) agua(j,k)], donde agua(i,k) representa la observacin de que el agua ha llegado hasta el paso k del canal i, y tuberia(i,j,k) representa que hay una tubera que vincula los canales i y j precisamente en el paso k. Asimismo, es preciso observar que la lgica de predicados no tiene una representacin aritmtica implcita. Por lo tanto, es preciso modelar la relacin de sucesin entre los nmeros naturales (que representan las fases o etapas por las que progresa el agua) con un predicado dedicado, succ(k,k), que representa el hecho de que k es el sucesor de k. Ahora bien, en lgica de predicados es posible utilizar VARIABLES para generalizar la representacin del conocimiento. Por lo tanto, en vez de tener tantas reglas como tuberas, basta con una:18
R1:i,j,k,k [agua(i,k) tuberia(i,j,k) succ(k,k) agua(j,k)]

Que, sin embargo, no es suficiente para representar los dos sentidos de circulacin del agua. Por ello, es preciso aadir una segunda regla:
R2:i,j,k,k[agua(j,k) tuberia(i,j,k) succ(k,k) agua(i,k)]

Canales A diferencia del caso de la lgica proposicional, aqu es necesario describir explcitamente tambin los puntos en los que no hay tuberas para modificar el flujo de circulacin del agua, esto es, en aquellos casos en los que agua continua transcurriendo por el mismo canal. El motivo es que mientras en el primer apartado era posible especializar cada regla para cada caso (como, por ejemplo, el hecho de que el agua desde C llega hasta el segundo paso inmediatamente), porque de hecho haba que describir una regla por tubera, ahora debe hacerse una descripcin generalizada. Por supuesto, podra simplemente usarse la expresin tubera(i,j,k), para indicar que el agua no cambia desde el canal i hasta el canal j, pero en este caso, no sera posible resolver el siguiente apartado con el uso de la deduccin hacia detrs puesto que es imperativo que todos los literales estn afirmados. Por lo tanto, se usar un predicado progreso(i,k)que indica simplemente que el agua continuar en el canal i, cuando se encuentre en el paso k. Las reglas que describen el paso del agua es, en este caso:
R3: i,k,k[agua(i,k) progreso(i,k) succ(k,k) agua(i,k)]

Por ltimo, es preciso tambin crear reglas especiales para describir la entrada y salida del agua en la red de distribucin: - Entrada Si el predicado deposito(x)sirve para identificar que se abre la llave de paso del depsito especificado, entonces la siguiente regla describe la entrada de agua desde cualquier punto: R4: x[deposito(x) agua(x,1)] - Salida Anlogamente, si el predicado destino(y)representa, tambin, el hecho de que se recibe agua en y, entonces todas las salidas se describen simplemente como:
R5: x[agua(x,4) destino(x)]

donde el nmero 4 sirve simplemente para identificar el ltimo paso de la figura 1


18

En lo sucesivo, se asume que nuestro sistema computacional est debidamente poblado de tantos predicados Succ(1, 2), Succ(2, 3), . . .como haga falta

Razonamiento lgico

13

Inteligencia Artificial 2011

5) Demostrar el uso de la DEDUCCIN HACIA ATRS para determinar el depsito del que ha salido el agua que llega hasta el destino 3, empleando para ello, la modelizacin del apartado anterior (d). Usar directamente las reglas que son necesarias para resolver la deduccin. Antes de iniciar el proceso de deduccin automtica hacia detrs, es necesario determinar los contenidos iniciales de la BASE DE HECHOS con todas las observaciones iniciales. En concreto, para el caso de la figura 1, son instancias en el sistema las siguientes:19

En la demostracin que sigue, se utilizarn (tal y como adverta el enunciado) directamente las reglas que sirven para probar el objetivo solicitado, y no se intentar nunca la unificacin con reglas que no conducen a la solucin: (a) Para probar que el destino que recibe el agua es el tercero, esto es, que es el de Co, equivalentemente, el predicado destino(C) puede usarse la regla R5 que produce precisamente este literal con la unificacin
1={x=C}

Por lo tanto, sern objetivos del modelo de inferencia ahora, las premisas o clusulas del antecedente de la regla escogida en el paso anterior: agua(C,4) que debe leerse como que el agua llegue hasta el 4 paso del depsito C, que es el que se corresponde con el destino 3. Para probarlo, puede usarse la regla R1 con la unificacin 2={i=B,j=C,k=3,k=4}, que es precisamente la que modela el movimiento del agua en la ltima tubera que hay entre los depsitos B y C. Gracias a esta regla, la conclusin que quiere probarse ser cierta, si lo es el antecedente de la regla escogida una vez que se ha practicado la unificacin indicada: agua(B,3), tubera(B,C,3) y succ(3,4). El segundo predicado aparece, de hecho, en nuestra base de hechos original (H2), y el tercero tambin (ver nota a pie de pgina 4). Por lo tanto, queda por probar Agua(B,3). (c) Para probar que el agua llega, efectivamente, hasta el tercer paso del depsito B, es preciso que el agua fluya por la tubera que hay en el segundo paso desde C hasta B. Ser precisamente la regla R2 la que nos ayude a hacerlo. Para ello, se emplear la unificacin 3={i=B,j=C,k=2,k=3}, gracias a la cual puede concluirse que agua(B,3) ser necesariamente cierto si puede probarse simultneamente: agua (C,2), tubera(B,C,2) y succ(2,3). El segundo predicado aparece en la base de hechos inicial (H1) y el tercero es conocido tambin. Por lo tanto, ahora debe probarse agua(C,2). (d) En la figura 2 resulta fcil observar que el agua llegar al segundo paso del depsito C cayendo precisamente en vertical. Este movimiento est modelado precisamente por la regla R3 que se emplear con la unificacin 4={i=C,k=1,k=2}. De este modo, la conclusin (agua(C,2)) ser cierta si son ciertas las premisas: agua(C,1), progreso(C,1) y succ(1,2). Mientras que los dos ltimos predicados son conocidos (hecho H3 ) y relacin de sucesin, respectivamente, el primero debe probarse explcitamente. (e) Precisamente, la aparicin del agua en el primer paso se modela explcitamente con la regla R4 que establece que el agua llegar hasta el primer paso del canal C si se abre precisamente el depsito C, si dicha regla se lee con la unificacin 5={x=C}. En conclusin, si se abre el depsito C, el agua llegar hasta la tercera salida. Ms an, al contrario que como sucediera con la deduccin hacia delante, la deduccin hacia detrs proporciona una explicacin pormenorizada del motivo por el que esto es cierto. Esto es, una explicacin completa que puede leerse siguiendo ahora los pasos anteriores al revs: el agua sale del depsito C, llega hasta el segundo paso del tercer canal, desde donde fluye por la tubera que le une con B y vuelve de nuevo al canal C a lo largo de una segunda tubera desde la que cae hasta la salida del tercer depsito
(b)

19

Junto con las de Succ(1, 2), Succ(2, 3), . . . como se indic anteriormente Razonamiento lgico

14

Inteligencia Artificial 2011

Modelar con lgica proposicional el juego de piedra, papel o tijera Lgica proposicional - juego de piedra, papel o tijera20
Las proposiciones necesarias seran: pi1: el jugador 1 saca piedra pa1: el jugador 1 saca papel ti1: el jugador saca tijera pi2: el jugador 2 saca piedra pa2: el jugador 2 saca papel ti2: el jugador 2 saca tijera e: empate g1: gana el jugador 1 g2: gana el jugador 2 Las reglas son:
R1: R2: R3: R4: R5: R6: R7: R8: R9: pi1 pa2 gana2 pi1 ti2 gana1 pa1 pi2 gana1 pa1 ti2 gana2 ti1 pi2 gana2 ti1 pa2 gana1 pi1 pi2 e pa1 pa2 e ti1 ti2 e

Para hacer las inferencias en cada jugada se aadir las 2 proposiciones correspondientes a la jugada de cada jugador y se aplicar el modus pones. Por ejemplo
1) 2) 3) pi1 pa2 (Con 1, 2 y R1, por modus ponen se deduce) gana2

20

http://galahad.plg.inf.uc3m.es/~iat/ejercicios/sol-ejercicios-modelar.pdf Razonamiento lgico

15

Inteligencia Artificial 2011

Modelar el juego de 3 en raya con lgica de predicados


Lgica de predicados - juego de 3 en raya con21 Para modelar un problema con lgica de predicados hay que definir las formulas atmicas (literales o predicados y argumentos), las reglas o formulas bien formadas con implicacin y las posibles inferencias (por deduccin aplicando el modus pone + UNIFICACI N). Para identificar las casillas, ahora es mejor utilizar coordenadas X e Y que nos permitirn hacer reglas genricas sobre tres en raya en la misma fila y columna. Tomando como origen de coordenadas la equina superior izquierda, tal como se muestra en la figura, la modelizacion del problema sera: Predicados y argumentos

Reglas:

Inferencias. Cada vez que un jugador pone una marca se aade a los axiomas el literal correspondiente y se verifica si aplicando el modus pones con la sustitucin adecuada se puede deducir que jugador gana. Por ejemplo:

21

http://galahad.plg.inf.uc3m.es/~iat/ejercicios/sol-ejercicios-modelar.pdf Razonamiento lgico

16

Inteligencia Artificial 2011

3 en raya en prolog22

Tres en Raya en Prolog usando Algoritmo MINIMAX y Poda Alfa-Beta [Codigo en Swi-Prolog]23

22 23

http://www.infor.uva.es/~calonso/IAI/PracticasProlog/Tema4/Tema 4. Estructuras de Control.pdf http://www.como-programar.com/2009/09/tres-en-raya-en-prolog-usando-algoritmo.html Razonamiento lgico

17

Inteligencia Artificial 2011

B. PROLOG ESTUDIAR EL MATERIAL PUBLICADO EN EL AULA24 Dado el siguiente programa Prolog

b) Identificar: predicados, variables, constantes, estructuras y 25funciones. - Predicado: member - Funcin: elim_rep - Variables: X, Y, Xs, Ys - Constante [ ] - Estructura: [X|Xs], [X|Ys], [Y|Ys], c) Determinar el resultado de las siguientes consultas:
i)

ii) iii)

iv)

v)

vi)

Analizar el efecto del cut(!)26 empleado en el siguiente programa Prolog. (a) Determinar qu respuestas se obtienen de la consulta ?- p(X,Y).

24 25

Carpeta publicado en semana del 19 de abril: Apuntes Programacin Logica archivo El Clculo de Predicados trata con: Individuos que pertenecen a un dominio no vaco Funciones que definen nuevos individuos en trminos de los previamente conocidos Predicados que describen un conjunto de individuos que tienen una propiedad o relacin Adems se trata con formas proposicionales, estructuras que aparecen como senetencias declarativas, pero que no tienen valores definidos de verdad a causa de las variables individuales 26 Ayuda: lean el apuntes que est en la carpeta llamado 02 PROGRAMACIN DE LGICA CON PROLOG.pdf 18 Razonamiento lgico

Inteligencia Artificial 2011 (b)

Explicar claramente por qu se obtienen esas respuestas.


El operador cut(!) lo que hace es no volver en un proceso de reevaluacin, en este caso toma el primer valor de q() que es a y despus evala todos los valores de r(), y ah quiere volver a tomar el segundo valor de q() pero como se encuentra con cut termina ah noms.

27

28

29

27 28

Respuestra extraida de TP3-Fratte-Daniel.pdf Respuestra extraida de TP3-Gumiel-Ruben.pdf 29 Respuestra extraida de TP3-Corsino-Leandro.pdf Razonamiento lgico

19

Inteligencia Artificial 2011

Nota: Una vez asignado un valor ese se le queda a menos que se le quite por medio de backtracking. Toda la manipulacin de datos se hace por medio de unificacin . El programador puede afectar la ejecucin de un programa cambiando el orden de las clusulas y de las metas. Prolog tiene un predicado especial llamado ``CUT'' (!) que puede afectar el comportamiento procedural de los programas. Con el ! podemos prevenir Backtracking. Funcin principal: reducir el espacio de bsqueda de soluciones cortndolo dinmicamente Puede eliminar fcilmente el sentido declarativo de los programas. Para ver su uso ms fcil, consideremos una funcin que tiene predicados mutuamente exclusivos. e.g., una funcin escaln:
f(X,0) :- X < 3. f(X,2) :- X >= 3, X < 6. f(X,4) :- X >= 6.

Si preguntamos: ?- f(1,Y), 2 < Y. Prolog a travs del backtracking trata 2 soluciones que se ven que van a fallar Las 3 reglas son mutuamente exclusivas por lo que en el momento de que una jala, no tiene sentido en tratar con las otras 2. Esto puede hacerse con el !.
f(X,0) :- X < 3, !. f(X,2) :- X >= 3, X < 6, !. f(X,4) :- X >= 6.

Todava podemos reducir ms el cdigo: Idea: si la primera clusula falla ya sabemos que X >= 3 (lo mismo para la primera condicin de la tercera clusula)
f(X,0) :- X < 3, !. f(X,2) :- X < 6, !. f(X,4).

En principio da el mismo resultado, pero le quitamos el sentido lgico (si le quitamos los cuts nos da varias soluciones) Usos: - decirle que ya encontr una solucin correcta - decirle que si llegaste ah, entonces falla (en conjuncin con fail) Que hace ! ? - poda todas las clusulas debajo de sta - poda todas las posibles soluciones al lado izquierdo del cut - no afecta el lado derecho Para entender ms claramente la funcin del CUT: Meta Padre: la meta que apare la cabeza de la clusula que tiene el ! Cuando se encuentra el ! como meta, sta se cumple, pero ``compromete'' al sistema a todas las opciones hechas entre la meta padre y el ! (i.e., las otras posibles opciones entre la meta padre y el ! se eliminan)

e.g., (poner rbol AND/OR)


P P P A ::::Q, S, U, B, R. !, T. V. P, C.

Afecta el comportamiento de ``P'' pero no de ``A''

Razonamiento lgico

20

Inteligencia Artificial 2011

Implementar30 en Prolog la versin recursiva y la versin iterativa de las siguientes funciones:


Crdito extra (quedan para hacer en el Informe del Laboratorio 3).

a) Fibonacci. Un ejemplo clsico es Fibonacci31: el nmero N de Fibonacci (excepto los 2


primeros que es 1) es = f(N-1) + f(N-2)
fibo(1,1). fibo(2,1). fibo(N,F) :- N>2, N1 is N-1, fibo(N1,F1), N2 is N-2, fibo(N2,F2), F is F1+F2, asserta(fibo(N,F)). % Nuevo para guardar resultados

Otra forma de hacerlo es guardar los resultados al ir hacindolo. Aumentar 2 argumentos mas para tener estos resultados parciales (de N - 1 y de N -2) Osea: ffibo(2,N,F-1,F-2,(F-1 + F-2))
ffibo(N,F) :- ffibo(2,N,1,1,F). ffibo(M,N,F1,F2,F2) :- M >= N. ffibo(M,N,F1,F2,F) :- M < N, M1 is M + 1, NF2 is F1 + F2, ffibo(M1,N,F2,NF2,F).

b) Factorial. Para todo nmero natural n, se llama n factorial o factorial de n al producto de todos los naturales desde 1 hasta n:
Que de un modo resumido se puede expresar como: Se define 0! = 1, para que la relacin n! = n (n 1)! sea tambin vlida para n = 1. Esta relacin permite definir los factoriales por recursividad. La notacin n! fue popularizada por el matemtico francs Christian Kramp.

producto(X,Y,Z):- Z is X*Y. factorial(1,1). factorial(X,Y):- X>1, X1 is X-1, factorial(X1,Z), producto(X,Z,Y).

o
factorial(0.1) :-!. factorial(X,Y) :- X>0 , X1 is X-1, factorial(X1,Y1), Y is X*Y1.

c) Coeficientes binomiales Los coeficientes binomiales o combinaciones son una serie de nmeros estudiados en combinatoria que indican el nmero de formas en que se pueden extraer subconjuntos a partir de un conjunto dado. Sin embargo, dependiendo del enfoque que tenga la exposicin, se suelen usar otras definiciones equivalentes32

Escoger k elementos a partir de un conjunto de n

factorial(0.1) :-!. factorial(X,Y) :- X>0, X1 is X-1, factorial(X1,Y1), Y is X*Y1. binomial(N,K,R):- factorial(N,NF), factorial(K,KF), L is N-K, factorial(L,LF), Y is KF*LF, R is NF/Y.

30 31

Ayuda: lean el apuntes que est en la carpeta llamado Ejercicios de programacin declarativa con prolog.PDF http://ccc.inaoep.mx/~emorales/Cursos/Prolog/ 32 http://es.wikipedia.org/wiki/Coeficiente_binomial Razonamiento lgico

21

Inteligencia Artificial 2011

Avanzado. 1) Considere el siguiente algoritmo general de bsqueda:

a) En qu parte del algoritmo se determina la estrategia de bsqueda utilizada? Explique su respuesta. El predicado 33seleccionar(Nodo,Frontera,F) en el caso que cuando seleccione elija cual va a seleccionar y no lo haga en orden; o el predicado agregar(F,Vs,F1) en el caso que el seleccionar lo haga en algn orden ac cuando los agreguemos a la frontera tendramos que ponerlos en el orden que los necesitemos.
34

35

33 34

Respuestra extraida de TP3-Anitori-Luis-Martin.pdf Respuestra extraida de TP3-Barraquero-Matias.pdf 35 Jorge Baier Aranda, PUC https://forja.rediris.es/docman/view.php/82/300/busqueda1.pdf Razonamiento lgico

22

Inteligencia Artificial 2011

Razonamiento lgico

23

Inteligencia Artificial 2011

BUSQUEDA GENERICA SIN REPETICION DE ESTADOS

Razonamiento lgico

24

Inteligencia Artificial 2011

Razonamiento lgico

25

Inteligencia Artificial 2011

b) De que forma medicara el algoritmo para obtener la solucin de la bsqueda, es decir, el camino desde el estado inicial a la meta hallada? Analice distintas formas en las que se podra obtener o reconstruir este camino.

36

37

36 37

Respuestra extraida de TP3-Barraquero-Matias.pdf Respuestra extraida de TP3-Corsino-Leandro.pdf Razonamiento lgico

26

Inteligencia Artificial 2011

Escribir un programa Prolog que represente el grafo38

Suponga que cada uno de los nodos representa una ciudad y los arcos representan caminos (ida y vuelta) entre pares de ciudades. La etiqueta de cada arco representa la distancia entre ciudades. Se desea encontrar un camino desde una la ciudad a a cualquiera de las metas. Las metas son las ciudades f y g. Considere la siguiente funcin heurstica h definida sobre cada uno de los nodos: h(a)=20, h(b)=10, h(c)=15, h(d)=7, h(e)=5, h(f)=h(g)=0 a) Siguiendo el algoritmo general de bsqueda dado en el ejercicio anterior, implementar en Prolog un algoritmo buscar(Frontera) que implemente bsqueda a lo ancho. Considerar que junto con la representacin del grafo, existe un hecho esMeta/1 por cada nodo que es meta. En este caso:
esMeta(f). esMeta(g).

b) Implementar el predicado de forma tal que se muestre por pantalla los nodos que son seleccionados a medida que avanza la bsqueda. (Utilizar los predicados write/1 y nl/0). c) Modificar el predicado implementado para hacer bsqueda en profundidad. Considerar que el grafo tiene ciclos, por lo tanto es necesario evitarlos en el proceso de bsqueda. Para ello se debera mantener, adems de la frontera de la bsqueda, una lista con los nodos ya explorados. d) Modificar la representacin del grafo adoptada en el inciso a para representar los costos de los arcos y el valor de la funcin heurstica en cada nodo. e) Utilizando la representacin del ejercicio anterior, definir un predicado que implemente el algoritmo de bsqueda heurstica A*. Para almacenar los nodos de la frontera y los nodos ya explorados, mantener, respectivamente, un conjunto de hechos dinmicos de la forma:
open(Nodo). closed(Nodo).

Donde, Nodo es un trmino Prolog que representa toda la informacin que debe mantenerse en un nodo para llevar adelante la bsqueda: etiqueta (estado), heurstica, camino desde el estado inicial, etc. En el proceso de bsqueda, al generar los vecinos de un nodo N, se debe agregar dinmicamente un hecho de la forma open(V), por cada vecino V de N que haya sido generado. Cuando un nodo N termina de ser explorado (i.e. sus vecinos han sido generados) dicho nodo debe ser eliminado de la frontera. Para ello, se eliminara dinmicamente el hecho open(N) y se agregara el hecho dinmico closed(N) para indicar que dicho nodo ya ha sido explorado. Importante: La implementacin del predicado debe tener en cuenta que, durante la bsqueda, un nodo ya generado o ya explorado podra ser descubierto nuevamente sobre un camino ms promisorio. En ese caso, el nodo debe ser explorado nuevamente.

38

http://cs.uns.edu.ar/~grs/InteligenciaArtificial/ Razonamiento lgico

27

Inteligencia Artificial 2011


39

a)
esMeta(f). esMeta(g). vecinos(a,[b,c,d]). vecinos(b,[a,c,d,e,g]). vecinos(c,[a,b]). vecinos(d,[a,b,f]). vecinos(e,[d,f,g]). vecinos(f,[d,e]). vecinos(g,[b,e]). agregarAlFinal(F,Vs,F1), buscarEn(F1,Resultado). agregar(F,[],[F]). agregar(F,[X|Vs],[X|F1]):-agregar(F,Vs,F1). agregarAlFinal(F,[],F). agregarAlFinal(F,[X|Xs],F1):-agregar(X,F,L2), agregarAlFinal(L2,Xs,F1). seleccionar(N,F,F1):- primero(F,N), resto(F,F1). primero([X|_],X). resto([_|L],L). buscarEn(Frontera, [Nodo]) :- seleccionar(Nodo,Frontera,F), esMeta(Nodo) , !. buscarEn(Frontera, [Nodo|Resultado]) :- seleccionar(Nodo,Frontera,F), vecinos(Nodo,Vs), // Resultado devuelve una lista con todos los nodos que se van visitando de esta forma: ?- buscarEn([a],X). X = [a, b, c, d, a, c, d, e, g]

b)
esMeta(f). esMeta(g). vecinos(a,[b,c,d]). vecinos(b,[a,c,d,e,g]). vecinos(c,[a,b]). vecinos(d,[a,b,f]). vecinos(e,[d,f,g]). vecinos(f,[d,e]). vecinos(g,[b,e]). primero([X|_],X). resto([_|L],L). agregar(F,[],[F]). agregar(F,[X|Vs],[X|F1]):-agregar(F,Vs,F1). agregarAlFinal(F,[],F). agregarAlFinal(F,[X|Xs],F1):-agregar(X,F,L2), agregarAlFinal(L2,Xs,F1). seleccionar(N,F,F1):- primero(F,N), resto(F,F1). buscarEn(Frontera, [Nodo]) :- seleccionar(Nodo,Frontera,F), esMeta(Nodo) , !, write('El objetivo alcanzado es: '), write(Nodo). buscarEn(Frontera, [Nodo|Resultado]) :- seleccionar(Nodo,Frontera,F), write(Nodo), nl, vecinos(Nodo,Vs), agregarAlFinal(F,Vs,F1), buscarEn(F1,Resultado). // Ejemplo: ?- buscarEn([a],X). a b c d a c d e El objetivo alcanzado es: g X = [a, b, c, d, a, c, d, e, g]

39

Respuestra extraida de TP3-Corsino-Leandro.pdf Razonamiento lgico

28

Inteligencia Artificial 2011

c)
esMeta(f). esMeta(g). vecinos(a,[b,c,d]). vecinos(b,[a,c,d,e,g]). vecinos(c,[a,b]). vecinos(d,[a,b,f]). vecinos(e,[d,f,g]). vecinos(f,[d,e]). vecinos(g,[b,e]). primero([X|_],X). resto([_|L],L). seleccionar(N,F,F1):- primero(F,N), resto(F,F1). agregar(F,[],F). agregar(F,[X|Vs],[X|F1]):-agregar(F,Vs,F1). pertenece(X,[X|_]). pertenece(X,[_|Xs]):-pertenece(X,Xs). diferenciaListas([],_,[]). diferenciaListas([X|Xs],L,[X|Lr]):-not(pertenece(X,L)),diferenciaListas(Xs,L,Lr),!. buscarEn(Frontera, Explorados, [Nodo]) :- seleccionar(Nodo,Frontera,F), esMeta(Nodo), !, write('El objetivo alcanzado es: '), write(Nodo). buscarEn(Frontera, Explorados, [Nodo|Resultado]) :- seleccionar(Nodo,Frontera,F), write(Nodo), nl, vecinos(Nodo,Vs), diferenciaListas(Vs,Explorados,Vs1), agregar(F,Vs1,F1), buscarEn(F1,[Nodo|Explorados],Resultado). diferenciaListas([_|Xs],L,Lr):-diferenciaListas(Xs,L,Lr). /Ejemplo: ?- buscarEn([a],[],X). a b c d El objetivo alcanzado es: f X = [a, b, c, d, f]

40

% Arcos vecinos(a,[b,c,d]). vecinos(b,[a,c,d,e,g]). vecinos(c,[a,b]). vecinos(d,[a,b,f]). vecinos(e,[b,f,g]). vecinos(f,[d,e]). vecinos(g,[b,e]). % Soluciones esMeta(f). esMeta(g). % Manejo de listas estaen(E,[E|L]). estaen(E,[C|L]):- estaen(E,L). agregar(Lista,[C],Lista):- estaen(C,Lista). agregar(Lista,[C],[C|Lista]). agregar(Lista,[C|Nodos],Result):- estaen(C,Lista), agregar(Lista,Nodos,Result). agregar(Lista,[C|Nodos],[C|Result]):- agregar(Lista,Nodos,Result).

40

Respuestra extrada de TP3-Barraquero-Matias.pdf Razonamiento lgico

29

Inteligencia Artificial 2011

% costos y heursticas g(X,Y,Z):- g(Y,X,Z). g(a,b,10). g(a,c,20). g(a,d,15). g(b,g,15). g(d,f,5). g(e,f,10). h(a,20). h(b,10). h(c,15). arco(a,c,Y,X) :- h(c,X), costo(a,c,Y). arco(a,d,Y,X) :- h(d,X), costo(a,d,Y). arco(d,b,Y,X) :- h(b,X), costo(d,b,Y). arco(b,e,Y,X) :- h(e,X), costo(b,e,Y). arco(e,g,Y,X) :- h(g,X), costo(e,g,Y).

g(b,c,5). g(b,d,5). g(b,e,5). g(e,g,2). h(d,7). h(e,5). h(f,0). arco(a,b,Y,X) :- h(b,X), costo(a,b,Y). arco(d,f,Y,X) :- h(f,X), costo(d,f,Y). arco(c,b,Y,X) :- h(b,X), costo(c,b,Y). arco(f,e,Y,X) :- h(e,X), costo(f,e,Y). arco(b,g,Y,X) :- h(g,X), costo(b,g,Y).

h(g,0).

%BPAnchura: busqueda(Soluc):- estadoInic(X), buscarEn([X],[],Soluc). buscarEn(Frontera,Soluc,[Nodo|Soluc]):- seleccionar(Nodo,Frontera,F), write(Nodo), nl, esMeta(Nodo). buscarEn(Frontera,Soluc,[Nodo|Soluc1]):- seleccionar(Nodo,Frontera,F), write(Nodo), nl, vecinos(Nodo,Vs), agregar(F,Vs,F1), buscarEn(F1,Soluc,Soluc1). seleccionar(Nodo,[Nodo],[]). seleccionar(Nodo,[C|Frontera],[C|F]):- seleccionar(Nodo,Frontera,F). %BPProfundidad en grafo: busqueda(Soluc):- estadoInic(X), buscarEn([X],[],Soluc,[]). buscarEn(Frontera,Soluc,[Nodo|Soluc],Repetidos):- seleccionar(Nodo,Frontera,F), write(Nodo), nl, esMeta(Nodo). buscarEn(Frontera,Soluc,Soluc1,Repetidos):- seleccionar(Nodo,Frontera,F), write(Nodo), nl, estaen(Nodo,Repetidos), buscarEn(F,Soluc,Soluc1,Repetidos). buscarEn(Frontera,Soluc,[Nodo|Soluc1],Repetidos):- seleccionar(Nodo,Frontera,F), write(Nodo), nl, agregar(Repetidos,[Nodo],Repetidos1), vecinos(Nodo,Vs), agregar(F,Vs,F1), buscarEn(F1,Soluc,Soluc1,Repetidos1). seleccionar(Nodo,[Nodo|Frontera],Frontera).

Algoritmo A *
Es un algoritmo admisible y optimal (encuentra la solucin optima). Hay que darle una ayuda en forma de funcin heurstica f(n). Tiene que cumplir que para cualquier nodo devuelva el costo estimado del menor camino que va desde el nodo inicial hasta el nodo final y pase por el nodo n al que aplico la funcin. Debe asignarse a cada movida un costo c, que no puede ser infinitsimo, es decir que no tiende a cero. Entonces si me piden resolver en la menor cantidad de movidas, a cada regla le asigno costo uno y con eso al darme el menor costo, me da la menor cantidad de movidas. Costo de un camino es la sumatoria de los costos de los arcos del camino (grafo). Cuando el camino consta de ningn arco, el costo del camino es cero. La funcin heurstica f(n) esta formada por la suma de dos funciones, g(n) que es el costo estimado del menor camino que va desde el nodo inicial hasta el nodo en que se aplico la funcin, y h(n) que es la funcin que nos da el costo estimado del mejor camino que va desde el nodo en que se aplica la funcin hasta el nodo final. Se cunple que: F(n)=G(n)+H(n) F(ni)=F(nf) G(ni)=0 G(nf)=F(nf) H(ni)=F(ni)=F(nf) 30 Razonamiento lgico

Inteligencia Artificial 2011

H(nf)=0 Para que el algoritmo sea A* debe cumplirse que: " n / G(n) >= G*(n) (estimacin por exceso del real) (G*(n) es el costo real) " n / H(n) <= H*(n) (estimacin por defecto del real) posicin optimista

41

El algoritmo A * en Prolog (traduccin por google)

Trata sobre la bsqueda heurstica utilizando un algoritmo de Nilsson (1980). Bsqueda heurstica utiliza una funcin heurstica para ayudar a guiar la bsqueda. Cuando un nodo se expande, cada uno de sus hijos se evala utilizando una funcin de bsqueda. Cada sucesor es colocado en una lista de nodos - llamada lista abierta - Con el fin determinado por la evaluacin de la funcin de bsqueda (valores ms pequeos primero). La estimacin de la funcin heurstica se debe hacer para alcanzar una meta de el nodo en cuestin. Normalmente, la funcin de bsqueda f se expresa como: f (n) = g (n) + h (n) donde g (n) representa el costo (calculado, real) de llegar al nodo n a lo largo del camino desde la raiz a el nodo actual, y h es la funcin heurstica de dicho nodo. Por lo tanto, f (n) son las estimaciones de costes o esfuerzo para conseguir con xito de principio a fin por pasar por el nodo n (junto algn camino particular, particular). Aqu hay un pseudocdigo sencillo.
1. 2. 3. 4. Comience con el nodo de inicio, colquelo en la lista (previamente vaca) abierto. Sea n el primer nodo de abierto. Retire n de abierto. Fallar si abierto est vaco. Si n es el objetivo, entonces uno se ha encontrado solucin. (Uno podra detenerse aqu.) Ampliar n, la obtencin de todos sus hijos, y evaluar f (-) para cada uno de ellos. Inserte cada uno de estos nios en abierto, Mantener el orden en que el f ms pequeo (-) los valores son lo primero. 5. Repita desde el paso 2.

Cuando un objetivo se ha alcanzado, sin duda uno le gustara ser capaz de devolver el solucin de ruta de acceso desde el inicio hasta la meta. El pseudocdigo caso omiso de esta caracterstica, pero se incluir como prototipo de programa Prolog se desarrolla. Un coste comn funcin g (-) es longitud de trayectoria. El costo de obtener de la nodo inicial a un nodo actual es la longitud de la trayectoria de referencia. Esto puede ser computado de forma incremental, como se ver. Es importante darse cuenta de que este tipo de bsqueda puede seguir una contigua camino por un tiempo, hasta que algn nodo n no elegido previamente tiene la menor corriente f (-) El valor, en cuyo caso se expande este nodo n, y sus nios considerados. Ahora para el programa Prolog para la bsqueda * A. Supongamos que Estado se refiere a una determinada descripcin del estado de una bsqueda. Por ejemplo Estado podra ser una descripcin de la pieza 8-puzzle para una configuracin especfica, como desarrollado en la siguiente seccin. Un Nodo en el espacio de bsqueda (o grfico) las necesidades para registrar la Estado, La Profundidad (O de paso de luz desde el principio), la valor de f (-) para el nodo F, Y una lista de los antepasados Un de este nodo. Vamos a utilizar la estructura temporal de Prolog
Nodo = # Estado Profundidad # F # A

para un nodo. Cundo Nodo se ampla para encontrar a sus hijos ... - El estado de cada nio se computar como un movimiento desde Estado - cada uno de estos nios tendrn la profundidad Profundidad + 1, - la f (-) el valor de cada nio se calcular, y - la lista de los antepasados de un nio ser la lista Prolog [plazoNodo|Un].
41

http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/5_1.html Razonamiento lgico

31

Inteligencia Artificial 2011

En general, si el Profundidad es reemplazar por algunos otros costos, el nodo la representacin ser similar, slo sustituir Profundidad por un costo, y calcular de manera apropiada. Adems, veremos en la siguiente seccin (8-puzzle) que la lista podra ser antepasado ms conveniente guardar como una lista de acciones simblicas (utilizados para alcanzar estados sucesivos), ms bien que como una lista de los nodos que se completa. Otras modificaciones del prototipo * Un algoritmo presentado en esta seccin puede ser, dependiendo de la solicitud. El predicado principal del programa es
solve(Start,Soln) :- f_function(Start,0,F), search([Start#0#F#[]],S), reverse(S,Soln). f_function(State,D,F) :- h_function(State,H), F is D + H.

El 'Start' variable se refiere a la descripcin del estado inicial. La primera parmetro para la bsqueda representa el predicado abierto lista. El 'h_function' definicin debe ser suministrado con la aplicacin particular.
search([State#_#_#Soln | _], Soln) :- goal(State). search([B|R],S) :- expand(B, Children), insert_all(Children, R, NewOpen), search(NewOpen,S).

La versin de la 'expansin' predicado dado aqu simplemente usa PROLOG bagof computacin (por lo tanto una agrupacin de mucho trabajo).
expand(State#D#_#A, All_My_Children) :bagof(Child#D1#F#[Move|A], ( D1 is D + 1, move(State,Child,Move), f_function(Child,D1,F) ) , All_My_Children).

El (depende de la aplicacin) 'mover' predicado debe generar el 'Nio' estados, de tal forma que se obtenerlos todos en retroceso. (Vase el ejemplo 8-puzzle en la siguiente seccin.) Como ya se ha dicho, el 'Move' puede ser el todo nodo padre s mismo o algn sustituto adecuado. (En realidad, hay que volver a escribir el 'ampliar' clusula si uno va a usar el nodo conjunto, ms bien una representacin simblica, como lo hacemos en la siguiente seccin.) Aqu est el cdigo para insert_all. Es un tipo familiar de insercin-tipo algoritmo de ...
insert_all([F|R],Open1,Open3) :- insert(F,Open1,Open2), insert_all(R,Open2,Open3). insert_all([],Open,Open). insert(B,Open,Open) :- repeat_node(B,Open), ! . insert(B,[C|R],[B,C|R]) :- cheaper(B,C), ! . insert(B,[B1|R],[B1|S]) :- insert(B,R,S), !. insert(B,[],[B]). repeat_node(P#_#_#_, [P#_#_#_|_]). cheaper( _#_#H1#_ , _#_#H2#_ ) :- H1 < H2.

Razonamiento lgico

32

Potrebbero piacerti anche