Sunteți pe pagina 1din 28

Capítulo 6

Sistemas Expertos y Programación Lógica


Descripción de un Sistema Experto

Un Sistema Experto (SE) es un programa destinado a generar inferencias en un


área específica del conocimiento en una forma similar a la que se espera de un experto
humano.
Entre las tareas en que estos pueden teóricamente aplicarse encontramos aquellas
que son propias de los campos susceptibles de ser dominados por expertos humanos,
tales como diagnóstico médico, diagnóstico de fallas, monitoreo del estado de un
sistema, interpretación de datos, exploración minera, configuración de computadoras,
supervisión de sistemas administrativos, etc.
Similarmente a un experto humano, los SE deben resolver problemas por
aplicación de conocimiento en un dominio específico. Este conocimiento que estos
sistemas poseen es adquirido a través de la intervención de expertos humanos, y
almacenado en lo que se denomina Base de Datos de Conocimiento KDB.
Adicionalmente se espera de un SE que sea capaz de explicar la solución hallada
en términos comprensibles para las personas. Se considera que no pueden operar en
situaciones comúnmente llamadas de sentido común, por ser muy extenso el dominio de
conocimiento que debe tener el sistema.
Algunas características del tipo de problema resuelto por un sistema experto son:

• Inexistencia de un algoritmo para hallar la solución


• El problema es resuelto satisfactoriamente por expertos humanos
• Posibilidad de contar con un experto humano para colaborar en el desarrollo
• El conocimiento experto del dominio debe ser relativamente “estático”

El núcleo del SE es el Motor de Inferencias. Este módulo puede interactuar con


otros como se muestra en la Fig. 7.1.

1
INTERFACE

EXPLICACIONES MOTOR DE ADQUISICION DE


INFERENCIAS CONOCIMIENTO

BASE DE HECHOS BASE DE


CONOCIMIENTOS

Figura 7.1: La tarea esencial de un SE

Ejemplo de Operación de un SE: Diágnóstico Médico (MYCIN)

Reglas: Un componente de los SE son las reglas a aplicar sobre los símbolos definidos.
Estas se obtienen de expertos humanos. En el siguiente ejemplo estas reglas representan
el conocimiento de los médicos. Estas reglas combinadas en un sistema de inferencias
permiten mapear síntomas en enfermedades. Estas reglas de los expertos son
consideradas heurísticas, dado que no es posible demostrar su validez general.
Hechos: Los hechos son los predicados que se suponen verdaderos. En nuestro ejemplo
se trata de características que se obtienen de un registro de pacientes y constituyen la
Base de Datos de Conocimiento (KDB), por ejemplo: (edad ana 51) (presion juan 5/3),
etc…

Ejemplo de operación para diagnóstico y tratamiento de enfermedades sanguíneas

Consulta: (diagnostico José ?D)


Padece Jose erupciones? No.
Cual es el valor de glucosa para José? 85.
Cual es el valor de pulso para José? Porque?
Para investigar (frecuencia_cardiaca_elevada Jose)
Para investigar (diagnostico jose bacterial_meningitis)
Cual es el valor de pulso para José? 60.
(diagnostico José bacterial_meningitis) es verdadero.

Desea UD. Saber porque? Si.


(diagnostico José viral-meningitis)
derivado de (alta glucosa José)
derivado de
(glucosa José 45) introducido como respuesta Y 45>40 calculado Y (baja glucosa José)
derivado de (SGglucosa José 101) introducido como respuesta y 101<118 calculado

2
Lógica de Predicados y Lógica Proposicional

Es importante en nuestro estudio tener presentes los conceptos de Lógica


Proposicional y Lógica de Predicados.

Una forma de caracterizarlas es considerar que si quisiéramos representar “todos los


hombres son mortales” en Lógica Proposicional tendríamos que escribir una sentencia
para cada hombre, en cambio la lógica de predicados puede expresar esta premisa en
una sola proposición ya que emplea variables.

Comenzamos esta explicación considerando que el instrumento fundamental de la


comunicación humana es el lenguaje, formado por frases de tipo:

Interrogativo

Imperativo

Declarativo

Las últimas constituyen el elemento básico de descripción del conocimiento.

La lógica es la disciplina que estudia los métodos de formalización del conocimiento


humano. Por lo tanto la lógica estudia métodos de formalización de frases declarativas.

Para esto emplea dos niveles de abstracción distintos según el grado de detalle con que
se quiera formalizar:

La Lógica de Predicados estudia las frases declarativas con mayor grado de detalla,
considerando la estructura interna de las proposiciones. Toma como elementos básicos
los objetos y sus relaciones. Es decir:

Que se afirma (predicado o relación)

De quién se afirma (objeto)

Por ejemplo la expresión del lenguaje natural:

Sócrates es hombre y todos los hombres son mortales entonces Sócrates es mortal

(Obsevar que se puede considerar compuesta por tres proposiciones)

Se formaliza en logica de predicados como:

Hombre(Sócrates) ˆ ( ∀ x hombre(x) -> mortal(x) ) -> mortal(Sócrates)

La lógica proposicional se caracteriza en relación a su composición por emplear


muy pocos símbolos que pueden ser evaluados solamente como falsos o verdaderos,
(mediante cláusulas y/o elementos atómicos), en contraposición al alfabeto lógico usado
por la lógica de predicados para expresar sus formulaciones, donde principalmente

3
aparecen variables que pueden ser instanciadas para evaluar una declaración. A
continuación veamos un ejemplo elemental:

La Lógica de Predicados se expresa por formulas como: ∀ x. q( x) → p( x)

Lo que en Lógica Proposicional se expresa mediante cláusulas de la forma: q → p

lo que puede escribirse en la denominada forma clausal como: -q v p

Es intuitivo pensar que la Lógica Proposicional aventaja a la de Predicados en relación


al procesamiento de sus cláusulas en computadores, ya que se puede representar
mediante expresiones más sencillas y el procesamiento se reduce solo a establecer los
valores verdaderos o falsos de sus componentes y posteriormente evaluar disyunciones
y conjunciones.

A su vez dentro de la Lógica Proposicional se plantea comúnmente el uso de tres tipos


de cláusulas diferentes, denominadas Formas Clausales. Estas se denominan, Forma
Normalizada Conjuntiva –FNC-, Forma Normalizada Disyuntiva –FND- y Cláusulas de
Horn –CH-. Ejemplos de estas son:

FND p v -q v s
FNC p ^ q ^ -s
CH -p v -q v s

La concepción de las dos primeras resulta bastante obvia, en cambio la CH se define


como “Una cláusula FND que tiene como máximo un literal positivo (no negado)”.

