Articulo de referencia

Circuito booleano

Ejemplo de circuito booleano. Los nodos ∧ son compuertas AND, los nodos ∨ son compuertas OR y los nodos ¬ son compuertas NOT. En la teoría de la complejidad computacional y la c...

Ejemplo de circuito booleano. Los nodos son compuertas AND, los nodos son compuertas OR y los nodos ¬ son compuertas NOT.

En la teoría de la complejidad computacional y la complejidad de circuitos , un circuito booleano es un modelo matemático para circuitos lógicos digitales combinacionales . Un lenguaje formal puede definirse mediante una familia de circuitos booleanos, uno para cada longitud de entrada posible.

Los circuitos booleanos se definen en función de las compuertas lógicas que contienen. Por ejemplo, un circuito podría contener compuertas AND y OR binarias y compuertas NOT unarias , o estar completamente descrito por compuertas NAND binarias . Cada compuerta corresponde a una función booleana que recibe un número fijo de bits como entrada y produce un único bit como salida.

Los circuitos booleanos proporcionan un modelo para muchos componentes digitales utilizados en ingeniería informática , como multiplexores , sumadores y unidades aritmético-lógicas , pero excluyen la lógica secuencial . Son una abstracción que omite muchos aspectos relevantes para el diseño de circuitos lógicos digitales reales, como la metaestabilidad , la ramificación de la señal , los fallos transitorios , el consumo de energía y la variabilidad del retardo de propagación .

Definición formal

Al dar una definición formal de circuitos booleanos, Vollmer comienza definiendo una base como un conjunto B de funciones booleanas, que corresponden a las compuertas permitidas en el modelo de circuito. Un circuito booleano sobre una base B , con n entradas y m salidas, se define entonces como un grafo acíclico dirigido finito . Cada vértice corresponde a una función base o a una de las entradas, y hay un conjunto de exactamente m nodos que se etiquetan como salidas. [ 1 ] : 8 Las aristas también deben tener algún orden para distinguir entre diferentes argumentos de la misma función booleana. [ 1 ] : 9

Como caso especial, una fórmula proposicional o expresión booleana es un circuito booleano con un único nodo de salida en el que todos los demás nodos tienen un factor de ramificación de 1. Por lo tanto, un circuito booleano puede considerarse una generalización que permite subfórmulas compartidas y múltiples salidas.

Una base común para los circuitos booleanos es el conjunto { AND , OR , NOT }, que es funcionalmente completo , es decir, a partir del cual se pueden construir todas las demás funciones booleanas.

Complejidad computacional

Fondo

Un circuito particular actúa únicamente sobre entradas de tamaño fijo. Sin embargo, los lenguajes formales (las representaciones basadas en cadenas de caracteres de los problemas de decisión ) contienen cadenas de distintas longitudes, por lo que un solo circuito no puede capturarlos completamente (a diferencia del modelo de máquina de Turing, en el que una sola máquina de Turing describe completamente un lenguaje). En cambio, un lenguaje se representa mediante una familia de circuitos . Una familia de circuitos es una lista infinita de circuitos.(do0,do1,do2,...){\displaystyle (C_{0},C_{1},C_{2},...)}, dóndedonorte{\displaystyle C_{n}}tienenorte{\displaystyle n}variables de entrada. Se dice que una familia de circuitos decide un lenguaje.L{\displaystyle L}si, para cada cadenaw{\displaystyle w},w{\displaystyle w}está en el idiomaL{\displaystyle L}si y solo sidonorte(w)=1{\displaystyle C_{n}(w)=1}, dóndenorte{\displaystyle n}es la longitud dew{\displaystyle w}En otras palabras, un lenguaje es el conjunto de cadenas que, al aplicarse a los circuitos correspondientes a sus longitudes, dan como resultado 1. [ 2 ] : 354

Medidas de complejidad

En los circuitos booleanos se pueden definir varias medidas importantes de complejidad , como la profundidad del circuito, su tamaño y el número de alternancias entre las compuertas AND y OR. Por ejemplo, la complejidad de tamaño de un circuito booleano se define por el número de compuertas que contiene.

Existe una conexión natural entre la complejidad del tamaño del circuito y la complejidad temporal . [ 2 ] : 355 Intuitivamente, un lenguaje con una complejidad temporal pequeña (es decir, que requiere relativamente pocas operaciones secuenciales en una máquina de Turing ) también tiene una complejidad de circuito pequeña (es decir, que requiere relativamente pocas operaciones booleanas). Formalmente, se puede demostrar que si un lenguaje está enTIMETROmi(t(norte)){\displaystyle {\mathsf {TIEMPO}}(t(n))}, dóndet{\displaystyle t}es una funciónt:nortenorte{\displaystyle t:\mathbb {N} \to \mathbb {N} }, entonces tiene complejidad de tamaño de circuitoO(t2(norte)){\displaystyle O(t^{2}(n))}.

Clases de complejidad

