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