La CH tiene a su vez gran importancia en la teoría de los SE. Esto es debido a diferentes
factores, los cuales en general han sido más bien probados o mostrados por inducción –
ejemplos- por algunos investigadores en la década del 70. Una característica favorable
de fácil visualización es que una Cláusula de Horn representa por si sola una
implicación lógica, q → p.

Otra característica relevante es que los SE basados en CH conllevan una complejidad


lineal en tanto que el resto en general se caracteriza por una complejidad de O(2 n) lo que
los define como computacionalmente intratables o no polinomiales completos.

4
Elementos Básicos del Lenguaje Lógico (Alfabeto)

La lógica proposicional se conoce también como lógica de predicados de orden cero,


porque sus funciones tienen aridad cero (sin parámetros) y la comúnmente llamada
lógica de predicados, corresponde a la lógica de predicados de primer orden. (Existen
ademas lógicas de orden superior que permiten modelar descripciones mas complejas
pero quedan fuera de esta discusión)

La Lógica de Primer Orden es uno de los formalismos más utilizados para representar
conocimiento en IA. La Lógica cuenta con un lenguaje formal mediante el cual es
posible representar fórmulas, que permiten describir fragmentos del conocimiento y,
además consta de un conjunto de reglas de inferencia que aplicadas a los axiomas,
permiten derivar nuevo conocimiento.

El Alfabeto del Lenguaje de la Lógica de Primer Orden contiene dos tipos de


símbolos: a) símbolos lógicos, entre los que se encuentran los símbolos de constantes
proposicionales true y false; los símbolos de operadores proposicionales para la
negación, la conjunción, la disyunción y las implicaciones, los símbolos de operadores
de cuantificación como el cuantificador universal; el cuantificador existencial; y los
símbolos auxiliares de escritura como corchetes [,], paréntesis (,) y coma; y b) símbolos
no lógicos, agrupados en el conjunto de símbolos constantes; el conjunto de símbolos de
variables individuales; el conjunto de símbolos de funciones n-arias; y el conjunto de
símbolos de relaciones n-arias.
A partir de estos símbolos se construyen las expresiones válidas en el Lenguaje de
Primer Orden: los términos y las fórmulas.
Las fórmulas atómicas o elementales son expresiones de la forma R(t1,...,tn) donde
R es un símbolo de relación n-aria y t1,...,tn son términos. Por ejemplo,
recibe(maria,beso) es una fórmula atómica, en donde recibe es un símbolo de relación
binaria y, maria y beso son términos constantes. La fórmula anterior establece el hecho
de que María es besada, mientras que dar(X, beso, maria) establece que alguien,
representado por la variable X, besa a María. A partir de estas fórmulas es posible
construir otras más complejas como recibe(maria,beso)<=dar(x,beso, maria) que
establece que María recibe un beso, si existe una X que se lo da.
La aplicación del paradigma lógico requiere definir un lenguaje acotado y preciso,
mediante el cual se expresen con precisión las reglas y sus resultados. Este lenguaje
incluye en definitiva los siguientes componentes principales.

Átomos: Son proposiciones simples. V (Verdadero), F (Falso) y símbolos en general


incluyendo símbolos que representan sentencias.

Conectivos lógicos: Conjunción, Disyunción, Implicación, Negación, doble implicación


Sirven para formar preposiciones compuestas, a partir de preposiciones simples.

Sentencias: Átomos o cláusulas formadas por la aplicación de conectivos a sentencias.


Son pensamientos en los que se afirma algo y se expresan mediante enunciados u
oraciones declarativas. Dichas proposiciones están unidas mediante conectivas lógicas

Cuantificador universal:  Significa que las variables son comunes a todos los
elementos
de la expresión.

5
Cuantificador existencial: ∃. Se debe eliminar porque la cláusula debe cumplirse
para todos los elementos. Las variables deben ser comunes a toda la expresión.

Símbolos de puntuación y delimitación tales como: , () []

Se entiende por silogismo a una fórmula lógica con premisas seguidas de una
conclusión, como ser, si q y p, entonces s. Los silogismos mas empleados en SE y SI
son: 1) Hipotético: p es q y q es s -> p es s, y 2) Disyuntivo: -p o q es decir p ∴q

Fórmulas bien Formadas

La lógica proposicional es la más antigua y simple de las formas de lógica.


Utilizando una representación primitiva del lenguaje, permite representar y manipular
aserciones sobre el mundo que nos rodea. La lógica proposicional permite el
razonamiento, a través de un mecanismo que primero evalúa sentencias simples y luego
sentencias complejas, formadas mediante el uso de conectivos proposicionales, por
ejemplo Y (AND), O (OR). Este mecanismo determina la veracidad de una sentencia
compleja, analizando los valores de veracidad asignados a las sentencias simples que la
conforman.

Una proposición es una sentencia simple que tiene un valor asociado ya sea de
verdadero (V), o falso (F). Por ejemplo:

Hoy es Viernes

La lógica proposicional, permite la asignación de un valor verdadero o falso para


la sentencia completa, no tiene facilidad par analizar las palabras individuales que
componen la sentencia. Por este motivo, la representación de las sentencias del ejemplo,
como proposiciones, sería: hoy_es_Viernes

La proposiciones pueden combinarse para expresar conceptos más complejos.


Por ejemplo: hoy_es_Viernes y hace_frío.
A la proposiciones anteriores dadas como ejemplo, se las denomina fórmula bien
formada (well-formed formula, wff). Una fórmula bien formada puede ser una
proposición simple o compuesta que tiene sentido completo y cuyo valor de veracidad,
puede ser determinado. La lógica proposicional proporciona un mecanismo para asignar
valores de veracidad a la proposición compuesta, basado en los valores de veracidad de
las proposiciones simples y en la naturaleza de los conectores lógicos involucrados.

6
Funciones de Skolem

Cuando un cuantificador existencial esta en el ámbito de un cuantificador universal, La


variable cuantificada debe ser reemplazada con una a función de Skolem de las
variables cuantificadas universalmente.

\ x E y (x < y)

\ x (x < mayor _ que(x)) por ejemplo \ x (x < (x + 1))

Mientras que en la formula \ y, E x / (x < y) la elección del valor de x es dependiente de la


eleccion del valor de y ya que dice que para cada y hay un apropiado valor de x. En este
caso resulta:

\ y (y-1 < y)

En cualquier caso la elección del valor de y es independiente de la elección del valor


para x.

Otro ejemplo seria:

Todo hombre esta en pareja con una mujer

x hombre(x) ^ E y pareja(y,x)

x hombre(x) ^ E y pareja( mujer(x) , x)

