Está en la página 1de 67

Sistemas Basados en Reglas

Sistemas Basados en Reglas: Introducción

¿Qué son?
Programas diseñados para actuar como un experto
humano en un dominio o área de conocimiento particular
Utilizan Sistema Basado en Reglas Experto Humano
Conocimiento Adquirido Adquirido + Innato
Técnicas de la Inteligencia Artificial
Adquisición del conocimiento Teórico Teórico + Práctico

Función Campo Único Múltiples

Explicación Siempre A veces


Aportar soluciones a problemas o nuevo conocimiento
Limitación de capacidad Sí Sí, no valuable
Ejemplos
Reproducible Sí, Idéntico No
GPS, DENDRAL,
Vida Mycin-Tieresias, XCOM, etc…
Infinita Finita
Sistemas Basados en Reglas: Arquitectura I

Motor de Inferencia

Experto Módulo Usuario


de Interface
Adquisición Base Módulo de de
del de Base de Explicación Usuario
Conocimiento Datos Conocimientos
(Hechos) (Reglas)
Sistemas Basados en Reglas: Arquitectura II

Componentes fundamentales:
– Una base de hechos
Ventana de Hechos
Menú de
– Una base de reglas de Sistemas de
producción (a veces Encadenamiento

llamada base de Sistema-1


Ventana de Reglas
conocimientos del dominio Sistema-2
...
del sistema)

– Una maquina deductiva


(motor de inferencias)
Estructura de un SBR

• Base de hechos
– Datos relevantes relativos al problema concreto

• Conocimiento del dominio de sistema


– Forma natural de almacenar el conocimientos

Antecedentes → Consecuente
REGLAS

Forma de Representar el conocimiento de manera natural

Si antecedente ENTONCES consecuente

• Antecedente: Conjunciones de atributos de un mismo dominio


• Consecuente: Atributos que pasarán a ser conocidos para el sistema

– Es condición necesaria, pero no suficiente, que se cumpla el antecedente


de una regla para poder dispararla.
– Disparo o Ejecución, los atributos que forman el consecuente pasan a
ser conocidos por nuestro sistema.
– Poseen un campo de prioridad que indica el grado de relevancia de la
regla para nuestro sistema.
INFERENCIA

Operación por la que se obtiene conocimiento


nuevo a partir del existente.

– Deducción: Reglas de inferencia de la lógica, por


ejemplo Resolución.

– Inducción: Se generalizan observaciones para


sintetizar conocimiento de más alto nivel.

– Abducción: Razonamiento por explicación posible.


Deducción

• El nuevo conocimiento es cierto si se parte de


conocimiento cierto.
Esta es la fuerza de la inferencia lógica y, por tanto, de
la lógica.

∀X ( p( X ) → q ( X ))⎫
⎬ ⇒ q(a )
p(a ) ⎭
Inducción

• Es el mecanismo del Aprendizaje Automático

• Presenta el problema de la “dudosa” fiabilidad del conocimiento


inferido

• Equipara correlación con causalidad


Llovió(Lunes) ∧ Calle_Mojada(Lunes)
Llovió(Martes) ∧ Calle_Mojada(Martes)
Regaron(Miércoles) ∧ Calle_Mojada(Miércoles)
↓ ↓ ↓ INDUCCIÓN ↓ ↓ ↓
∀X (Llovió(X) → Calle_Mojada(X))
∀X (Regaron(X) → Calle_Mojada(X))
Abducción

• De un conjunto de reglas y hechos observados (conocimiento)


produce un conjunto de explicaciones posibles que, usando
la deducción, harían coherente el conocimiento de partida.

ABDUCCIÓN

Conocimiento
de partida Explicaciones
posibles
Inferencia en Sistemas de Reglas

Los sistemas basados en reglas usan el “modus ponens”

• Usando técnicas de búsqueda + comparación de patrones los


sistemas basados en reglas automatizan los métodos de
razonamientos (cadenas de inferencias)

• No es exactamente deducción lógica:

– Acepta incertidumbre
– No monotonía (un hecho derivado puede ser posteriormente retractado)
Inferencia en Sistemas de Reglas
Ejemplo: Sistema de predicción del tiempo en la próximas 12h de verano
R1: “ Si temperatura ambiente por encima de 20º Entonces hace calor”
R2: “ Si humedad relativa mayor que 65% Entonces atmósfera esta húmeda”
R3: “ Si hace calor y atmósfera húmeda Entonces es probable que haya
tormentas”

