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
[editar | editar código-fonte]Em 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
[editar | editar código-fonte]Avaliação de um circuito
[editar | editar código-fonte]O 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
[editar | editar código-fonte]Vá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
[editar | editar código-fonte]Vá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
[editar | editar código-fonte]Notas de rodapé
[editar | editar código-fonte]Referências
[editar | editar código-fonte]- Vollmer, Heribert (1999). Introduction to Circuit Complexity. Berlin: Springer. ISBN 3-540-64310-9