Inferência Conhecimento Inferência m Bibliografia: m James P. Ignizio, Introduction to Expert Systems, Capítulo 6 m Lucas e Van der Gaag, Principles of Expert Systems, Capítulo 3 Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 29 Inferência Conhecimento Inferência como procura m Processo de procura: m Conjunto de soluções potenciais m Conjunto de restrições m Sistemas baseados em regras: m Encadeamento Engenharia do Conhecimento © Amílcar Cardoso de regras Conhecimento e Inferência- 30 Inferência Conhecimento Encadeamento m Dois métodos básicos: m Encadeamento para a Frente (Forward Chaining), ou Inferência Ascendente: Orientado pelos Factos m Encadeamento para Trás (Backward Chaining), ou Inferência Descendente: Orientado pelos Objectivos Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 31 Inferência Conhecimento Encadeamento m Dois métodos básicos: m Encadeamento para a Frente (Forward Chaining), ou Inferência Ascendente: Orientado pelos Factos m Partir de um conjunto de factos m Usar as regras para deduzir novos factos m Encadeamento para Trás (Backward Chaining), ou Inferência Descendente: Orientado pelos Objectivos Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 31 Inferência Conhecimento Encadeamento m Dois métodos básicos: m Encadeamento para a Frente (Forward Chaining), ou Inferência Ascendente: Orientado pelos Factos m Partir de um conjunto de factos m Usar as regras para deduzir novos factos m Encadeamento para Trás (Backward Chaining), ou Inferência Descendente: Orientado pelos Objectivos m Partir de um objectivo m Usar as regras para procurar suporte para o objectivo Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 32 Inferência Conhecimento Encadeamento para a Frente Dado um conjunto de Factos, escolher uma regra cujo Antecedente seja verdadeiro; disparar a regra; o Consequente da regra é um novo Facto m Prosseguir (recursivamente) com o novo conjunto de dados m Parar quando não se pode disparar mais nenhuma regra m A B R3 R1 F H I R4 C D E Engenharia do Conhecimento © Amílcar Cardoso R2 G R5 H Conhecimento e Inferência- 33 Inferência Conhecimento Encadeamento para Trás Dado um Objectivo, parar se existe um Facto que o suporte. m Senão, escolher uma regra cujo Consequente possa suportar o Objectivo m Considerar as condições do Antecedente da regra como novos Objectivos, e prosseguir (recursivamente) m A R3 B R1 I R4 F H C D E Engenharia do Conhecimento © Amílcar Cardoso R2 G R5 H Conhecimento e Inferência- 34 Inferência Conhecimento Encadeamento (exemplo) m Selecção de automóvel >3K >3K R1 A 1.5K 1.5Kto to3K 3K R2 B <1.5K <1.5K R3 C 44portas portas R4 D 22portas portas R5 E Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 35 Inferência Encadeamento para a frente Conhecimento (exemplo) Utilizador: Utilizador:Quero Queroum umautomóvel automóvelde de44portas portasque quecuste custeentre entre1,5K 1,5Kee3K; 3K;que que automóvel automóveldevo devocomprar? comprar? SP: SP:Escolher Escolherentre entreautomóveis automóveisBBeeDD >3K >3K R1 A 1.5K 1.5Kto to3K 3K R2 B <1.5K <1.5K R3 C 44portas portas R4 D 22portas portas R5 E Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 36 Inferência Conhecimento Encadeamento para trás (exemplo) Utilizador: Utilizador:Quero Queroum umautomóvel; automóvel;qual qualdevo devocomprar? comprar? SP: SP:(“pensando”) (“pensando”)Vamos Vamostentar tentarooautomóvel automóvelA… A… >3K >3K R1 A 1.5K 1.5Kto to3K 3K R2 B <1.5K <1.5K R3 C 44portas portas R4 D 22portas portas R5 E Engenharia do Conhecimento © Amílcar Cardoso ? Conhecimento e Inferência- 37 Inferência Conhecimento Encadeamento para trás (exemplo) SP: SP:Pode Podegastar gastarmais maisde de3K? 3K? Utilizador: Utilizador:Não Não ? >3K >3K R1 A 1.5K 1.5Kto to3K 3K R2 B <1.5K <1.5K R3 C portas ? 44portas R4 D 22portas portas R5 E Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 38 Inferência Conhecimento Encadeamento para trás (exemplo) SP: SP:(“pensando”) (“pensando”)Hum... Hum...Vamos Vamostentar tentarooautomóvel automóvelBB >3K >3K R1 A 1.5K 1.5Kto to3K 3K R2 B <1.5K <1.5K R3 C 44portas portas R4 D 22portas portas R5 E Engenharia do Conhecimento © Amílcar Cardoso ? Conhecimento e Inferência- 39 Inferência Conhecimento Encadeamento para trás (exemplo) SP: SP:Pode Podegastar gastarentre entre1.5 1.5ee3k? 3k? Utilizador: Utilizador:Sim Sim >3K >3K ES: ES:Quer Quer44portas? portas? Utilizador: Utilizador:Sim Sim R1 A 1.5Kto to3K 3K ? 1.5K R2 B <1.5K <1.5K R3 C portas ? 44portas R4 D 22portas portas R5 E Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 40 Inferência Conhecimento Encadeamento para trás (exemplo) SP: SP:Escolher Escolherentre entreautomóveis automóveisBBeeDD >3K >3K R1 A 1.5K 1.5Kto to3K 3K R2 B <1.5K <1.5K R3 C 44portas portas R4 D 22portas portas R5 E Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 41 Inferência Conhecimento Para a frente vs. Para trás m Inferência para a frente: m Inferência para trás: m Orientada por dados m Orientada por objectivos m Procura soluções que sejam consequência dos factos m Procura factos que suportem hipóteses m Tende a ser mais eficiente em problemas com poucas condições possíveis m Tende a ser mais eficiente em problemas com poucas conclusões possíveis Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 42 Inferência Conhecimento Encadeamento misto Usar alternadamente os dois mecanismos durante uma mesma sessão de resolução de problema m Exemplos de estratégias: m Prioridade ao encadeamento para trás: m Usar encadeamento para a frente só quando não for possível fazê-lo com encadeamento para trás Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 43 Inferência Conhecimento Encadeamento misto Usar alternadamente os dois mecanismos durante uma mesma sessão de resolução de problema m Exemplos de estratégias: m Prioridade ao encadeamento para trás: m Usar encadeamento para a frente só quando não for possível fazê-lo com encadeamento para trás m Prioridade ao encadeamento para a frente: m Usar encadeamento para trás só quando não for possível fazêlo com encadeamento para a frente Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 43 Inferência Conhecimento Encadeamento misto Usar alternadamente os dois mecanismos durante uma mesma sessão de resolução de problema m Exemplos de estratégias: m Prioridade ao encadeamento para trás: m Usar encadeamento para a frente só quando não for possível fazê-lo com encadeamento para trás m Prioridade ao encadeamento para a frente: m Usar encadeamento para trás só quando não for possível fazêlo com encadeamento para a frente m Modo dependente da fase de resolução do problema: m Mudar modo de acordo com as características de cada fase Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 43 Inferência Conhecimento Encadeamento misto (exemplo) Monitorização e Controlo Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 44 Inferência Conhecimento Geração de Explicações m Explicações “How?” : Traço do processo de encadeamento A B R3 R1 R4 F H I C D R2 G E R5 H è Q: Como escolheu H? Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 45 Inferência Conhecimento Geração de Explicações (cont.) A B R3 R1 I R4 F H C D E è R2 G R5 H Utilizador: Como escolheu H? è SP: H é verdade porque foi inferido de R3, disparada porque A é verdade porque você o disse F é verdade porque foi inferido de R1, disparada porque B é verdade porque você o disse C é verdade porque você o disse Engenharia do Conhecimento Conhecimento e Inferência- 46 © Amílcar Cardoso Inferência Conhecimento Geração de Explicações (cont.) m Explicações “Why?”: m o contexto de uma pergunta A B R3 R1 R4 F H I C D E R2 G R5 H è Q: Pergunta-me se B é verdade, porquê? Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 47 Inferência Conhecimento Geração de Explicações (cont.) A R3 B R1 R4 F H I C R2 D G R5 E H è Utilizador: Pergunta-me se B é verdade, porquê? è SP: Para investigar, por R1, se F é verdade Para investigar, por R3, se H é verdade Esta é a hipótese que estou a explorar Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 48 Inferência Conhecimento Organização de Regras m Agrupamento: m por conclusões com atributos similares m Ordenamento m ordenar os grupos de forma a que fiquem nos primeiros lugares aqueles cujas conclusões estejam mais próximas dos objectivos finais Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 49 Inferência Conhecimento Organização de Regras m Conjunto de Regras por organizar: m Se E=u1 Então B=y1 m Se A=x1 E B=y1 Então C=z1 m Se F=w1 Então E=u1 m Se B=y2 E D=t2 Então C=z3 m Se E=u2 Então B=y2 m Se A=x2 E D=t1 Então C=z2 Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 50 Inferência Conhecimento Organização de Regras m Agrupamento: Grupo B: m Se E=u1 Então B=y1 m Se E=u2 Então B=y2 Grupo C: m Se A=x1 E B=y1 Então C=z1 m Se A=x2 E D=t1 Então C=z2 m Se B=y2 E D=t2 Então C=z3 Grupo E: m Se F=w1 Então E=u1 Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 51 Inferência Conhecimento Organização de Regras m Ordenamento: m Grupo m Se A=x1 E B=y1 Então C=z1 m Se A=x2 E D=t1 Então C=z2 m Se B=y2 E D=t2 Então C=z3 m Grupo B: m Se E=u1 Então B=y1 m Se E=u2 Então B=y2 m Grupo m Se E: F=w1 Então E=u1 Engenharia do Conhecimento © Amílcar Cardoso C: Conhecimento e Inferência- 52 Inferência Conhecimento Condições e Conclusões m Estados: Átomos Livres (valor ainda não conhecido) Especificados (valor já conhecido) Verdadeiros Engenharia do Conhecimento © Amílcar Cardoso Falsos Conhecimento e Inferência- 53 Inferência Conhecimento Estados de uma Regra Regra Activa Engenharia do Conhecimento © Amílcar Cardoso Inactiva Seleccionada Disparada Conhecimento e Inferência- 54 Inferência Conhecimento Estado de uma Regra Regra Activa Inactiva Seleccionada Disparada m Regra Seleccionada: m O Antecedente tem valor verdadeiro m Regra m Inactiva: O Antecedente tem valor falso Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 54 Inferência Conhecimento Estado de uma Regra Regra Activa Inactiva Seleccionada Disparada m Regra Disparada: m Regra cujas acções do Consequente foram executadas Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 55 Inferência Conhecimento Estado de uma Regra Regra Activa Inactiva Seleccionada Disparada m Regra Disparada: m Regra cujas acções do Consequente foram executadas m Regra m Activa: Regra que não está Inactiva nem foi Disparada Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência- 55 Inferência Conhecimento Estado de uma Regra Regra C130: Se o tipo de motor é propulsão Então o avião é um C130 Regra Condição C130 tipo de motor é propulsão tipo de motor é jacto C141 Regra C130: Se o tipo de motor é propulsão Então o avião é um C130 Estado da Conclusão Estado da condição Regra livre avião é um activa C130 livre avião é um C141 activa m Sem factos conhecidos: m Engenharia do Conhecimento © Amílcar Cardoso Todas as regras Activas Conhecimento e Inferência- 56 Inferência Conhecimento Estado de uma Regra m Facto conhecido: o tipo de motor é jacto Regra Condição C130 tipo de motor é propulsão tipo de motor é jacto C141 Engenharia do Conhecimento © Amílcar Cardoso Estado da Conclusão Estado da condição Regra falsaé um inactiva livre avião activa C130 livre verdadeira avião é um activa seleccionada C141 Conhecimento e Inferência- 57 Inferência Conhecimento Estado de uma Regra m Facto conhecido: o tipo de motor é jacto Regra Condição C130 tipo de motor é propulsão tipo de motor é jacto C141 Engenharia do Conhecimento © Amílcar Cardoso Estado da Conclusão Estado da condição Regra falso avião é um inactiva C130 verdadeiro activa, avião é um seleccionada C141 Conhecimento e Inferência- 58 Inferência Conhecimento Estado de uma Regra m Se conclusão da Regra C141 executada: Regra Condição C130 tipo de motor é propulsão tipo de motor é jacto C141 Engenharia do Conhecimento © Amílcar Cardoso Estado da Conclusão Estado da condição Regra falso avião é um inactiva C130 verdadeiro disparada activa, avião é um seleccionada C141 Conhecimento e Inferência- 59 Inferência Conhecimento Estado de uma Regra m Se conclusão da Regra C141 executada: Regra Condição C130 tipo de motor é propulsão tipo de motor é jacto C141 Engenharia do Conhecimento © Amílcar Cardoso Estado da Conclusão Estado da condição Regra falso avião é um inactiva C130 verdadeiro avião é um C141 disparada Conhecimento e Inferência - 60 Inferência Conhecimento Esquema genérico de inferência Saída Entrada Memória de Trabalho Base de Regras Selecção Selecção de Regras de Regras Processamento Processamento de Regra de Regra Conjunto de Conflito Regra Resolução Resolução de Conflitos de Conflitos Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência - 61 Inferência Inferência Ascendente Conhecimento (Encadeamento para a Frente) m Algoritmo básico (próximo do descrito no Lucas) : procedimento Infere(base_de_regras, memória_de_trabalho) Inicializa(base_de_regras, memória_de_trabalho, out regras_activas); faz conjunto_de_conflito ← Selecciona(memória_de_trabalho, regras_activas); se conjunto_de_conflito ≠ ∅ então regra ← ResolveConflitos(conjunto_de_conflito); Dispara(regra , inout regras_activas, inout memória_de_trabalho); ActualizaEstadoCndsRegras(memória_de_trabalho, inout regras_activas) es até regras_activas = ∅ zaf fim Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência - 62 Inferência Conhecimento Inferência Ascendente m Inicialização de estruturas auxiliares: Memória de trabalho com todos os factos m Estado de regras e condições reflecte factos na memória de trabalho m procedimento Inicializa (base_de_regras, memória_de_trabalho, inout regras_activas) memória_de_trabalho ← RecolheFactos; regras_activas ← base_de_regras; paracada regra em regras_activas faz estado(regra) ← Activa; paracada cond em antecedente(regra) faz estado(cond) ← Livre zaf zaf ActualizaEstadoCndsRegras(memória_de_trabalho, inout regras_activas) fim Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência - 63 Inferência Conhecimento Inferência Ascendente função Selecciona(memória_de_trabalho, regras_activas) conjunto_de_conflito ← ∅ ; paracada regra em regras_activas faz se estado(regra) = Activa, Seleccionada então conjunto_de_conflito ← conjunto_de_conflito ∪ { regra } es zaf fim devolve(conjunto_de_conflito) procedimento Dispara(regra, inout regras_activas) regras_activas ← regras_ activas \ {regra} estado(regra) ← Disparada; atrib/val ← AtributoValor(consequente(regra)); memória_de_trabalho ← memória_de_trabalho ∪ {atrib/val} fim Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência - 64 Inferência Conhecimento Inferência Ascendente procedimento ActualizaEstadoCndsRegras(memória_de_trabalho, inout regras_activas) paracada regra em regras_activas faz paracada cond em antecedente( regra ) faz estado(cond) ← AvaliaCond(cond, memória_de_trabalho); zaf ; se avalia(antecedente(regra)) = F então estado(regra) ← Inactiva; regras_activas ← regras_activas \ {regra} es; se avalia(antecedente(regra)) = V então estado(regra) ← Activa, Seleccionada es zaf fim Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência - 65 Inferência Conhecimento Inferência Ascendente m A realçar no algoritmo apresentado: m Durante o processamento de regras nada é perguntado ao utilizador m Apenas uma regra do Conjunto de Conflito é aplicada mO disparo de uma regra altera a memória de trabalho, logo, o conjunto de conflito deve ser reconsiderado em cada ciclo mO processo é repetido até não existirem mais regras aplicáveis (podem ser definidos outros critérios de terminação) m Controlo do processo de inferência: resolução de conflitos Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência - 66 Inferência Conhecimento Inferência Ascendente m Estratégias de Resolução de Conflitos: m Não-sensíveis ao contexto m Utilizar a ordem pela qual as regras se encontram na BC para escolher uma regra m Utilizar valores de prioridade previamente estabelecidos m Sensíveis ao contexto m Dar preferência às regras que envolvem dados obtidos mais recentemente m Dar preferência às regras mais específicas (com mais condições) Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência - 67 Inferência Inferência Ascendente Conhecimento Resolução por Prioridade m é associada uma prioridade a cada regra; dá-se preferência às regras mais prioritárias ÉÉsimples simplesde deprogramar, programar,mas masdificulta dificultaoo processo processode deengenharia engenhariado doconhecimento conhecimento Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência - 68 Inferência Inferência Ascendente Conhecimento Resolução por Especificidade m Dá-se preferência às regras mais específicas, ou seja, às que têm mais condições m Exemplo: dadas as duas regras R1: IF auscultação HAS-VALUE murmúrio_diastólico R2 é mais específica THEN doença HAS-VALUE doença_cardíaca A escolha de R2 conduz a resultados mais fortes R2: IF pressão_sistólica_sangue HAS-VALUE >140 AND pressão_de_pulso HAS-VALUE > 50 AND auscultação HAS-VALUE murmúrio_diastólico OR percussão HAS-VALUE dilatação_cardíaca THEN doença HAS-VALUE regurgitação_aórtica Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência - 69 Inferência Inferência Ascendente Conhecimento Resolução por Especificidade m Dá-se preferência às regras mais específicas, ou seja, às que têm mais condições m Principais vantagens da estratégia: m Comportamento m Extensibilidade Engenharia do Conhecimento © Amílcar Cardoso mais próximo do humano. da base de regras facilitada Conhecimento e Inferência - 70 Inferência Inferência Ascendente Conhecimento Resolução por Actualidade m Dá-se preferência às regras que, para serem aplicadas, recorrem aos factos estabelecidos mais recentemente mA cada facto é associada uma marca temporal que indica o “tempo” em que foi estabelecido m Vantagem: m Formato seguir uma linha única de raciocínio para os factos (atributos de valor único): tempo : atributo = valor Podem ocorrer diversos pares A-V na Memória de Trabalho (representando, por exemplo, a evolução temporal do valor de uma variável), mas cada triplo T-A-V é único Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência - 71 Inferência Inferência Ascendente Conhecimento Resolução por Actualidade m Exemplo: m Conjunto de factos { 1: x = a, 2: y = b, 3: z = c, 4: u = d, 5: v = e, 6: w = f } m Conjunto de conflito 1 R1: IF w = f THEN p = e 6 R2: IF y = b AND u = d THEN q = f 2 4 R3: IF x = a AND z = c AND v = e THEN r = d 1 3 5 Associa-se a cada regra uma sequência formada pelas marcas temporais dos factos correspondentes às suas condições. Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência - 72 Inferência Inferência Ascendente Conhecimento Resolução por Actualidade m Exemplo: m Conjunto de factos { 1: x = a, 2: y = b, 3: z = c, 4: u = d, 5: v = e, 6: w = f } m Conjunto de conflito R1: IF w = f THEN p = e 6 R2: IF y = b AND u = d THEN q = f 4 2 R3: IF x = a AND z = c AND v = e THEN r = d 5 3 1 2 Engenharia do Conhecimento © Amílcar Cardoso Ordenam-se as marcas em cada sequência por valores decrescentes. Conhecimento e Inferência - 73 Inferência Inferência Ascendente Conhecimento Resolução por Actualidade m Exemplo: m Conjunto de factos { 1: x = a, 2: y = b, 3: z = c, 4: u = d, 5: v = e, 6: w = f } m Conjunto de conflito 3 R1: IF w = f THEN p = e 6 0 0 R2: IF y = b AND u = d THEN q = f 4 2 0 R3: IF x = a AND z = c AND v = e THEN r = d 5 3 1 Normaliza-se o comprimento das sequências, acrescentando as marcas “0” que forem necessárias Ordenamento: R1 ≥ R3 ≥ R2 Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência - 74 Inferência Inferência Ascendente Conhecimento Resolução por Actualidade m Ordenamento das regras do Conjunto de Conflito: ¬ Associa-se a cada regra uma sequência formada pelas marcas temporais dos factos correspondentes às suas condições. - Ordenam-se as marcas em cada sequência por valores decrescentes. ® Normaliza-se o comprimento das sequências, acrescentando as marcas “0” que forem necessárias. Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência - 75 Inferência Conhecimento Inferência Ascendente m A realçar no algoritmo apresentado: m Durante o processamento de regras nada é perguntado ao utilizador l Isto “obriga” a uma pré-recolha exaustiva de dados l Seria bom admitir a possibilidade de o SP pedir ao utilizador dados adicionais l Estes dados permitiriam mobilizar regras adicionais para melhorar a qualidade das conclusões Novo algoritmo: Não assume a disponibilidade inicial de todos os dados: os valores vão sendo pedidos à medida das necessidades. Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência - 76 Inferência Conhecimento Inferência Ascendente m Novo algoritmo (próximo do descrito no Ignizio): procedimento Infere( base_de_regras, memória_de_trabalho) Inicializa(base_de_regras, memória_de_trabalho, inout regras_activas); faz conjunto_de_conflito ← Selecciona(memória_de_trabalho, regras_activas); se conjunto_de_conflito ≠ ∅ então regra ← ResolveConflitos(conjunto_de_conflito); Dispara(regra, inout regras_activas, inout memoria_de_trabalho) senão atrib ← EscolheAtributo(regras_activas); input(atrib, val); Novo memória_de_trabalho ← memória_de_trabalho ∪ {atrib/val} es ActualizaEstadoCndsRegras(memória_de_trabalho, inout regras_activas) até regras_activas = ∅ zaf fim Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência - 77 Inferência Conhecimento Inferência Ascendente m Inicialização de estruturas auxiliares: Memória de trabalho com factos recolhidos do utilizador (basta 1!) m Estado de regras e condições reflecte factos na memória de trabalho m procedimento Inicializa (base_de_regras, memória_de_trabalho, inout regras_activas) Pendente: regra activa memória_de_trabalho ← RecolheFactosIniciais; com pelo menos uma regras_activas ← base_de_regras; condição verdadeira e outra livre paracada regra em regras_activas faz estado(regra) ← Activa; pendente(regra) ← F; paracada cond em antecedente(regra) faz estado(cond) ← Livre zaf zaf ActualizaEstadoCndsRegras(memória_de_trabalho, inout regras_activas) fim Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência - 78 Inferência Conhecimento Inferência Ascendente procedimento ActualizaEstadoCndsRegras(memória_de_trabalho, inout regras_activas,) paracada regra em regras_activas faz paracada cond em antecedente(regra) faz estado(cond) ← AvaliaCond(cond, memória_de_trabalho); se estado(cond) = V então pendente(regra) ← V es zaf; se avalia(antecedente(regra)) = F então estado(regra) ← Inactiva; regras_activas ← regras_activas \ {regra}; pendente(regra) ← F es; se avalia(antecedente(regra)) = V então estado(regra) ← Activa, Seleccionada; pendente(regra) ← F es zap Lidar com regras pendentes fim Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência - 79 Inferência Conhecimento Inferência Ascendente m Escolha de atributo (para questionar) função EscolheAtributo(regras_activas) repete regra ← retira_uma(regras_activas) Prioridade a atributos de regras pendentes até pendente(regra) = V ou não_há_mais_regras; se pendente(regra) = F então regra ← retira_uma(regras_activas) es; repete cond ← retira_uma(antecedente(regra)) até estado(cond) = Livre; atrib ← atributo(cond); fim devolve (atrib) Engenharia do Conhecimento © Amílcar Cardoso Conhecimento e Inferência - 80