Hechos Conocidos Reglas Activadas Se Satisface


Temperatura ambiente por encima de 20ºC R1, R2 R3
Humedad relativa del 80%
Deducimos Es factible que haya tormentas
Atmósfera Húmeda
Hace Calor
Observación
R1: “ Si temperatura ambiente > 20ºC Y humedad relativa >65% Entonces es
probable que haya tormentas”
Misma conclusión con pérdida de información (hace calor, atmósfera húmeda) que puede ser
útil a la hora de deducir nuevo conocimiento
Inferencia en Sistemas de Reglas

Dependencias reversibles/irreversibles

Si la información que se retracta ha sido utilizada para


obtener nuevas conclusiones:

R: “Si bombilla-encendida entonces habitación-iluminada”


I: “Si bombilla-encendida entonces película-velada”
Inferencia en Sistemas de Reglas

Motor de inferencia

• Permite obtener nuevo conocimiento a partir del existente,


para ello utiliza un proceso de razonamiento.

• El proceso de razonamiento es una progresión de un


conjunto de datos de partida hacia una solución o conclusión.
El Proceso de Razonamiento

Encadenamiento hacia delante (Forward chaining)


– Pocos datos y/o muchas posibles conclusiones
– Poco específico (dispara “todas” las reglas posibles)
– OPS5

Encadenamiento hacia atrás (Backward chaining)


– Mucha información disponible, pero poca es relevante
(consulta de un médico)
– Más específico y generalmente más eficaz
– MICYN, PROLOG

Kappa, KEE, Goldworks, NEXPERT: usan uno, otro o


combinación de ambos
El Proceso de Razonamiento

Importante:

– La dirección de encadenamiento no tiene nada que ver con la


dirección en que se ejecuta una regla. Siempre se disparan
“hacia delante” (se da por bueno o se ejecuta el consecuente
cuando se confirma el antecedente)

– Cuando se habla de encadenamiento hacia atrás nos referimos


solo al proceso de búsqueda y selección de reglas.
Encadenamiento hacia delante

Objetivo

Datos iniciales

Derivar máximo conocimiento

Método muy útil cuando los datos iniciales son pocos y/o existen
muchas posibles conclusiones.

Pasos a realizar
• Matching
• Resolución de conflictos
• Ejecución
Encadenamiento hacia delante

• Matching
Búsqueda de las reglas para las que es cierto su antecedente.
• Resolución de conflictos
Selección, entre las reglas encontradas no redundantes, de aquella
que se va a ejecutar
Criterios de selección (*estrategia de búsqueda*):
- Mayor nº de premisas en el antecedente.
- Prioridad más alta.
- Búsqueda en profundidad.
- Búsqueda en anchura.

• Ejecución
Se dispara la regla, por lo que ampliamos los datos conocidos.
Encadenamiento hacia delante

Función Encadenamiento_hacia_delante
mientras ( Reglas a disparar ^ [Not Objetivo] )
Matching()
Resolución_Conflictos();
Ejecución();
Fmientras

Ffuncion
Sistema simple de reglas para
identificación de frutas
Regla 1 Regla 2 Regla 3
IF Forma = Larga AND IF Forma = Redonda o Ensanchada AND IF Forma = Redonda AND
Color = verde o amarillo Diámetro > 10 cm. Diámetro < 10 cm.
THEN Fruta = plátano THEN clase de frutal = emparrado THEN clase de frutal = árbol

Regla 4 Regla 5 Regla 6


IF nºsemillas = 1 IF nºsemillas > 1 IF tipo de frutal = emparrado AND
THEN tipo semilla = hueso THEN tipo semilla = múltiple Color = verde
THEN fruta = sandia

Regla 7 Regla 8 Regla 9


IF tipo de frutal = emparrado AND IF tipo de frutal = emparrado AND IF tipo de frutal = árbol AND
superficie = liso AND superficie = rugosa AND Color = naranja AND
Color = amarillo Color = tostado tipo semilla = hueso
THEN fruta = melón THEN fruta = cautalupo THEN fruta = albaricoque

Regla 10 Regla 11 Regla 12


IF tipo de frutal = árbol AND IF tipo de frutal = árbol AND IF tipo de frutal = árbol AND
Color = naranja AND Color = rojo AND Color = rojo o amarillo o verde AND
tipo semilla = múltiple tipo semilla = hueso tipo semilla = múltiple
THEN fruta = naranja THEN fruta = cereza THEN fruta = manzana

