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:
Se os dois sensores apontarem
que a maçã é vermelha então o estado lógico
é verdadeiro (S1=1, S2’=0). 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.