Leyes de DeMorgan

Estas leyes lógicas de aplicación en la teoría de los SE son:


-(p ^ q) es equivalente a (-p v -q)
-(p v q) es equivalente a (-p ^ -q)
Es decir que al invertir el valor de verdad de los símbolos de la expresión debe
“invertirse” el conectivo.

7
Reducción a forma clausal

La expresión vista

Sócrates es hombre y todos los hombres son mortales entonces Sócrates es mortal

se puede expresar empleando solo conectores lógicos de conjunción y disyunción. En es


caso se dice que la expresión esta dada en forma clausal

Para pasar a esta forma clausal aplicamos los siguientes pasos

Hombre(Sócrates) ˆ ( ∀ x hombre(x) -> mortal(x) ) -> mortal(Sócrates)

∀ x ( Hombre(Sócrates) ˆ (hombre(x) -> mortal(x) ) -> mortal(Sócrates) )

Hombre(Sócrates) ˆ (hombre(x) -> mortal(x) ) -> mortal(Sócrates)

-( Hombre(Sócrates) ˆ (hombre(x) -> mortal(x) ) -> mortal(Sócrates) )

- ( Hombre(Sócrates) ˆ (hombre(x) -> mortal(x) )) ˇ mortal(Sócrates)

- Hombre(Sócrates) ˇ -(hombre(x) -> mortal(x) ) ˇ mortal(Sócrates)

- Hombre(Sócrates) ˇ -hombre(x) ˇ mortal(x) ) ˇ mortal(Sócrates)

Y podríamos usar símbolos mas compactos

- H(s) ˇ -H(x) ˇ M(x) ) ˇ M(s)

Siendo las 2 últimas expresiones formas clausales, por cierto mas difíciles de
comprender para nosotros que la expresión de predicados original.

En un problema de IA se instancian las variables con lo que puede obtenerse una


expresión del tipo:

- H ˇ -H ˇ M ˇ M

Que es la forma clausal de la expresión original expresada en lógica proposicional y que


es de suma importancia en programación lógica.

8
Los pasos relevantes de la reducción pueden resumirse como sigue:

1. Eliminación: Eliminar las implicaciones dado que

x→y ≡ –x v y

2. reducir la aplicación de la negación (por de Morgan y doble negación) dado que

-(-x)) ≡ x
-(x v y)) ≡ x ^ y
-(x ^ y)) ≡ x v -y

3. Eliminar cuantificadores

4. Aplicar la propiedad distributiva y asociativa creando una cláusula separada


para cada conjunto

p v (q v r) = (p v q) v r
(p ^ q) v r = (p v r) ^ (q v r)

5. Que cada cláusula tenga nombre de variable único

Ejemplo:

∀x. ∀y. odia(x,y) ^ mujer(x) → varon(y)


∀x. ∀y –(odia(x,y) ^ mujer(x)) v varon(y)
∀x. ∀y –odia(x,y) v -mujer(x) v varon(y)
–odia(x,y) v -mujer(x) v varon(y)

9
Formas Clausales

Toda fbf o sentencia de lógica proposicional (cálculo proposicional) puede


expresarse en Forma Normalizada Conjuntiva (FNC), Forma Normalizada Disyuntiva
(DNF) o como cláusula de Horn (CH).

Forma Normalizada Conjuntiva (p v -q) ^ (q v s) ^ p


Conjunción de disyunciones de literales.

Forma Normalizada Disyuntiva (-p ^ -q) v (-q ^ r) v p


Disyunción de conjunciones de literales.

Cláusulas de Horn. La cláusula contiene como máximo un literal positivo

Cláusulas de Horn

Una cláusula de Horn es una conjunción de disyunciones con no mas de un


literal positivo. Entendiendo como un literal positivo a uno que no esta negado.

Por ejemplo:
(-B1 v -B2 v B3 ) es una Cláusula Horn.
(-A1 v A2) ^(-B1 v B3 ) es una Formula Horn. Sus componentes son cláusulas Horn.

Estas cláusulas de Horn representan la forma implicativa escrita de otro modo,


es decir, la implicación B → A equivale a -B v A y la implicación B1 ^ B2 → A
equivale a -B1 v -B2 v A

Estas implicaciones se codifican en lenguaje Prolog usando “:-“ (“si”) y “,” (el último
representa ^ en Prolog )
A :- B1 , … ,Bk ( el símbolo :- se lee “si”)

Importancia de las Cláusulas de Horn

Para aplicar la lógica en programas de computador ha sido necesario encontrar


algoritmos que determinen si una expresión lógica válida es “satisfacible”, es decir si
alguna combinación de valores verdaderos o falsos de sus átomos hace verdadera a la
expresión. Si la expresión esta en la forma de cláusula de Horn, se pueden obtener
métodos de solución de menor complejidad.

Independencia lógica en las Formas de Horn:

Es necesario que no haya dependencia lógica entre los literales para que el método de
resultados correctos. Por ejemplo:
Chico(a) ^ (-Chico(a) v Cubo(a)) ^ (Esfera(a) v - Cubo(a))
Con el algoritmo citado el resultado seria satisfacible pero erróneo ya que se concluye
que “un cubo es chico y es esfera”

1
Satisfacibilidad y completitud

Un problema lógico en general esta modelado por un conjunto de cláusulas, lo que


puede representarse, por ejemplo, como:

{ a v -b, b v c, –a }

Un problema planteado de este modo, requiere para ser resuelto determinar su


satisfacibilidad, esto es, si existe alguna asignación de valores boléanos a las variables
que hagan que todas las cláusulas sean ciertas.

Esto es lo mismo que considerar la conjunción de las cláusulas del conjunto y


determinar si existe alguna asignación de valores boléanos a las variables que hagan que
la fórmula conjuntiva sea cierta.

(a v –b) ^ (b v c) ^ –a

Un algoritmo conocido pero de altísimo costo computacional es construir la tabla de


verdad de la expresión, y así determinar si alguna/s combinación/es hace/n verdadera a
la fórmula.

Si el método de solución garantiza la obtención del resultado correcto se dice completo,


e incompleto en caso contrario.

Un principio clásico para atacra este problema se conoce como Resolución o regla de
Robinson.

1
Resolución