Regla 13 Regla 14
IF tipo frutal = árbol AND IF tipo frutal = árbol AND
Color = naranja AND Color = morado AND
tipo semilla = hueso tipo semilla = hueso
THEN fruta = melocotón THEN fruta = ciruela
Encadenamiento hacia delante

Base-datos inicial: Objetivo:


Diámetro = 3 cms Ninguno
Forma = redonda
nº semillas = 1
Color = rojo
Ciclo-de- Reglas Regla Hechos
ejecución aplicables seleccionada derivados

1 3, 4 3 Clase-frutal=
árbol

2 3, 4 4 Tipo-semilla =
hueso

3 3, 4, 11 11 Fruta = cereza

4 3, 4, 11 -- --
Encadenamiento hacia atrás

Obj. n Datos iniciales


+
Objetivos intermedios

Obj. 2
Obj. 1

Pila de objetivos

Características
– Método muy útil en aplicaciones con muchos datos disponibles de partida, de los
que solo una pequeña parte son relevantes.

– Sistema interactivo, sólo pregunta lo estrictamente necesario a diferencia del


encadenamiento hacia delante que no pregunta nada.
Encadenamiento hacia atrás

1. Se forma una pila inicial compuesta por todos los objetivos


iniciales.
2. Considerar el primer objetivo de la pila. Localizar todas las reglas
que lo satisfagan.
3. Examina las premisas de dichas reglas, en orden:

a) Si todas las premisas se satisfacen. Ejecutamos las reglas y se derivan


sus conclusiones. Si se derivó un valor para el objetivo actual entonces
se elimina de la pila y se vuelve al paso 2.
b) Si una premisa de una regla no se satisface (tiene un valor desconocido
en la base de conocimientos), se mira a ver si existen reglas que
concluyan un valor para ella. Si existen se inserta en el tope de la pila
de objetivos y se vuelve al paso 2.
Encadenamiento hacia atrás

c) Si por b) no se encontró ninguna regla que concluya un valor para la


premisa actual .Entonces se pregunta al usuario por dicho valor y se
añade a la base de conocimientos.

– Si el valor satisface la premisa actual se continúa examinado el resto del


antecedente.
– Sino se considera la siguiente regla que concluya un valor para el objetivo
actual

4. Si se han examinado todas las reglas que concluyen un valor para