Varias clases de complejidad importantes se definen en términos de circuitos booleanos. La más general de ellas es P/poly , el conjunto de lenguajes que son decidibles por familias de circuitos de tamaño polinomial. Se deduce directamente del hecho de que los lenguajes enTIMETROmi(t(norte)){\displaystyle {\mathsf {TIEMPO}}(t(n))}tener complejidad de circuitoO(t2(norte)){\displaystyle O(t^{2}(n))}que P{\displaystyle \subseteq }P/poly. En otras palabras, cualquier problema que pueda ser calculado en tiempo polinomial por una máquina de Turing determinista también puede ser calculado por una familia de circuitos de tamaño polinomial. Además, la inclusión es propia (es decir, P{\displaystyle \subsetneq }P/poly) porque hay problemas indecidibles que están en P/poly. P/poly resulta tener una serie de propiedades que lo hacen muy útil en el estudio de las relaciones entre clases de complejidad. En particular, es útil para investigar problemas relacionados con P versus NP . Por ejemplo, si hay algún lenguaje en NP que no está en P/poly, entonces P{\displaystyle \neq }NP. [ 3 ] : 286 P/poly también ayuda a investigar propiedades de la jerarquía polinómica . Por ejemplo, si NP ⊆ P/poly, entonces PH se reduce aΣ2PAG{\displaystyle \Sigma _{2}^{\mathsf {P}}}Una descripción completa de las relaciones entre P/poly y otras clases de complejidad está disponible en " Importancia de P/poly ". P/poly también tiene la interesante característica de que puede definirse equivalentemente como la clase de lenguajes reconocidos por una máquina de Turing de tiempo polinomial con una función de asesoramiento acotada polinomialmente .

Dos subclases de P/poly que poseen propiedades interesantes por derecho propio son NC y AC . Estas clases se definen no solo en términos del tamaño de su circuito, sino también en términos de su profundidad . La profundidad de un circuito es la longitud del camino dirigido más largo desde un nodo de entrada al nodo de salida. La clase NC es el conjunto de lenguajes que pueden resolverse mediante familias de circuitos que están restringidas no solo a tener un tamaño polinomial, sino también a tener una profundidad polilogarítmica . La clase AC se define de manera similar a NC, sin embargo, se permite que las compuertas tengan un fan-in ilimitado (es decir, las compuertas AND y OR pueden aplicarse a más de dos bits). NC es una clase importante porque resulta que representa la clase de lenguajes que poseen algoritmos paralelos eficientes .

Evaluación del circuito

El problema del valor del circuito —el problema de calcular la salida de un circuito booleano dado sobre una cadena de entrada dada— es un problema de decisión P-completo . [ 3 ] : 119 Por lo tanto, este problema se considera "inherentemente secuencial" en el sentido de que probablemente no exista un algoritmo eficiente y altamente paralelo que lo resuelva.

Lo completo

Los circuitos lógicos son la representación física de operaciones lógicas simples, AND, OR y NOT (y sus combinaciones, como biestables no secuenciales o redes de circuitos), que forman una estructura matemática conocida como álgebra booleana . Son completos en el sentido de que pueden ejecutar cualquier algoritmo determinista. Sin embargo, esto no es todo. En el mundo físico también encontramos aleatoriedad, especialmente en sistemas pequeños regidos por efectos de cuantización, descritos por la teoría de la mecánica cuántica . Los circuitos lógicos no pueden generar aleatoriedad, y en ese sentido forman un conjunto lógico incompleto. La solución a esto se encuentra en añadir un generador de bits aleatorios ad hoc a las redes lógicas o a las computadoras, como en la máquina de Turing probabilística . Un trabajo reciente [ 4 ] ha introducido el concepto teórico de un circuito lógico inherentemente aleatorio llamado biestable aleatorio , que completa el conjunto. Este circuito incorpora aleatoriedad de forma conveniente y es interoperable con circuitos lógicos booleanos deterministas. Sin embargo, aún se desconoce una estructura algebraica equivalente al álgebra booleana y los métodos asociados de construcción y reducción de circuitos para el conjunto extendido.

Véase también

Notas a pie de página

  1. 1 2 Vollmer, Heribert (1999). Introducción a la complejidad de los circuitos . Berlín: Springer. ISBN 3-540-64310-9.
  2. 1 2 Sipser, Michael (2006). Introducción a la teoría de la computación (2.ª ed.). EE. UU.: Thomson Course Technology. ISBN  978-0-534-95097-2.
  3. 1 2 Arora, Sanjeev; Barak, Boaz (2009). Complejidad computacional: un enfoque moderno . Cambridge University Press. ISBN 978-0-521-42426-4.
  4. Stipčević, Mario; Batelić, Mateja (2022). "Consideraciones de entropía en circuitos mejorados para una computadora de pulsos aleatorios de inspiración biológica" . Scientific Reports . 12 (1) 115. arXiv : 1908.04779 . Bibcode : 2022NatSR..12..115S . doi : 10.1038/s41598-021-04177-9 . PMC 8741937. PMID 34997140 .  
Obtenido de " https://en.wikipedia.org/w/index.php?title=Boolean_circuit&oldid=1319842041 "