.
Aurium.Colivre.Coop.br Esse site é Legal Demais para Internet Explorer

Aurium :: ArithmeticBool

Últimas blogadas:

%HEADLINES{"http://softwarelivre.org/aurium/blog/feed" refresh="600" header="SoftwareLivre.org" limit="15" format=" * $title" }% %HEADLINES{"http://cirandas.net/aurium/blog/feed" refresh="600" header="Cirandas.net" limit="15" format=" * $title" }%



Numa conversa com Moisés começamos a viajar na possibilidade de responder expressões booleanas com dependências baseado numa lógica que ele me apresentou, mas usando aritimética no lugar das expressões para dar o grau de certeza sobre uma resposta. Isso porque não teremos valores verdadeiro ou falso como atomos da expressão, mas valores numéricos indicando a certeza sobre a afirmação.

Isso se parece com lógica fuzzy. Estou definindo o seguinte: a resposta está no intervalo [0, 1], onde 0 significa certeza absoluta do valor falso, 1 significa certeza absoluta do valor verdadeiro e 0.5 significa que não se sabe a resposta. Valores intermediários indicam o grau de certeza que pode ser facilmente convertido para um percentual.

Fica mais ou menos assim: Eu não sei se Mônica está feliz, mas Carlinha e Gilmar podem me informar. Considero que é verdade se ele ou ela disserem que sim, mas minha confiança (para esse assunto) em Carlinha é de 90% e em Gilmar é de 50%, então temos as varáveis: A expressão é: Nesta notação quando a variável está entre colchetes significa que não será representada com 100% do seu valor. W tem 100% de confiança porque eu estou dando a informação.

Agora digamos que eu tenha os seguintes valores: então temos:

Calculando:
F = ( [0.8 90] or [0.4 50] ) and 0.95

Não entendeu nada? Porque 0.45 é 50% de 0.4? Então leia abaixo:

Como Funciona? (convertendo lógica booleana em algebra)

Revisando: Ou seja:
Nível de certeza em Falso:
  • 0.00 = 100%
  • 0.10 = 80%
  • 0.20 = 60%
  • 0.30 = 40%
  • 0.40 = 20%
  • 0.45 = 10%
Nível de certeza em Verdadeiro:
  • 0.55 = 10%
  • 0.60 = 20%
  • 0.70 = 40%
  • 0.80 = 60%
  • 0.90 = 80%
  • 1.00 = 100%

Se eu não confio 100% em um valor posso diminuir sua influência na resposta final, apesar de que isso pode também diminuir a certeza da resposta. O valor falso deve ser elevado para tender a 0.5 e o valor verdadeiro deve diminuir para tender, também, a 0.5. Baseando-se na notação, veja como é o cálculo:
[X P] = ( X * Q ) + ( ( 1 - Q ) / 2 ), onde Q = P / 100.

As analiazes das comparações booleanas não são uma busca pela probabilidade de se encontrar o valor verdade ou falso, mas uma mistura disso com a confiabilidade nas componentes. Afinal isso é uma tentativa de dar uma resposta baseada na confiança das fontes.

Se você não conhece, ou esqueceu, veja como funcionam os operadores booleanos base:
  X     Y   X and Y
V V V
V F F
F V F
F F F
  X     Y   X and Y
V V V
V F V
F V V
F F F
  X  Sorted ascending not X
F V
V F

Para o and temos que valorizar quando tivermos as duas componentes verdadeiras e tender ao falso em qualquer outro caso.

Para o or é preciso valorizar o verdadeiro quando concordarem ou selecionar só o verdadeiro. No caso do em que só tivermos falso, tirar uma média é o mais justo no caso.

A negação é a conversão para o valor exatamente contrário, isso se consegue com o complemtento para 1. Assim como 0.9 representa 80% de certeza em verdadeiro, seu complemento 0.1 representa 80% de certeza em falso.

Testando valores no limite.

Para ter uma boa idéia do comportamento colocarei aqui testes com limite tendendo a 0, 1, 0.25, 0.5 e 0.75 pelos dois lados (quando válido). Relacionando todos 2 a 2 na função and e or.

Possibilidades. Isso tem utilidade?

Isso pode morrer logo ou virar a nova moda da Web… Depois escrevo sobre isso.

DiggThis

Copyright © 2004 - 2019 Aurélio A. Heckert
Conteúdo licenciado sob Creative Commons by-nc-sa