el objetivo actual y todas fallaron entonces se marca el objetivo
como indeterminado, se extrae de la pila y se vuelve al paso dos.
Si la pila esta vacía el proceso finaliza.
Función Encadenamiento_hacia_atrás
Construir_pila_inicial();
Para inicio_pila hasta fin
Reglas_satisfacen_Objetivo [] = Buscar_Reglas();
Para Reglas_satisfacen_Objetivo_inicio hasta fin
Si(Premisa_Satisfacen(Reglas_satisfacen_Objetivo[i]))
Eliminar_Objetivo_pila ();
Sino Si(Hay_reglas_que_permitan_derivarlo()) Inserta_pila();
Sino
Bool:conocido=Preguntar_Usuario();
Si(conocido)Añadir_BC();
Sino Considerar_siguiente_regla();
FSi
FSi
Fpara
Si (Todas_reglas_fallan)
Objetivo_fallido();
Eliminar_Pila();
Fsi
Fpara
FFunción
Función Encadenamiento_hacia_atrás
Construir_pila_inicial();
Para inicio_pila hasta fin
Reglas_satisfacen_Objetivo [] = Buscar_Reglas();
Para Reglas_satisfacen_Objetivo_inicio hasta fin
Si (Premisa_Satisfacen(Reglas_satisfacen_Objetivo[i]))
Eliminar_Objetivo_pila ();
Sino Si(Hay_reglas_que_permitan_derivarlo()) Inserta_pila();
Sino
Bool:conocido=Preguntar_Usuario();
Si(conocido)Añadir_BC();
Sino Considerar_siguiente_regla();
FSi
FSi
Fpara
Si (Todas_reglas_fallan)
Objetivo_fallido();
Eliminar_Pila();
Fsi
Fpara
FFunción
Función Encadenamiento_hacia_atrás
Construir_pila_inicial();
Para inicio_pila hasta fin
Reglas_satisfacen_Objetivo [] = Buscar_Reglas();
Para Reglas_satisfacen_Objetivo_inicio hasta fin
Si (Premisa_Satisfacen(Reglas_satisfacen_Objetivo[i]))
Eliminar_Objetivo_pila ();
Sino Si(Hay_reglas_que_permitan_derivarlo()) Inserta_pila();
Sino
Bool:conocido=Preguntar_Usuario();
Si(conocido)Añadir_BC();
Sino Considerar_siguiente_regla();
FSi
FSi
Fpara
Si (Todas_reglas_fallan)
Objetivo_fallido();
Eliminar_Pila();
Fsi
Fpara
FFunción
Función Encadenamiento_hacia_atrás
Construir_pila_inicial();
Para inicio_pila hasta fin
Reglas_satisfacen_Objetivo [] = Buscar_Reglas();
Para Reglas_satisfacen_Objetivo_inicio hasta fin
Si (Premisa_Satisfacen(Reglas_satisfacen_Objetivo[i]))
Eliminar_Objetivo_pila ();
Sino Si (Hay_reglas_que_permitan_derivarlo()) Inserta_pila();
Sino
Bool:conocido = Preguntar_Usuario();
Si(conocido) Añadir_BC();
Sino Considerar_siguiente_regla();
FSi
FSi
Fpara
Si (Todas_reglas_fallan)
Objetivo_fallido();
Eliminar_Pila();
Fsi
Fpara
FFunción
Función Encadenamiento_hacia_atrás
Construir_pila_inicial();
Para inicio_pila hasta fin
Reglas_satisfacen_Objetivo [] = Buscar_Reglas();
Para Reglas_satisfacen_Objetivo_inicio hasta fin
Si (Premisa_Satisfacen(Reglas_satisfacen_Objetivo[i]))
Eliminar_Objetivo_pila ();
Sino Si (Hay_reglas_que_permitan_derivarlo()) Inserta_pila();
Sino
Bool:conocido = Preguntar_Usuario();
Si(conocido) Añadir_BC();
Sino Considerar_siguiente_regla();
FSi
FSi
Fpara
Si (Todas_reglas_fallan)
Objetivo_fallido();
Eliminar_Pila();
Fsi
Fpara
FFunción
Encadenamiento hacia atrás
Goal : Fruta;
B.C.: (Forma= redonda, Diámetro= 3cm, Tipo-frutal= árbol)
Pila= (fruta), Reglas: 9, 10, 11, 12, 13, 14
– Regla 9:
primera premisa: Tipo-frutal= árbol
Segunda premisa: Color=naranja (¬∃ BC y ¬∃ regla para “Color”)
Pregunta al usuario: ¿Cuál es el valor para Color? Rojo

B.C.: (Forma= redonda, Diámetro= 3cm, Tipo-frutal= árbol,


Color= Rojo) Reglas: 9, 10, 11, 12, 13, 14
– Regla 11:
Primera y segunda premisa: se cumplen
Tercera premisa: Tipo-semilla= hueso (reglas 4 y 5 dan valores a
...)

Pila= (Tipo-semilla, Reglas: 4, 5;


fruta ), Reglas: 9, 10, 11, 12, 13, 14
Encadenamiento hacia atrás
Pila= (Tipo-semilla, Reglas: 4, 5;
fruta ), Reglas: 9, 10, 11, 12, 13, 14
– Regla 4:
primera premisa: Nº semillas=1
Pregunta al usuario: ¿Cuál es el valor para Nº semillas? 1

B.C.: (Forma= redonda, Diámetro= 3cm, Tipo-frutal= árbol, Color=


Rojo, Nº semillas= 1)

Se dispara la regla 4, concluyendo Tipo-semilla= hueso


B.C.: (Forma= redonda, Diámetro= 3cm, Tipo-frutal= árbol, Color=
Rojo, Nº semillas= 1, Tipo-semilla= hueso)
Pila= (fruta), Reglas: 11, 12, 13, 14
– Regla 11: se cumplen todas las premisas,
Se dispara la regla 11, concluyendo Fruta= cereza
B.C.: (Forma= redonda, Diámetro= 3cm, Tipo-frutal= árbol, Color=
Rojo, Nº semillas= 1, Tipo-semilla= hueso, Fruta= cereza)
Pila= () ------------Æ Fruta = cereza
Control del razonamiento

¿Cómo seleccionar una regla cuando hay varias?

Factores que determinan la importancia del orden

• Contenido de la información

– Las reglas más específicas y las que tratan con excepciones deben
aplicarse antes que las generales

• Eficiencia

• Diálogo

– El sistema no debe preguntar lo que puede deducir

– El orden de las preguntas debe seguir una línea de razonamiento