La Programación Lógica tiene sus orígenes más cercanos en los trabajos de prueba
automática de teoremas de los años sesenta. J. A. Robinson propone en 1965 una regla
de inferencia a la que llama resolución, mediante la cual la demostración de un teorema
puede ser llevada a cabo de manera automática
La resolución es una regla que se aplica sobre cierto tipo de fórmulas del Cálculo de
Predicados de Primer Orden, llamadas cláusulas. La demostración de teoremas bajo esta
regla de inferencia se lleva a cabo por reducción al absurdo.
A partir de lenguajes preexistentes se desarrolló un lenguaje orientado a la
programación lógica que fue llamado precisamente Prolog. Con este lenguaje es posible
hacer preguntas sobre objetos y relaciones del dominio y estas preguntas se formulan
como objetivos o metas, que son evaluadas por el intérprete de Prolog utilizando su
mecanismo de inferencia interno, el cual determina si la meta a demostrar es una
consecuencia lógica del programa, aplicando reglas de deducción para obtener la
respuesta.
Por ejemplo, utilizando la cláusula de tipo meta ?abuelo(X,juan), para preguntar
quién es el abuelo de Juan? o bien quiénes son los abuelos de Juan?, es posible deducir
por ejemplo que Luis es abuelo de Juan, La ejecución del programa, arrojaría como
resultado X=luis.
El método de deducción utilizado por Prolog, para dar respuesta a los objetivos
planteados, se basa en el uso de una única regla de inferencia: el Principio de
Resolución. Los primeros trabajos de prueba automática de teoremas utilizaban la
resolución, aplicada a cláusulas cualesquiera, pero el problema de las deducciones con
cláusulas generales es el gran número de combinaciones posibles para llevar a cabo las
resoluciones. Por ello Prolog restringe el conjunto de cláusulas, lo que le permite llevar
a cabo una prueba dirigida y, en la mayoría de los casos, con un universo de
posibilidades explorable en tiempo de ejecución.

Fundamento de la Resolución

El procedimiento de resolución es en esencia


un proceso iterativo cuya finalidad es A1
evaluar la verdad o falsedad de una fórmula. A1
A2
En cada paso dos cláusulas padres son A2
P A3
resueltas para obtener una tercera A3
denominada resolvente. Es decir que este -
resolvente es inferido a partir de las -
-
cláusulas padres. -
-P
Figura 6.3: En el método de resolución se
Tomando por ejemplo como cláusulas busca detectar la contradicción entre la
cláusula a probar y un conjunto de cláusulas.
padres P v Q y -P v R, el resolvente es Q
v R.

Lo anterior queda en evidencia si planteamos la formula (P v Q) ^ (-P v R), ya que


para que esta sea T, se tendra que cumplir o bien que Q sea T o R sea T, es decir (Q v
R).

1
Para este método se definen las propiedades siguientes;

• Para cláusulas P y –P el resolvente es la cláusula vacía.


• Si un conjunto de sentencias contiene ambos P y –P el conjunto es insatisfacible.
• Si ambos antecedentes son verdaderos luego el resolvente es verdadero.
• La resolución verifica la refutación, es decir: “Si el conjunto de cláusulas
implica a P luego es contradictorio con el mismo conjunto que además contenga
a –P”

El algoritmo de resolución por refutación se puede sintetizar como una prueba de una
proposición P con respecto a un conjunto de axiomas C. A partir de esta definición se
establece el algoritmo que comprende los siguientes pasos.

• Convertir todos las afirmaciones en C a la forma clausal


• Negar P y convertir a la forma clausal. Añadir al conjunto C
• Repetir lo siguiente hasta que no haya progreso o se detecte una contradicción
o Seleccionar dos cláusulas (padres)
o Resolverlas obteniendo el resolvente
o Si el resolvente es la cláusula vacía, se detecto una contradicción sino
o añadirlo al conjunto de cláusulas

Ejemplo: dada la siguiente inferencia en lenguaje natural, “La casa de enfrente parece
deshabitada desde hace unos días. Algunos diarios mojados yacen en el jardín. El
pasto se ve crecido. Por lo tanto, la gente de esa casa debe estar de viaje”. Evaluar la
validez de la inferencia por resolución.

Podemos Representar los hechos aludidos mediante las cláusulas siguientes:


P = (La gente de la casa de enfrente) Están en casa
Q = (Ellos) Juntan los diarios.
R = (Ellos) Cortan el césped.

Sentencia Forma Significado Para Probar que no están


Original Clausal en casa, agregamos –(-P)
-Q -Q No juntan los diarios a la KDB e intentamos
-R -R No cortan el césped arribar a una
P=>Q -P v Q Si están en casa, juntan los diarios contradicción por
P=>R -P v R Si están en casa, cortan el césped aplicación reiterada de la
regla de resolución.

1
-P v Q P -P v R P

Q -Q R -R

Figura 6.5: Representación de la solución del ejemplo 6.2


partiendo de diferentes premisas iniciales

Ejemplo: Probar R dadas las siguientes cláusulas. (Ver Fig. 6.4)


-P v -Q v R -R
Sentencia Original Forma Clausal
-P v -Q P
P P
-U v Q -Q
P^Q=>R -P v -Q v R
-U U
S v U=>Q -S v Q
-U v Q
U U
Figura 6.4: Representación de la solución por
refutación al problema de la tabla 6.1

En el ejemplo anterior observamos que según las reglas que elijamos podemos llegar o
no a la solución correcta (F). Por ejemplo tomando -S v Q en lugar de -U v Q.
La explicación de esta falla es algo sutil. El procedimiento de resolución es completo
en lógica proposicional y no en lógica de predicados.
Como el ejemplo anterior esta planteado en lógica proposicional, deberíamos hallar
siempre la solución correcta.
Pero vemos en el ejemplo que esto puede no ocurrir. Esto es porque la afirmación de
que la resolución es completa en lógica proposicional, se basa en una demostración
teórica, pero esta no nos da un algoritmo para hacerlo. De modo que en la práctica este
procedimiento puede darnos un resultado erróneo si no disponemos de un algoritmo
adecuado. El algoritmo completo mas usado se llama DPLL, y se define por la
aplicación de un conjunto de reglas de las cuales veremos algunas en lo que sigue.

1
Resolución: Estrategias de aplicación

El método de resolución es un algoritmo no determinista ya que pueden encontrarse


múltples formas de alcanzar la cláusula vacía en un conjunto insatisfacible. Durante el
desarrollo del algoritmo es necesario respnder la siguiente pregunta: ¿Qué dos cláusulas
se seleccionan y sobre que literales se realiza la resolución?
Las distintas estrategias tratan de responder esta pregunta de forma que se mantenga la
completitud –si el conjunto es insatisfacible alcanzar la cláusula vacía- y que se obtenga
un comportamiento eficiente.

Estrategia de borrado.

Un problema que puede presentarse es seleccionar cláusulas cuyop resolvente no aporte


utilidad a la búsqueda. Si dichas cláusulas no apotan a la solución su eliminación
acelera el proceso.

