Encadenamiento hacia atrás, algoritmo

advertisement
Encadenamiento hacia atrás, algoritmo
AlgoritmoEncadenamientoHaciaAtras
Inicio
BH=HechosIniciales
Meta=ObjetivoMeta
si Verificar(Meta, BH)
si si devolver “exito”
si no devolver “fracaso”
Fin
Procedimiento Verificar(Meta, BH): booleano
Inicio
verificado=falso
si Contenida(Meta, BH)
si si devolver Verdadero
si no Inicio
CC=Equiparar(Consecuentes(BC),Meta)
mientras NoVacio(CC) y No(verificado) hacer
Inicio
R=Resolver(CC)
Eliminar(R, CC)
NM=ExtraerAntecedentes(R)
verificado=Verdadero
mientras NoVacio(NM) y verificado hacer
Inicio
Meta=SeleccionarMeta(NM)
Eliminar(Meta, NM)
verificado=Verificar(Meta, BH)
si verificado
si si Añadir(Meta, BH)
Fin
Fin
Devolver(verificado)
Fin
Fin
BH=Hechos Iniciales
BC=Base de conocimientos
CC=Conjunto Conflicto
Meta= Meta a verificar
R=Regla seleccionada del conjunto conflicto
NM=Nuevas Metas, conjunto compuesto por los antecedentes de la regla que deben
cumplirse (estar contenidos en la BH) para que la regla se dispare
verificado= variable de tipo booleana que indicará el éxito o el fracaso de la búsqueda
del Objetivo Meta en el sistema de producción, arroja el resultado de la evaluación que
verifica que se haya derivado dicha meta de este sistema.
Como ya se había mencionado, este algoritmo trabaja de manera inversa al algoritmo
del encadenamiento hacia delante, en este caso se analizan inicialmente las reglas que
cumplen con el consecuente, es decir con la meta inicial, si los antecedentes de esa regla
están contenidos en la BH, la regla se dispara y la meta se almacena en la BH, de lo
contrario, si alguno o todos los antecedentes no están en la BH, estos pasan ahora a ser
las metas (submetas) a buscar y satisfacer para que se almacenen en la BH. A
continuación explicare un ejemplo paso a paso, para que de ahí, ustedes puedan resolver
los sistemas de producción que vendrán al final de este documento, y de ahí diseñen su
propio algoritmo que será el que implementarán en su motor de inferencia, en conjunto
con el del encadenamiento hacia delante. Ver con sus compañeros que no fueron a
colima la corrección del mismo.
Sistema de producción (es el mismo que probamos con el encadenamiento hacia
adelante)
R1: B y C  A
R2: C y D  A
R3: E  B
R4: F o G  C
BH = {E, F}
Objetivo Meta = A
CC
NM
Meta
{}
{}
A
R
BH
{E, F}
Como primera instancia, debemos formar el CC a través del proceso de la equiparación
que consiste en buscar aquellas reglas que contengan como consecuente la meta A, para
este caso cumplen las reglas R1 y R2.
CC
NM
Meta
{R1, R2}
{}
A
R
BH
{E, F}
El siguiente paso consiste en resolver el conjunto conflicto, es decir, de las reglas que
están vigentes en este momento seleccionar una, se va a seguir el principio de
seleccionar la regla de menor número, por lo que se selecciona la regla R1 y se borra del
CC. Se evalúan sus antecedentes en el sentido de que estén contenidos en la BH si es
así, se dispara la regla y el consecuente se almacena en la BH, en caso contrario de que
algún antecedente no este contenido en la BH, entonces formaran parte de los nuevos
objetivos o metas o submetas a cubrir, y se almacenaran en el conjunto de NM (nuevas
metas), para el caso de R1, los antecedentes son B y C, los cuales no se encuentran en la
BH, por lo tanto pasan a formar parte del conjunto NM y R1 se queda en estado de
espera.
CC
NM
Meta
R
BH
{R1, R2}
{B, C}
A
R1
{E, F}
Ahora tomamos a B como la nueva meta a verificar, se borra del conjunto NM,
analizamos las reglas que tienen contenida a B como consecuente y formamos un nuevo
CC con éstas. Solo la R3 es la regla que la contiene como consecuencia.
CC
NM
Meta
R
BH
{R1, R2}
{R3}
{B, C}
A
B
R1
{E, F}
Se resuelve el conjunto conflicto seleccionando la R3 que es la única regla activa del
CC en este ciclo (cabe mencionar que este algoritmo es recursivo), se borra del CC, se
analizan los antecedentes, que para este caso es solo E y se verifica si está contenido en
la BH, como si lo está, la regla R3 se dispara y se almacena la meta B en la BH, y se
elimina como meta.
CC
NM
Meta
R
BH
{R1, R2}
{R3}
{B, C}
A
B
R1
R3
{E, F}
{B, E, F}
Regresamos al nivel anterior, y se analiza que el conjunto NM no está vacío, por lo que
se toma la siguiente nueva meta en este caso C y se considera la nueva meta a cubrir. Se
borra C del conjunto NM, y se hace la equiparación, dando como resultado el CC con la
regla R4.
CC
NM
Meta
R
BH
{R1, R2}
{R3}
{R4}
{B, C}
A
B
C
R1
R3
{E, F}
{B, E, F}
Se resuelve el conjunto conflicto seleccionando la R4 que es la única regla activa del
CC en este ciclo, se borra del CC, se analizan los antecedentes, que para este caso es F y
G, se verifica si están contenidas en la BH, en este caso con una que se encuentre es mas
que suficiente para que la regla se dispare, y como si cumple para F, la regla R4 se
dispara y se almacena la meta C en la BH, y se elimina como meta.
CC
NM
Meta
R
BH
{R1, R2}
{R3}
{R4}
{B, C}
A
B
C
R1
R3
R4
{E, F}
{B, E, F}
{B, C, E, F}
Se regresa al nivel donde el CC está conformado por R2, el conjunto de NM esta vacío,
la meta a cubrir es A, la regla por dispararse es R1, se evalúa a R1 por estar pendiente,
los antecedentes son B y C, se evalúa que estén contenidos en la BH, como si lo están se
dispara y la meta se almacena en la BH, y termina el proceso porque el Objetivo Meta
ya está contenido en la BH.
NOTA: Si para alguno de los antecedentes cuando se convierten en meta a cubrir no hay
regla que lo pueda generar, se deshecha la regla que lo contiene como antecedente, y se
evalúa la siguiente regla del CC, la otra opción es solicitar al usuario que la agregue a la
BH pero no es común hacerlo, por lo que se opta mejor desechar la regla, y si ya no hay
mas reglas en el CC, la verificación del Objetivo meta a fallado, queda indeterminado.
CC
NM
Meta
R
BH
{R1, R2}
{R3}
{R4}
{B, C}
A
B
C
R1
R3
R4
{E, F}
{B, E, F}
{B, C, E, F}
{A, B, C, E, F}
Ejercicio:
Comprobar que H se deriva del siguiente sistema de producción.
Sistema de producción:
R1: A y B  C
R2: A  D
R3: C y D  E
R4: B y E y F  G
R5: A y E  H
R6: D y E y H  I
BH={A, B, F}
Objetivo Meta= H
Descargar