clara
Control del razonamiento
Mecanismos sencillos
• Ordenar las reglas
– Poco elegante
– Difícil de mantener
– Sólo aplicable en sistemas simples en los que las reglas se
almacenan en una lista que se recorre cíclicamente
• Ordenar las premisas/conclusiones en cada regla
– Válido sólo en encadenamiento hacia atrás
– Colocar primero las que tienen más posibilidades de fallar
• Añadir nuevas premisas para controlar las reglas a aplicar en
cada punto de la inferencia

Si hielo-en-la-carretera Si situación = coche-en-marcha


y hielo-en-la-carretera y
y velocidad > 70
⇒ velocidad > 70
Entonces recomendación =
Reducir-velocidad Entonces recomendación =
Reducir-velocidad
Control del razonamiento
Otros mecanismos
• Control de agendas

• Metarreglas

• Sistemas específicos de Resolución de


conflictos (ej. RETE del sistema OPS5)
Reglas con variables
• Aumenta la expresividad de las reglas
• También la complejidad de su gestión
• Facilita la modificación de reglas

Si organismo=streptococo ∨ organismo=gonorrea
entonces prescripción=penicilina
Fallo en alérgicos
Si organismo=streptococo ∨ organismo=gonorrea
entonces droga-indicada=penicilina
Si droga-indicada=?droga ∧ No-conocida(alergia_a=
droga-indicada=penicilina ∧ No-conocida(alergia_a=
?droga)
entonces
penicilina) entonces preguntar(alergia_a=
preguntar(alergia_a= ?droga) penicilina)
Si droga-indicada =?droga ∧ ¬(alergia_a
droga-indicada=penicilina ∧ ¬(alergia_a=
=?droga ) entonces
penicilina)
entonces prescripción=
prescripción =?droga penicilina

Repetir para cada droga !!!


Sistemas basados en reglas
Dificultades

• Encadenamiento infinito

– No siempre fácil de detectar

• Control de posibles contradicciones al añadir


nuevo conocimiento

• Modificación de reglas existentes


Sistemas basados en reglas
Ventajas e inconvenientes
Ventajas:

– Modularidad -> facilita el desarrollo incremental


– Uniformidad -> facilita su manipulación
– Naturalidad
– “Carácter declarativo”

Inconvenientes:

– Ineficiencia -> puede mejorarse el método descrito


– Opacidad -> es difícil seguir la traza de las deducciones
– Cobertura del dominio -> gran número de reglas
– Dificultad de verificación de consistencia y completud
Campos de Aplicación
Categoría Tipo de Problema Uso
Interpretación Deducir situaciones a partir de datos Análisis de imágenes, reconocimiento del habla,
observados inversiones financieras
Predicción Inferir posibles consecuencias a partir de Predicción meteorológica, previsión del tráfico,
una situación evolución de la Bolsa
Diagnóstico Deducir fallos a partir de sus efectos Diagnóstico médico, detección de fallos en
electrónica
Diseño Configurar objetos bajo ciertas Diseño de circuitos, automóviles, edificios, etc
especificaciones
Planificación Desarrollar planes para llegar a unas Programación de proyectos e inversiones.
metas Planificación militar
Monitorización o supervisión Controlar situaciones donde hay planes Control de centrales nucleares y factorías químicas
vulnerables
Depuración Prescribir remedios para funcionamientos Desarrollo de software y circuitos electrónicos
erróneos
Reparación Efectuar lo necesario para hacer una Reparar sistemas informáticos, automóviles, etc
corrección
Instrucción Diagnóstico, depuración y corrección de Corrección de errores, enseñanza
una conducta
Control Mantener un sistema por un camino Estrategia militar, control de tráfico aéreo
previamente trazado. Interpreta, predice y
supervisa su conducta
Enseñanza Recoger el conocimiento y mostrarlo Aprendizaje de experiencia
Características de la Aplicación
Ejemplo: Sistema simple de reglas para
identificación de frutas
Atributos Valores
• =1
Nº_Semillas
• >1
• Hueso
Tipo_Semilla
• Múltiple
• Rojo
Color
• Amarillo
Forma • Larga

Clase_Frutal • Árbol

Fruta • Cereza
• Plátano
Ejemplo: Sistema simple de reglas para
identificación de frutas
Reglas
Prioridad Antecedente Consecuente

0 Nº_Semillas = 1 Tipo_Semilla = Hueso

Tipo_Semilla = Hueso AND