Eliminación de cláusulas con literales puros

Se dice que un literal es puro si no existe uno complementario con el que unifique en el
conjunto de cláusulas. Las cláusulas con literales puros son inútiles para obtener la
cláusula vacía, puesto que el literal puro no puede ser eliminado por resolución.

H ^ (D v E) ^ ( -E v F v G) -> Puedo eliminar H a los efectos de buscar la contradicción

{{ p, q}, { p, -q}, { r, q}, { r, -q}} p es literal puro

Eliminación de Tautologías.

Tautología es una cláusula que contiene el mismo literal en forma directa e inversa.
b v a v –b v c es una tautología
Una cláusula de este tipo no afecta la condición de satisfacibilidad del conjunto, este
será satisfacible o no aunque se añadan tautologías. Es posible entonces eliminar las
tautologías.

Eliminación de subsunciones

Una cláusula F subsume a una D si existe una sustituición s tal que s(F) este incuida en
D.

P(x) v -Q(y) subsume en P(a) v -Q(v) v R(w)

Y se puede eliminar D. (Se puede demostrar que la satisfacibiidad no se altera)

1
Resolución Unitaria

Un resolvente unitario es aquel en el que al menos uno de los padres es una cláusula
unitaria (con un solo literal).
En la estrategia de resolucion unitaria es la aplicación de resolución en la cual todos los
resolventes son unitarios.

Ejemplo: Se seleccionan siempre dos clausulas en las que una de ellas tenga un solo
literal

C={p v q, -p v r, -q v r, -r}

1. p v q
2. -p v r
3. -q v r
4. -r
5. -p (de 2 y 4)
6. -q (de 3 y 4)
7. q (de 1 y 5)
8. p (de 1 y 6)
9. r (de 3 y 7)
10. vacia (de 6 y 7)

Los resolventes generados son un subconjunto de los que podeían haberse obtenido sin
esta restricción, por ej. De 1 y 2 podría haberse obtenido q v r, pero esta clausula nunca
sera generada por esta estrategia.
Observar que en esta estrategia el resolvente siempre contiene menos literales que la
clausula padre no unitaria, por lo que el método sigue una búsqueda directa hacia la
cláusula vacía ganando eficiencia.
La estrategia no produce un algoritmo COMPLETO. Por ejemplo la fórmula

C={p v q, -p v q, p v -q, -p v -q } es insatisfacible pero nunca se encontrara la cláusula


vacia por no serlo ninguna de las componentes.

Resolución de entrada

Es aquella en la cual al menos una de las clausulas padre pertenece al conjunto original
de entrada

Ejemplo:

C={p v q, -p v r, -q v r, -r}

1. p v q
2. -p v r
3. -q v r
4. -r
5. q v r (de 1 y 2)

1
6. p v r (de 1 y 3)
7. -p (de 2 y 4)
8. r (de 2 y 6)
9. vacía (de 4 y 8)

Resolución Lineal

Generalización de la anterior. Es aquella en la cual al menos una de las clausulas padre


pertenece al conjunto original de entrada o es antepasado del otro padre

Ejemplo: C={p v q, -p v q, p v -q, -p v -q }

pvq -p v q p v –q -p v –q

-q q

vacia

Resolución ordenada

1. Cada clausula se toma como un conjunto de litrerales ordenados.


2. La resolución solo se realiza con los primeros literales de cada clausula.
3. El orden del resolvente es tal que mantiene primero a los literales del padre positivo
(el que tenia el primer literal nonegado)

Es la mas eficiente.

Ejemplo: C={p v q, -p v r, -q v r, -r}

Se ordenan los literales de cada clausula alfabeticamente

1. p v q
2. -p v r
3. -q v r
4. -r
5. q v r (de 1 y 2)
6. r (de 3 y 5)
7. vacio (de 4 y 6)

1
Observese que 1 y 3, 2 y 4, 3 y 4 no resuelven por no ser los primeros los literales que
podrian combinarse.

No es completa pero si lo es para cláusulas de Horn, al igual que la lineal, por lo cual
son las que mas se emplean.

La resolucion en lógica proposicional y de predicados

La resolucion en lógica proposicional y de predicados es completa en el primer caso e


incompleta en el segundo

Si consideramos lo visto para ser aplicado en formulas que esten expresadas en lógica
de predicados, tendremos expresiones en las que aparecen en lugar de los literales, los
predicados y sus argumentos. A su vez estos últimos podrán ser variables o constantes,
por ejemplo:

C={p(x) v q(y), -p(a) v r(x), -q(x) v r(b), -r(x)}

Para poder aplicar la resolución en este caso, previamente debemos asignar valores a las
variables, lo que dependera del problema planteado, para de ese modo determinar que
cláusulas se podran seleccionar para aplicar resolución. Por ejemplo si damos a x el
valor a, podemos resolver las dos primeras cláusulas.

Desde el punto de vista lógico, los predicados con argumentos constantes son hechos.
Para poder determinar si un predicado p(x) –o una combinación mas compleja- se
corresponde con un hecho p(a) se debe instanciar x, lo que se conoce como unificación.
Es decir que no hablamos de “dar valor a las variables” sino de “unificar predicados”.

1
Unificación

La Unificación es un procedimiento de emparejamiento que compara dos literales y


descubre si existe un conjunto de sustituciones que los haga idénticos. La idea básica de
la unificación es sencilla. Para unificar dos literales vamos recorriéndolos 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 número de argumentos. Para conseguir que
cada argumento de un literal sea coincidente con su homólogo en el otro literal,
debemos buscar una sustitución que nos permita emparejarlos. La única condición que
debe reunir esta sustitución es que ha de aplicarse a todo el literal, es decir, que la
sustitución afecta a todo el literal, y no sólo al argumento en cuestión. Por decirlo de
una manera sencilla, las sustituciones se van arrastrando a lo largo del proceso de
unificación.

Ejemplos:

unificar P(x, k) con P(y, z):


Primera sustitución: (y/x) Resultado: P(y, k) P(y, z)
Segunda sustitución: (z/k) Resultado: P(y, z) P (y, z)
La sustitución resultante es composición de las sustituciones: s = { y/x , z/k}

unificar P(x, x) con P(y, z):


Primera sustitución: (y/x) Resultado: P(y, y) P(y, z)
Segunda sustitución: (z/y) Resultado: P(z, z) P (z, z)
La sustitución resultante es composición de las sustituciones: s = { z/y , y/x}

Se debe asegurar que no existen variables comunes en ambas cláusulas.


Unificar las sentencias R (x, f(g(x)), a) y R (b, y, z)
Términos desiguales Sustitución 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 cláusulas son unificables y la sustitución resultante es: s ={ z/a , y/f(g(b)) , x/b}

