Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ir a la navegaciónIr a la búsqueda
Índice
1Definición formal
2Complejidad computacional
o 2.1Antecedentes
o 2.2Medidas de complejidad
o 2.3Clases de complejidad.
3Ver también
4Notas al pie
5Referencias
Definición formal[editar]
Al dar una definición formal de los circuitos booleanos, Vollmer comienza definiendo
una base como conjunto B de funciones booleanas, que corresponde a las compuertas
permitidas en el modelo de circuito. Un circuito booleano sobre una base B,
con n entradas y m salidas, se define 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 están etiquetados como salidas. 1 Los bordes también deben
tener algún orden, para distinguir entre diferentes argumentos de la misma función
booleana. 2
Como un caso especial, una fórmula proposicional o expresión booleana es un circuito
booleano con un solo nodo de salida en el que todos los demás nodos tienen fan-out
de 1. Por lo tanto, un circuito booleano puede considerarse como una generalización
que permite subformulas compartidas y salidas múltiples.
Una base común para los circuitos booleanos es el conjunto { AND, OR, NOT }, que
es funcionalmente completo, es decir, a partir de él se pueden construir todas las
demás funciones booleanas.
Complejidad computacional[editar]
Antecedentes[editar]
Un circuito en particular actúa solo en entradas de tamaño fijo. Sin embargo, los
lenguajes formales (las representaciones basadas en cadenas de problemas de
decisión) contienen cadenas de diferentes longitudes, por lo que los lenguajes no
pueden ser capturados completamente por un solo circuito (en contraste con el modelo
de máquina de Turing, en el que un lenguaje se describe completamente por una sola
máquina de Turing). En cambio, un lenguaje está representado por una familia de
circuitos. Una familia de circuitos es una lista infinita de circuitos. ,
dónde tiene variables de entrada. Se dice que una familia de circuitos decide un
idioma si, por cada cadena , está en el idioma si y solo si , dónde es la longitud de .
En otras palabras, un lenguaje es el conjunto de cadenas que, cuando se aplican a los
circuitos correspondientes a sus longitudes, se evalúan como 1. 3
Medidas de complejidad[editar]
Se pueden definir varias medidas de complejidad importantes en los circuitos
booleanos, incluida la profundidad del circuito, el tamaño del circuito y el número de
alternancias entre las compuertas AND y las compuertas OR. Por ejemplo, la
complejidad del tamaño de un circuito booleano es el número de puertas.
Resulta que hay una conexión natural entre la complejidad del tamaño del circuito y la
complejidad temporal. 4 Intuitivamente, un lenguaje con poca complejidad temporal (es
decir, que requiere relativamente pocas operaciones secuenciales en una máquina de
Turing), también tiene una pequeña complejidad de circuito (es decir, requiere
relativamente pocas operaciones booleanas). Formalmente, se puede demostrar que si
un lenguaje está en , dónde es una función , entonces tiene complejidad de circuito .
Clases de complejidad.[editar]
Varias clases de complejidad importantes se definen en términos de circuitos
booleanos. El más general de estos es P/poly, el conjunto de lenguajes que son
decidibles por las familias de circuitos de tamaño polinómico. Se sigue directamente del
hecho de que los lenguajes en tienen complejidad de circuito que P P/poly. En otras
palabras, cualquier problema que pueda calcularse en tiempo polinómico por una
máquina de Turing determinista también puede calcularse por una familia de circuitos
de tamaño polinómico. Además, el caso es que la inclusión es adecuada (es decir,
PAGS P/poly) porque hay problemas indecidibles en P/poly. P/poly resulta tener una
serie de propiedades que lo hacen muy útil en el estudio de las relaciones entre las
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 NP. 5 P/poly también ayuda a investigar las propiedades de la jerarquía
polinómica. Por ejemplo, si NP ⊆ P/poly, entonces PH colapsa a .P/poly también tiene
la característica interesante de que se puede definir de manera equivalente como la
clase de lenguajes reconocidos por una máquina de Turing de tiempo polinomial con
una función de asesoramiento delimitada por polinomios.
Dos subclases de P/poly que tienen propiedades interesantes por derecho propio
son NC y AC . Estas clases se definen no solo en términos de su tamaño de circuito
sino también en términos de su profundidad. La profundidad de un circuito es la
longitud de la ruta dirigida más larga desde un nodo de entrada al nodo de salida. La
clase NC es el conjunto de lenguajes que pueden ser resueltos por familias de circuitos
que están restringidas no solo a tener un tamaño polinómico sino también a tener una
profundidad poli-logarítmica . La clase AC se define de manera similar a NC, sin
embargo, las compuertas pueden tener un fan-in ilimitado (es decir, las puertas AND y
OR se pueden aplicar a más de dos bits). NC es una clase importante porque resulta
que representa la clase de lenguajes que tienen algoritmos paralelos eficientes.
Evaluación del circuito[editar]
El problema del valor del circuito, de calcular la salida de un circuito booleano dado en
una cadena de entrada dada, es un problema de decisión P-completo.6 Por lo tanto,
este problema se considera "inherentemente secuencial" en el sentido de que
probablemente no exista un algoritmo eficiente y altamente paralelo que resuelva el
problema.
Ver también[editar]
Puerta lógica
lógica booleana
Notas al pie[editar]
1. ↑ Vollmer 1999, p. 8.
2. ↑ Vollmer 1999, p. 9.
3. ↑ Sipser, Michael (2006). Introduction to the Theory of Computation (2nd edición). USA:
Thomson Course Technology. pp. 354. ISBN 978-0-534-95097-2.
4. ↑ Sipser, Michael (2006). Introduction to the Theory of Computation (2nd edición). USA:
Thomson Course Technology. p. 355. ISBN 978-0-534-95097-2.
5. ↑ Arora, Sanjeev; Barak, Boaz (2009). Computational Complexity: A Modern Approach.
Cambridge University Press. p. 286. ISBN 978-0-521-42426-4.
6. ↑ Arora, Sanjeev; Barak, Boaz (2009). Computational Complexity: A Modern Approach.
Cambridge University Press. p. 119. ISBN 978-0-521-42426-4.
Referencias[editar]
Vollmer, Heribert (1999). Introduction to Circuit Complexity. Berlin: Springer. ISBN 3-540-64310-9.
Proyectos Wikimedia
Datos: Q837479
Identificadores
Microsoft Academic: 141796577