10 Color = Rojo AND Fruta = Cereza
Clase_Fruta = Árbol

Color = Amarillo AND


10 Fruta = Plátano
Forma = Larga
Sistemas Basados en Reglas: Arquitectura I

Motor de Inferencia

Experto Módulo Usuario


de Interface
Adquisición Base Módulo de de
del de Base de Explicación Usuario
Conocimiento Datos Conocimientos
(Hechos) (Reglas)
Base de Hechos
Base de Hechos: estado inicial
Base de Hechos: adicción de atributos y/o valores
Base de Hechos: modificar valor de atributos

¾ Hacemos clic sobre la columna valor en la fila


correspondiente al atributos que deseamos cambiar su
valor, seleccionamos el valor escogido y pulsamos
aceptar.
REGLAS
REGLAS: construcción del antecedente

Vamos a comenzar con la regla:


Nº_Semillas=1 => Tipo_Semilla=Hueso
REGLAS: construcción del consecuente

Nº_Semillas=1 => Tipo_Semilla=Hueso


Encadenamiento hacia delante

Permite seleccionar un objetivo o ninguno


Encadenamiento hacia delante
Encadenamiento hacia delante: ciclo 2

Valores de los atributos tras la


ejecución
Encadenamiento hacia atrás

• Permite seleccionar uno o varios objetivos


Encadenamiento hacia atrás

• Permite seleccionar uno o varios objetivos


• Ejecutar paso a paso
• Posibilidad de ver los pasos anteriores
• Tener a la vista la pila de objetivos, su estado , la traza y
la base de hechos
Encadenamiento hacia atrás

• Permite seleccionar uno o varios objetivos


• Ejecutar paso a paso
• Posibilidad de ver los pasos anteriores
• Tener a la vista la pila de objetivos, su estado , la traza y
la base de hechos
• Pregunta al usuario
Encadenamiento hacia atrás
Encadenamiento hacia atrás: ciclo 0
Encadenamiento hacia atrás: ciclo 1
Encadenamiento hacia atrás: ciclo 2
Encadenamiento hacia atrás: ciclo 3
Encadenamiento hacia atrás: ciclo 4
Encadenamiento hacia atrás: Consulta al usuario

¾ En este caso le diremos que el


valor para el atributo color es rojo.
Encadenamiento hacia atrás: ciclo 5
Encadenamiento hacia atrás: ciclo 6
Ejemplo de reglas con variables

Se tienen las siguientes reglas de producción ordenadas de la


siguiente manera:
R1: P(X,Y),Q(Y,Z) → R(X,Y)
R2: Q(X,Y),R(X,Y) → S(X,Y,Z)
R3: P(X,a),Q(X,a),S(X,a,Z) → R(Z,X)
Y la siguiente base de hechos:
H1: P(a,b)
H2: Q(b,b)
H3: P(b,b)
H4: S(a,a,b)
1.¿Se puede afirmar S(b,b,b)? Responder a esta pregunta aplicando:
a) Forward chain
b) Backward chain
Ejemplo de reglas con variables

SOLUCIÓN:
a) Aplicando Forwardchain
• R1 se puede aplicar usando H1 y H2, entonces X/a , Y/b , Z/b con
lo que se genera: H5: R(a,b)
• R1 se puede aplicar usando H3 y H2, entonces X/b , Y/b , Z/b con
lo que se genera: H6: R(b,b)
• R2 se puede aplicar usando H2 y H6, entonces X/b , Y/b con lo
que se genera: H7: S(b,b,Z)
• No se pueden aplicar más reglas.
• ¿Se puede afirmar S(b,b,b)? Sí, ya que se haya deducido H7 indica
que son ciertos los hechos S(b,b,Z) para cualquier valor del
dominio de Z, y como por H4 se sabe que ‘b’ pertenece a dicho
dominio, se puede afirmar.
Ejemplo de reglas con variables

SOLUCIÓN:
b) Aplicando backwardchain.
S(b,b,b) (VERDAD)
| R2 X/b, Y/b, Z/b
|
Q(b,b), R(b,b) (VERDAD)
| H2 |R1 X/b, Y/b
| |
VERDAD P(b,b), Q(b,Z)
| H3 | H2 Z/b
| |
VERDAD VERDAD
• ¿Se puede afirmar S(b,b,b)? Sí, ya que el algoritmo Backwardchain
ha encontrado una rama que partiendo de S(b,b,b) tiene VERDAD
en todas sus hojas.

También podría gustarte