El algoritmo de unificación permite a su vez la implementación del algoritmo de


resolución por refutación.

1
Propagacion unitaria. HornSat. Importancia de cláusulas Horn.

Propagación Unitaria

Propagación Unitaria (UP) o la regla de un literal (OLR) es un procedimiento de


demostración automática de teoremas que puede simplificar un conjunto de
cláusulas. Es decir obtener un conjunto educido que sea equivalente al original, desde el
punto de vista de su resultante lógica al ser evaluado.

El procedimiento se basa en considerar las cláusulas unitarias, i.e. cláusulas que son
compuestas de un literal simple. Si un conjunto de cláusulas contiene la cláusula
unitaria l, las otras cláusulas son simplificadas por la aplicación de las dos reglas
siguientes:

1. Toda cláusula conteniendo l es removida; (excepto la unitaria)


2. En toda cláusula que contiene -l, este es eliminado.

La aplicación de estas dos reglas lleva a un nuevo conjunto de cláusulas que es


equivalente al anterior. Por ejemplo, el siguiente conjunto de cláusulas puede ser
simplificado por propagación unitaria a causa de que contiene la cláusula unitaria a.

{avb,-avc,-cvd,a}

Como (a v b) contiene el literal a, esta cláusula puede ser completamente removida.


Como (–a v c) contiene la negación del literal en la cláusula unitaria, este literal puede
ser removido de la cláusula. Notar que la cláusula unitaria a no es removida; esto haría
que el conjunto resultante no fuera equivalente al original;

El efecto de la propagación unitaria puede ser sintetizado como sigue.

{ avb -avc -cvd a }


(removida) ( eliminada) (sin cambio) (sin cambio)
{ c, -cvd a }

El conjunto de cláusulas resultante c, - c v d, a es equivalente al inicial. La nueva


cláusula unitaria c que resulta de propagación unitaria puede usarse para repetir la
aplicación de propagación unitaria, la que podría transformar – c v d en d.

En definitiva la fórmula original podría reducirse a { c, d, a}

Podemos ver que para que { c, d,


a } sea satisfacible, deben ser T los tres
literales c, d, a, lo que también debe ocurrir para que el conjunto
original sea satisfacible.

Asimismo si alguno de los tres literales es F la formula reducida


resulta F, y asi también el conjunto original.

2
Algoritmo de Satisfacibilidad HornSat

Propagación unitaria, aplicada repetidamente a medida que se generan nuevas cláusulas


unitarias, es un algoritmo de satisfacibilidad completo para conjuntos de proposiciones
en forma de cláusulas Horn; además genera un modelo mínimo para el conjunto de si
este es satisfacible.

En lógica formal Satisfacibilidad Horn, o HORNSAT, es el problema de decidir si


dado un conjunto de proposiciones en forma de cláusulas Horn es satisfacible.

El problema de satisfacibilidad de Horn puede resolverse en tiempo polinomial. Un


algoritmo de tiempo polinomial se basa en la regla de propagación unitaria, que es:

Si la formula contiene una cláusula compuesta por un literal simple positivo l


(cláusula unitaria), entonces todas las cláusulas conteniendo l son removidas, y

En todas las cláusulas que contienen -l se remueve solo este literal negado.

El resultado de la segunda regla podría ser una cláusula unitaria la que se propaga
de la misma manera. La formula es satisfacible si esta transformación no genera
un par de cláusulas unitarias contradictorias l y -l.

Satisfacibilidad de Horn es actualmente uno de los problemas conocidos "mas duros"


que pueden computarse en tiempo polinomial, en el sentido de que es un problema P-
completo.

Este algoritmo puede expresarse alternativamente de este otro modo, para determinar la
asignación de un valor de verdad a una formula Horn satisfacible: Todas las variables
contenidas en una cláusula unitaria son seteadas al valor que satisface la cláusula
unitaria; todos los otros literales se setean a falso. El resultado es el mínimo modelo de
la formula de Horn, es decir, la expresión con el conjunto mínimo variables y
asignación de verdad.

El algoritmo de propagación unitaria es lineal en la medida de la formula.

Notablemente, Horn-SAT se puede emplear para probar que P=NP, convirtiendo


cualquier problema SAT en Horn-SAT y resolviéndolo luego en tiempo polinomial. Es
un problema en dos etapas. Primero, transformar un problema SAT en Horn-SAT
requiere tiempo exponencial. En segundo lugar, la transformación resultante es
exponencial.

2
Una generalización de la clase de formulas Horn es la de formulas Horn renombrables,
las cuales en el conjunto de formulas que pueden ponerse en cláusulas Horn
reemplazando algunas variables con su respectiva negación. Checkear la existencia de
tal reemplazo puede hacerse en tiempo lineal; de donde la satisfacibilidad de tal
formula es en P ya que puede resolverse primero efectuando el reemplazo y luego
chekeando la satisfacibilidad de la formula Horn obtenida.

Ejemplos:

1)

-p v -q v r , -r v q , q

Tomando q

-p v r con lo cual es satisfacible ya que no resulta una contradicción.

2)

-p v -q v r , -r v q , p

Tomando p

-q v r , -r v q con lo cual no es satisfacible ya resulta una contradicción. (esto


puede verse por ejemplo aplicando resolución)

1)

-p v -q v r , -r v q , -q v s , s

Tomando s

-p v -q v r , -r v q

-P con lo cual es satisfacible ya que no resulta una contradicción.

2
Consideraciones acerca del alcance y aplicaciones de los SE

