Está en la página 1de 6

Resolucin en clculo proposicional. Sustitucin, Unificacin. Regla de resolucin en clculo de predicados.

Algoritmo de Unificacin:
http://www.uhu.es/nieves.pavon/pprogramacion/temario/anexo/anexo.html

Algoritmo de Unificacin. Podemos definir la Unificacin como un procedimiento de emparejamiento que compara dos literales y descubre si existe un conjunto de sustituciones que los haga idnticos. La idea bsica de la unificacin es muy sencilla. Para unificar dos literales vamos recorrindolos de izquierda a derecha. En primer lugar se comprueba si los predicados coinciden. Si es as, seguimos adelante; si no es que no son unificables. Si el predicado concuerda, comenzamos a comparar los argumentos. Si el primero de ellos coincide en ambos literales, continuamos con el siguiente... y as hasta completar todos los argumentos. Como resulta obvio, ambos literales deben tener el mismo nmero de argumentos. Para conseguir que cada argumento de un literal sea coincidente con su homlogo en el otro literal, debemos buscar una sustitucin que nos permita emparejarlos. La nica condicin que debe reunir esta sustitucin es que ha de aplicarse a todo el literal, es decir, que la sustitucin afecta a todo el literal, y no slo al argumento en cuestin. Por decirlo de una manera sencilla, las sustituciones se van arrastrandoa lo largo del proceso de unificacin.
Ejemplo: Vamos a unificar P(x, x) con P(y, z):

Primera sustitucin: (y/x) Resultado: P(y, y) P(y, z)

Segunda sustitucin: (z/y) Resultado: P(z, z) P (z, z)

La sustitucin resultante es la composicin de las sustituciones: s = { z/y , y/x}

Describamos a continuacin los pasos bsicos del algoritmo de unificacin: Tomamos como entrada dos clusulas, R y S.

1. Si R = S entonces R y S son unificables. 2. Si no, localizar el smbolo ms a la izquierda de R que se diferencia de su homlogo en S 1. Si es el primero (predicado), entonces R y S no son unificables. 2. Si es uno de los argumentos, entonces sean t1, t2 los trminos en los que difieren. 1. Si ninguno de los dos (t1, t2) es una variable, entonces las clusulas no son unificables. Tampoco lo sern si siendo uno de ellos una variable, est presente en las variables del otro. 2. Si t1 es una variable x y no est entre las variables del otro t2, entonces haremos la sustitucin: s = {x/t2} 3. Volver al paso 1. A partir del algoritmo de unificacin podemos extraer las siguientes conclusiones: a. Podemos sealar como unificables todas aquellas clusulas que no coincidan en su predicado y nmero de argumentos. b. Antes de intentar la unificacin debemos asegurarnos que no existen variables comunes en ambas clusulas. c. Debemos recordar siempre las condiciones que debe reunir una sustitucin y que sta debe ser nica.
Ejemplo: Unificacin de las sentencias R (x, f(g(x)), a) y R (b, y, z) Trminos desiguales Sustitucin Resultado

t1 = x t2 = b x/b - R(b, f(g(b)), a) , R(b, y, z)

t1 = f(g(b)) t2 = y y/f(g(b)) - R(b, f(g(b)), a), R(b, f(g(b)), z)

t1 = a t2 = z z/a - R(b, f(g(b)), a) , R(b, f(g(b)), a) Las dos clusulas son unificables y la sustitucin resultante es: s = { z/a , y/f(g(b)) , x/b }

Sustitucin: https://docs.google.com/viewer?a=v&q=cache:Y2qXvx4G_RYJ:https://www.ucursos.cl/ingenieria/2007/1/CC52A/1/material_docente/objeto/129529+Resoluci%C3 %B3n+en+c%C3%A1lculo+proposicional.+Sustituci%C3%B3n&hl=es&gl=mx&pid=bl&sr cid=ADGEESjKQxHGyZnjAdmiaD2etPVt7Qknc6BTiOc1jkxS1ex551ifWlCUJmOnIQAgA3bE98Hin1CPqaMOMyFZZUdP1Yo12yNhabrKoIZlj6r5iSes71k7vmTJ3j M3JGLOUp8OWOS_593&sig=AHIEtbQoWitEbjrRmX9GXOEKZaeh4u6Sjw

http://www.uhu.es/nieves.pavon/pprogramacion/temario/anexo/anexo.html Una sustitucion es un conjunto de expresiones x/t, donde x es una variable y t es un termino que no contiene x. Dada una formula A y una sustitucion , denotamos A la formula que resulta de aplicar simultaneamente a las variables de A. Ejemplo: (P(x),G(y,z)){x/y,y/f(a)}=(P(y),G(f(a),z)) Observar que la sustitucion no se aplica secuencialmente sino simultaneamente. Ejemplo: (P(x),G(y,z)){x/y,y/f(a)}=(P(f(a)),G(f(a),z)) Dado el conjunto de variables V y el conjunto de trminos Term, una sustitucin se define como la aplicacin que se muestra en la Ec 1 y se suele denotar como s={x1/t1,...,xn/tn}. De dicha definicin podemos concluir dos cosas:

Slo son vlidas aquellas sustituciones que transforman una variable en una constante, en otra variable o en una funcin, es decir, en trminos. La sustitucin de una variable afecta a todas las ocurrencias de la misma.

Regla de Resolucin: http://webcache.googleusercontent.com/search?q=cache:Ru0DeUDttSAJ:homepage.c


em.itesm.mx/raulm/teaching/formal_methods/slides/logicresolution.ps+Regla+de+resoluci%C3%B3n+en+c%C3%A1lculo+de+predicados.&cd=1& hl=es&ct=clnk&gl=mx http://seneca.cucea.udg.mx/curso_linea/Sistemas%20Inteligentes/Modulo%203,%20S eccion%204.pdf http://www.uhu.es/nieves.pavon/pprogramacion/temario/anexo/anexo.html#_Toc49 5148247 http://www.di.uniovi.es/~labra/FTP/LPRED.pdf

La regla de resolucin es la siguiente: {C ,P }{C ,P } {C ,C } binaria {C ,P1,...,Pm}{C ,P1 ,...,Pn} {C ,C } completa donde es el unificador ms general de todas las P s y P s La resolucin es una regla de inferencia slida: res implica que , donde es una clusula Pero la resolucin no es completa: Por ejemplo sabemos que PR PR pero no podemos inferir PR utilizando la resolucin sobre {P,R} (porque no hay nada que resolver mediante la resolucin) Por lo tanto no podemos utilizar directamente la resolucin para demostrar todas las consecuencias lgicas Sin embargo podemos utilizar la resolucin para demostrar que la negacin de PR es inconsistente con el conjunto {P,R} De esta manera haciendo una demostracin por contradiccin, establecer que PR PR Demostrar que la negacin de PR es inconsistente con el conjunto {P,R} La negacin de PR es PR. Expresada como un conjunto de clusulas (en forma conjuntiva) es {P, R} Si aadimos P y R obtenemos {P, R, P,R}. Al resolver sobre los miembros de este conjunto obtenemos la clusula vaca, que es una contradiccin De esta manera hemos demostrado, de forma indirecta, PR a partir de PR

Ejemplo: A partir de la base de conocimiento siguiente, compuesta por 5 clusulas, aplicar resolucin para demostrar que la hiptesis V(z) es cierta: P(x) Q(c, x) S(y, x) y P(a) R(z) S(b, a) y Q(z, a) V(a) y R(x) V(y) y

P(y) Q(x, y)
Ya tenemos las proposiciones en forma de clusulas, luego slo nos falta agregar la hiptesis, transformarla en clusula y aadirla al conjunto de sentencias anterior: V(z) negada nos queda V(z). (Como vemos est en forma de clusula). Dado que las sustituciones afectan a todas las ocurrencias de la variable que se pretende sustituir en toda la base de conocimientos, si queremos que dicha sustitucin afecte a muchas ocurrencias de una variable podemos intentar renombrarlas. Pero para evitar tener todas las variables renombradas y, por tanto, evitar la complicacin del procedimiento, estableceremos un uso especial de las sustituciones. Slo afectarn a las clusulas padres en el momento de la resolucin, y a la clusula resolvente, quedando el resto inalteradas. Comenzamos el proceso por las clusulas de mayor tamao: P(x) Q(c, x) S(y, x) y P(a) R(z) S(b, a) con la sustitucin = {y/b, x/a} nos queda: P(x) Q(c, x) S(y, x) P(a) R(z) S(b, a) = P(a) Q(c, a) R(z). Combinamos la resolvente con P(y) Q(x, y) con la sustitucin = {y/a} nos queda: P(a) Q(c, a) R(z) P(y) Q(x, y) = Q(c, a) R(z) Q(x, a). Aplicamos a la resolvente la sustitucin = {x/c} y nos queda: Q(c, a) R(z). Combinamos la resolvente con Q(z, a) V(a) con la sustitucin = {z/c} nos queda:

Q(c, a) R(z) Q(z, a) V(a) = R(c) V(a). Combinamos la resolvente con R(x) V(y) con la sustitucin = {x/c} nos queda:

R(c) V(a) R(x) V(y) = V(a) V(y).


Aplicamos la sustitucin = {y/a} y nos queda V(a) que podemos combinar con V(z) obteniendo la clusula vaca.