Lógica Paraconsistente ou Não-Clássica

 

Autor: Fabrício Olivetti de França

Data: 28/06/1999

Última modificação: 28/12/1999

Assunto: Lógica Paraconsistente e Lógica Fuzzy, um assunto básico para quem quer aprender robótica e Inteligência Artificial.

Notas: Não modifique este texto, mas distribua-o livremente, contate-me pelo e-mail: fabricioolivetti@yahoo.com.br.

Lógica Clássica ou Binária – 0 ou 1; V ou F.

Ex.: A maçã é vermelha ou verde.

Lógica Paraconsistente – aceita contradições, não binárias.

Ex.: A maçã pode ser vermelha, quase vermelha, quase verde e verde...

Sua importância está nos estudos da Inteligência Artificial e na robótica, para construções de robôs autônomos. A lógica paraconsistente, com suas características, tem um funcionamento parecido com o cérebro humano no tratamento de situações reais.

 

Lógica Paraconsistente Anotada

É uma forma de representação da lógica paraconsistente, é medido em grau de crença e varia de 0 à 1.

O estado lógico é determinado através do par ordenado (Gc, Gd) (Grau de crença, Grau de descrença).

Os estados podem ser:

Inconsistente = T = (1,1)

Verdadeiro = V = (1,0)

Falso = F = (0,1)

Desconhecido = ^ = (0,0)

Ex.: Dois sensores S1 e S2 verificam a coloração das maçãs em um processo de separação industrial de controle de distribuição, eles dão valores de 0 à 1 de acordo com a aproximação da cor da maçã com o vermelho, S1 será o grau de crença e S2’(complemento de S2) será o grau de descrença. Então:

 

 

 

Os casos inconsistentes e desconhecidos indicam que o Sistema Especialista deve obter mais informações.

Como é feita a análise paraconsistente

A análise é feita através do Quadrado Unitário do Plano Cartesiano:

 

Gráfico dos graus de certeza e de contradição:

Vscct = Valor Superior de Controle de Contradição = ½

Vscc = Valor Superior de Controle de Certeza = ½

Vicc = Valor Inferior de Controle de Certeza = -½

Vicct = Valor Inferior de Controle de Contradição = -½

 

Na prática o sistema paraconsistente funciona assim:

Algoritmo LógicaP ( )

Entrada: Gc, Gd

Saída: S, Gcr, Gct

Lógica ( Gc, Gd );

*/ Constantes */

Vscc à C1;

Vicc à C2;

Vscct à C3;

Vicct à C4;

Se 0 £ Gc £ 1 e 0 £ Gd £ 1 então

Gct à Gc + Gd – 1;

Gcr à Gc – Gd;

Se Gcr ³ Vscc então S1 à V;

Se Gcr £ Vicc então S1 à F;

Se Gct ³ Vscct então S1 à T;

Se Gct £ Vicct então S1 à ^ ;

Se 0 £ Gcr < Vscc e 0 £ Gct < Vscct então

Se Gcr ³ Gct então S1 à Qv / T;

Se Gcr < Gct então S1 à T / V;

Se 0 £ Gcr < Vscc e Vicct < Gct £ 0 então

Se Gcr ³ |Gct| então S1 à Qv / ^ ;

Se Gcr < |Gct| então S1 à ^ / V;

Se Vicc < Gcr £ 0 e Vicct < Gct £ 0 então

Se |Gcr| ³ |Gct| então S1 à Qf / ^ ;

Se |Gcr| < |Gct| então S1 à ^ / F;

Se Vicc < Gcr £ 0 e 0 £ Gct < Vscct então

Se |Gcr| ³ |Gct| então S1 à Qf / T;

Se |Gcr| < |Gct| então S1 à T / f;

Senão imprima("valores incorretos").

Onde / significa tendo para

Algoritmo Decisão

Entrada: S, Gcr, Gct

Saída: L (1 bit, estado lógico)

Decisão(S, Gcr, Gct);

Se (Gcr ³ ½ ou Gcr £ -½) e (-½ < Gct < ½)

Se S = = F então L à 0;

Se S = = V então L à 1;

Senão colete novos dados.

 

Este algoritmo pode e deve ser ajustado devido a tolerância à falhas do sistema que ele será implementado.

Este algoritmo simplesmente verifica se ele deve ou não colher mais informações, se não precisar verificar se é V ou F.

 

Lógica Paraconsistente é simplesmente descrita como lógica booleana convencional, sem a restrição de que todas as variáveis sejam 0 ou 1. Para isso ter significado, os operadores booleanos (E, OU e NÃO), são redefinidas de tal forma que elas possam ter valores de entrada entre 0 e 1, e possam gerar saídas entre 0 e 1. Há várias maneiras na qual pode ser feito, mas geralmente é um desses dois jeitos.

1)

A E B = Menor(A, B)

C OU D = Maior(C, D)

NÃO E = 1 - E

2)

A E B = A * B

C OU D = C + D - (C * D)

NÃO E = 1 - E

Note que se as variáveis padrões são usada em quaisquer operações, o resultado será o mesmo que se tivéssemos usados os operadores booleanos. A próxima questão é, como nós tomamos estas variáveis com valores entre 1 e 0? Nós usamos o que é chamado uma função de associação, à qual é uma função geralmente quase linear, que pega uma entrada contínua como tensão e temperatura, e tem uma saída de um valor para a variável Paraconsistente.

 

 

 

1 | _________________________

| /

| /

| /

| /

0 |---------------

------------------------------------------------------------------

Temperatura

 

No sistema termostato, o gráfico acima pode ser a função de associação para uma variável chamada "Muito Quente", que tem um valor de 0 até 75 graus, cresce linearmente até o valor de 1 quando chega à 100 graus, e permanece um para todas as temperaturas acima de 100 graus. Para o sistema acima, nós podemos ter também funções para umidade, ou qualquer outro fator de conforto. Nós podemos então escrever várias condições Se..então para tratar o sistema como você faria em um sistema booleano.

Se a temperatura é "muito quente" então refrigeração = 100%

Se umidade é "seco" então refrigeração = 0%

etc.

Mas em um sistema booleano não haveria jeito de decidir entre essas duas ações, se estivesse seco e quente, mas na lógica Paraconsistente, há vários meios para resolve-lo, que permite tais conflitos serem resolvidos. O método mais comum é dar um peso para cada saída que é proporcional ao "nível de verdade", e fazer então uma média das saídas. Por exemplo, se a variável "muito quente" tivesse um valor de 0,7 e "seco" tivesse um valor de 0,2; então a saída de esfriamento seria 100% para 0,7 e 0% para 0,2 ou:

(0,7*100% + 0,2*0%)/(0,7+0,2) = 77%

Se a variável "muito quente" tivesse o valor 0,3 e "seco" tivesse o valor 0,9 então teremos:

(0,3*0% + 0,9*100%)/(0,3+0,9) = 75%

Não podemos esquecer o caso em que temos o valor 0,5. Nesse caso precisamos definir qual fará o papel de 100% e qual fará o de 0%.

Outro método seria simplesmente pegar o maior valor e implementa-lo nos outros.