Ante la metodología hasta aquí citada podríamos antes que nada preguntarnos
¿Que significado tiene pretender aplicar las herramientas de la lógica de predicados a
programas informáticos?, ¿Que alcance puede esperarse de estas aplicaciones en el
mundo real?, ¿Que problemas confronta esta idea?
En general tenemos al menos alguna noción de métodos formales de
representación de conocimientos y/o de resolución de problemas tales como el
formalismo matemático, el formalismo químico, la codificación de la música, etc.
Si tomamos por ejemplo el caso de la matemática, vemos que en el se aplican las
reglas de la lógica a un conjunto de símbolos cuyo significado esta definido con
precisión.
De estas simples ideas podemos intuir que para que la lógica de primer orden
nos garantice inferencias válidas, el significado de los símbolos a emplear debe ser
preciso, o dicho de otro modo no deben existir ambigüedades respecto del posible
significado de un símbolo. Por este motivo a menudo en el estudio de la lógica se
representan los predicados por solo una letra mayúscula que podrá ser verdadera o falsa,
por ejemplo “si A entonces B”.
En el caso de los SE se pretende aplicar la lógica a mundos que solo conocen en
profundidad los expertos humanos. Estos expertos expresan su conocimiento del mundo
que manejan con sus propias palabras. Estas palabras no son otra cosa que los símbolos
del lenguaje natural (humano) cuyo significado generalmente dista mucho de estar bien
establecido.
Por lo tanto, para que exista alguna chance de que un SE basado en el
formalismo lógico produzca inferencias correctas, se requiere en primer lugar definir los
símbolos (palabras y predicados) con los cuales se operará y su significado preciso.
Por otra parte, al expresar el experto humano su conocimiento en lenguaje
natural, existe la necesidad de que quien implemente el SE , (Quien a veces ha sido
llamado ingeniero del conocimiento) deba traducir los conocimientos expresados en
lenguaje natural por el experto humano a las expresiones lógicas correspondientes, para
que estas puedan ser procesadas por el SE.
Este último punto es de proverbial importancia y en muchos casos el talón de
Aquiles de los SE basados en reglas. Es natural que el lector se formule al respecto dos
preguntas centrales: ¿Cómo garantizar que las afirmaciones lógicas escritas por el
programador se correspondan exactamente en todos los casos con el conocimiento del
experto? ¿Es posible en un mundo complejo aplicar esta metodología de desarrollo de
un SE dada la inabordable cantidad de información a recopilar y sistematizar? La
respuesta a la segunda pregunta es que solo se intenta aplicar SE a mundos reducidos.
Por ejemplo se consideran absolutamente inviables para problemas de sentido común
dado la cantidad de información que debería sistematizarse. La respuesta a la primera
pregunta, parece ser que depende de la calidad del trabajo hecho por quien releva y
transcribe los conocimientos del experto, es decir un aspecto práctico que incide sobre
la confiabilidad que tendrá un sistema real.
En resumen, los SE se basan en la posibilidad de aplicar las nociones de lógica
formal para incrementar una base de conocimientos o demostrar hipótesis, y solo
pueden aplicarse prácticamente a mundos de muy baja complejidad, en el sentido de la
cantidad de símbolos y predicados que deben manejarse.

2
Empleo de reglas explícitas

El modo mas inmediato consiste en aplicar reglas del tipo si-entonces, e


instanciando los antecedentes de la misma obtener una instancia válida para el
consecuente.

Consideremos entonces el caso de una regla aislada:

Si <afirmación antecedente 1> es verdadera


Si <afirmación antecedente 2> es verdadera
...
entonces <afirmación consecuente> es verdadera

Por ejemplo, dada una regla tal como:


Si “A es un ANIMAL” y “A es padre de B” luego “B es un ANIMAL”

Y dadas dos instancias para sus antecedentes “Plata es un caballo” y “plata es


padre de Riky”, podemos instanciar el consecuente “Riky es un caballo” y añadirlo a la
base de conocimientos (KDB)

Es importante notar que en lugar de instanciar el consecuente para ver si es


soportado por sus antecedentes se podrían trabajar a la inversa, esto da lugar a dos
modelos fundamentales de sistemas expertos:

• SE con encadenamiento hacia delante. (Forward Chaining). En este caso el SE toma


la serie de afirmaciones de entrada y ensaya todas las reglas disponibles, una y otra
vez, incorporando nuevas afirmaciones, hasta que ninguna de las reglas pueda
producir nuevas afirmaciones. Puede emplearse para verificar una hipótesis
obteniendo una afirmación que concuerde con ella.

• SE con encadenamiento hacia atrás. (Backward Chaining). En este caso se comienza


con una hipótesis y se trata de verificarla haciendo uso de las afirmaciones
disponibles.

Existen dos lenguajes muy difundidos orientados a este tipo de procesamiento, Lisp y
Prolog, este último fue desarrollado a partir del primero y se orienta específicamente a SE de
encadenamiento hacia atrás.

2
Unificación y Ligaduras

En lo visto anteriormente el símbolo / denota las ligaduras.


Estas son asociaciones resultantes de la unificación que pueden ser
sistemáticamente codificadas.
Hechos y reglas
En el caso del código de un programa este se encarga existentes
de reducir las “Formas Clausales” a listas asociadas mas
simples de manipular por el mismo programa.
Estas listas son denominadas asimismo “ligaduras”.
Una lista de ligaduras fluye a través de los filtros del ligaduras
programa (al principio esta vacía) y al final de este proceso
puede ser analizada para extraer de ellas nuevas afirmaciones
o demostrar hipótesis. La lista de ligaduras puede crecer o
reducirse al pasar por los filtros del programa. La siguiente
figura muestra esquemáticamente la aplicación de algunos de Nuevos
hechos
estos conceptos provistos por la lógica a los SE.
A los efectos de ejemplificar en forma simple la SE
aplicación de los conceptos vistos se ejemplifica mas
adelante de manera sintética el procedimiento de
encadenamiento hacia delante aplicado con una sola regla. Figura 6.6: Pasos hacia la
Construcción de las
ligaduras.

Correspondencia de Patrones Simbólicos

Correspondencia entre Patrones Simbólicos y Subsimbólicos (numéricos)

Un tema fuertemente relacionado con la codificación de los sistemas expertos es


la denominada correspondencia de patrones simbólicos (Symbolic Pattern Matching).
Conceptualmente esto tiene que ver con un importante concepto de la IA
denominado habitualmente Correspondencia de Patrones, y asociado en general a un
tema que se verá mas adelante y que se conoce como Reconocimiento de Patrones.
El reconocimiento de patrones esta mayormente asociado a problemas de IA no
simbólica, y la correspondencia de patrones se refiere en ese caso a detectar si dos
vectores son “similares”, es decir se corresponden.
La forma mas simple de entender la similitud entre dos vectores (x1, x2, ..., xn)
es calcular la distancia entre los mismos, y si esta es “suficientemente pequeña” de
acuerdo a valores preestablecidos para un problema dado, entonces puede decirse que
ambos vectores se corresponden. Este sencillo mecanismo constituye la esencia de la
mayoría los sistemas artificiales de reconocimiento. Como se dijo estos se basan en
números. Por ejemplo puede decirse que

( 1, 2) se corresponde bien con (1.001, 1.9999) y no con (6, 7)

2
Sin embargo, cuando se trabaja en el campo de la IA Simbólica o Lingüística,
por usar solo algunas denominaciones posibles, se plantea un problema de

()
Filtro para primer
antecedente

((ESPECIE . CABALLO) (ANIMAL . PLATA))


((ESPECIE . CABALLO) (ANIMAL . PLATA))
Filtro para
último antecedente

