Circuito booliano
Na teoria da complexidade computacional e complexidade de circuito, um circuito booliano é um modelo matemático para circuitos lógicos digitais. Uma linguagem formal pode ser decidida por uma família de circuitos boolianos, um circuito para cada comprimento de entrada possível. Circuitos boolianos também são usados em modelos formais para lógica combinacional em eletrônica digital.
Circuitos boolianos são definidos em termos das portas lógicas que contém. Por exemplo, um circuito pode conter as funções binárias das portas AND e OR, e função unária da porta NOT, ou ser inteiramente descrita por portas binárias NAND. Cada porta corresponde a alguma função booliana que recebe um número fixo de bits como input e devolve um único bit como output.
Circuitos boolianos provém um modelo para muitos componentes digitais usados em engenharia da computação, incluindo multiplexadores, adicionadores, e unidades lógicas e aritméticas.
Definição formal
editarEm uma definição formal de circuitos boolianos, Vollmer começou definindo um conjunto base B de funções boolianas, correspondendo as portas permissíveis no modelo de circuito. Um circuito booliano sobre uma base B, com n entradas e m saídas, é então definida como um grafo acíclico dirigido finito. Cada vértice corresponde ou à função base ou a uma das entradas, e existe um conjuto de exatamente m nós que são rotulados como saídas.[1] As arestas também devem ter alguma ordenação, para distinguir entre diferentes argumentos da mesma função booliana.[2]
Uma base comum para circuitos Boolianos é o conjunto de {AND, OR, NOT}, de qual todas as outras funções boolianas podem ser construídas.
Complexidade computacional
editarAvaliação de um circuito
editarO Problema do Valor do Circuito, que é o problema de se computar a saída de um circuito booliano com dadas strings de entrada, é um problema de decisão P-completo.[3] Portanto, esse problema é considerado ser "inerentemente sequencial" no sentido de que provavelmente não há um algoritmo eficiente, altamente paralelo que resolve o problema.
Medidas de complexidade
editarVárias importantes medidas de complexidade podem ser definidas em circuitos boolianos, incluindo profundidade do circuito, tamanho do circuito e número de alternações entre portas AND e OR. Por exemplo, a complexidade de tamanho de um circuito booliano é o número de portas.
Classes de complexidade
editarVárias importantes classes de complexidade foram definidas em termos de circuitos boolianos, incluindo NC. NC é definida como o conjunto de funções boolianas que podem ser decididas por circuitos boolianos uniformes de tamanho polinomial e profundidade polilogarítmica. Aqui a palavra uniforme significa que tem que haver alguma condição na família do circuito tal que a descrição do circuito possa ser computada a partir do número de entradas do circuito apenas.
Veja também
editarNotas de rodapé
editarReferências
editar- Vollmer, Heribert (1999). Introduction to Circuit Complexity. Berlin: Springer. ISBN 3-540-64310-9