((ESPECIE . CABALLO) (ANIMAL . PLATA)(CRIA . RIKI) )


((ESPECIE . CABALLO) (ANIMAL . PLATA) (CRIA . DAISY))
Acción
primer
consecuente
(RIKI ES UN CABALLO)
(DAISY ES UN CABALLO)

El diagrama muestra un caso particular de construcción de ligaduras. Los antecedentes de la regla


actúan a través de una serie de filtros en cascada. La lista inicial es una lista vacía y la
denominaremos lista de ligaduras. Los consecuentes de la regla (en este ejemplo solo uno) pasan
a través de una serie de filtros en paralelo (acciones) los cuales dan a la salida nuevas
afirmaciones que se incorporan a la base de conocimientos.
correspondencia diferente, donde lo que se requiere es encontrar una similitud entre
conjuntos de palabras, símbolos o nombres de variables (podríamos pensar quizas que
buscamos similitudes entre un conjunto de nombres de variables y no entre los valores
numéricos de estas, suponiendo que esos valores fueran números. Surge entonces el
problema de analizar la similitud entre por ejemplo, dos listas tales como:

(pluto es un perro)
(pluto es un animal)

Cuando se discuten temas de este último caso se habla entonces de


Correspondencia de Patrones Simbólicos

Al trabajar con el caso de la correspondencia numérico (subsimbólica) surge una


extensa teoría matemática denominada simplemente Reconocimiento de Patrones, y
dentro de esta numerosas fórmulas matemáticas para evaluar correspondencia numérica.
Al trabajar en cambio con el caso de la correspondencia simbólica, que es el caso
que nos ocupa, se estudian algoritmos no numéricos y estrategias que permiten evaluar
este tipo de correspondencia y aplicar los resultados a problemas propios de la IA
Lingüística. (Por ej. SE y Procesamiento del Lenguaje Natural). Esta es entonces la
temática tratada en los siguientes párrafos la que será luego aplicada en ejemplos de SE
algo mas completos que el ya visto.

2
6.5.1. Procedimientos de Correspondencia Simbólica

Habitualmente se consideran dos procedimientos básicos: (Cada uno de los cuales


puede admitir diferentes variantes)

• Correspondencia (Aplicada a SE con encadenamiento hacia delante)

• Unificación (Aplicada a SE con encadenamiento hacia atrás, y que suele


mencionarse como el algoritmo de unificación)

Los conceptos asociados al problema de correspondencia simbólica se explican


mediante la construcción de un procedimiento que denominamos Corresponde. Este
compara una expresión Patrón con una expresión común para ver si esta es un instancia
de la expresión patrón.
Dado que la expresión común representa un pequeño fragmento del conocimiento
que se posee acerca de algún mundo real o virtual, a esta expresión se la denomina dato.

Ejemplos de datos

(color manzana rojo)


(color naranja naranja)

A diferencia de los datos, los patrones pueden contener elementos variables


llamados variables de patrón.
Para facilitar el reconocimiento de estas variables, y dar mayor flexibilidad a los
procedimientos, estas variables frecuentemente se asocian (encapsulan) a un símbolo
especial elegido por el programador. En nuestro caso adoptamos el símbolo “?”.

Ejemplos de variables de patrón (x e y)

(color (? x) rojo)
(color manzana (? y) )
(color (? x) (? y) )
Sobre esta base de código la correspondencia simbólica se define como sigue:
Cuando un patrón no tiene variables de patrón, corresponde con un dato solo si es exactamente
el mismo que el dato (cada posición correspondiente ocupada por el mismo átomo).
En este caso (color manzana rojo) corresponde con (color manzana rojo) pero no con (color
manzana verde)

Asi que cuando un patron contiene variables de patrón estas actúan inicialmente como
comodín. Se observa que al intentar corresponder

(color (? x) rojo) -patrón-


con
(color manzana rojo ) -dato-

Se “liga” la variable de patrón “x” con algún elemento del dato “manzana”

2
Encadenamiento

Encadenamiento Progresivo.

Correspondencia. Buscar afirmaciones en la base de datos que correspondan con los


antecedentes de una regla.

Resolución. En caso de que se cumplan los antecedentes instanciar el consecuente


produciendo una nueva afirmación.
La afirmación es una expresión común sin variables de patrón, mientras que los
antecedentes hipótesis puede tener variables de patrón, por lo que podemos hablar de
correspondencia.

Encadenamiento Regresivo.

Correspondencia. Buscar Una Afirmación en la base de datos que corresponda a una


hipótesis. La afirmación es una expresión común sin variables de patrón, mientras que
la hipótesis puede tener variables de patrón, por lo que podemos hablar de
correspondencia.
Unificación. Buscar una regla cuyo consecuente concuerde con la hipótesis. La
hipótesis y el consecuente pueden tener variables de patrón, por lo que se habla de
unificación.
Resolución. Para cada regla cuyo consecuente concuerde con la hipótesis, se intenta
verificar de manera recursiva cada antecedente de la regla, considerando cada una como
una sub-hipótesis. Si se verifica cada antecedente entonces se ha verificado la hipótesis.
El segundo paso nos permite pensar que el encadenamiento progresivo esta
incorporando el procedimiento de encadenamiento progresivo dentro del procedimiento
de encadenamiento regresivo.

Ejemplo de lista de ligaduras en encadenamiento progresivo para una sola regla

nombre de la regla: IDENTIFICAR


consecuente: ((CRIA es un ESPECIE))
antecedentes: ((ANIMAL es padre de CRIA) (ANIMAL es un ESPECIE))
afirmaciones:
(PLUTO es un PERRO) (PLATA es un CABALLO) (PLATA es padre de RIKI)
(PLATA es padre de DAISY)

Ligaduras iniciales:
((CRIA . DAISY) (ANIMAL . PLATA))
((CRIA . RIKI) (ANIMAL . PLATA))
Ligaduras resultantes:
((ESPECIE . CABALLO) (ANIMAL . PLATA))
((ESPECIE . CABALLO) (ANIMAL . PLATA))
((CRIA . DAISY) (ANIMAL . PLATA))
((CRIA . RIKI) (ANIMAL . PLATA))
Ligaduras extendidas:
((ESPECIE . CABALLO) (ANIMAL . PLATA)(CRIA . RIKI) )
((ESPECIE . CABALLO) (ANIMAL . PLATA) (CRIA . DAISY))
Se concluiría con instanciación para nuevas afirmaciones a partir del patron de la
hipótesis y las ligaduras triples.
Se trata de verificar la hipótesis (cría "es un" especie) haciéndola corresponder
con elementos en ligaduras triples

S-ar putea să vă placă și