En la teoría de la complejidad computacional , los circuitos aritméticos son el modelo estándar para calcular polinomios . De manera informal, un circuito aritmético toma como entradas variables o números, y puede sumar o multiplicar dos expresiones que ya ha calculado. Los circuitos aritméticos proporcionan una forma formal de entender la complejidad del cálculo de polinomios. El tipo básico de pregunta en esta línea de investigación es "¿cuál es la forma más eficiente de calcular un polinomio dado ?".
Un circuito aritmético sobre el campo y el conjunto de variables es un grafo acíclico dirigido como sigue. Cada nodo en él con grado de entrada cero se llama puerta de entrada y está etiquetado por una variable o un elemento de campo en Cada otra puerta está etiquetada por o en el primer caso es una puerta de suma y en el segundo una puerta de producto . Una fórmula aritmética es un circuito en el que cada puerta tiene grado de salida uno (y por lo tanto el grafo subyacente es un árbol dirigido ).
Un circuito tiene dos medidas de complejidad asociadas: tamaño y profundidad. El tamaño de un circuito es la cantidad de puertas que tiene y la profundidad es la longitud de la ruta dirigida más larga que tiene. Por ejemplo, el circuito de la figura tiene un tamaño de seis y una profundidad de dos.
Un circuito aritmético calcula un polinomio de la siguiente manera natural. Una compuerta de entrada calcula el polinomio que lo etiqueta. Una compuerta de suma calcula la suma de los polinomios calculados por sus hijos (una compuerta es hija de si la arista dirigida está en el gráfico). Una compuerta de producto calcula el producto de los polinomios calculados por sus hijos. Considere el circuito de la figura, por ejemplo: las compuertas de entrada calculan (de izquierda a derecha) y las compuertas de suma calculan y y la compuerta de producto calcula
Dado un polinomio, podemos preguntarnos cuál es la mejor manera de calcularlo; por ejemplo, ¿cuál es el tamaño más pequeño de un circuito que calcula? La respuesta a esta pregunta consta de dos partes. La primera parte es encontrar un circuito que calcule esta parte, que generalmente se llama acotación superior de la complejidad de La segunda parte es demostrar que ningún otro circuito puede hacerlo mejor; esta parte se llama acotación inferior de la complejidad de Aunque estas dos tareas están fuertemente relacionadas, demostrar cotas inferiores suele ser más difícil, ya que para demostrar una cota inferior es necesario discutir sobre todos los circuitos al mismo tiempo.
Nótese que estamos interesados en el cálculo formal de polinomios, más que en las funciones que los polinomios definen. Por ejemplo, considere el polinomio sobre el campo de dos elementos: este polinomio representa la función cero, pero no es el polinomio cero. Esta es una de las diferencias entre el estudio de circuitos aritméticos y el estudio de circuitos booleanos . En la complejidad booleana, uno está principalmente interesado en calcular una función, más que alguna representación de ella (en nuestro caso, una representación por un polinomio). Esta es una de las razones que hacen que la complejidad booleana sea más difícil que la complejidad aritmética. El estudio de circuitos aritméticos también puede considerarse como uno de los pasos intermedios hacia el estudio del caso booleano, [1] que apenas entendemos.
Como parte del estudio de la complejidad del cálculo de polinomios, se encontraron algunos circuitos ingeniosos (algoritmos alternativos). Un ejemplo bien conocido es el algoritmo de Strassen para el producto de matrices . La forma sencilla de calcular el producto de dos matrices requiere un circuito de tamaño del orden de Strassen demostró que, de hecho, podemos multiplicar dos matrices utilizando un circuito de tamaño aproximado . La idea básica de Strassen es una forma inteligente de multiplicar matrices. Esta idea es el punto de partida de la mejor forma teórica de multiplicar dos matrices que lleva tiempo aproximadamente.
Otra historia interesante se esconde detrás del cálculo del determinante de una matriz. La forma ingenua de calcular el determinante requiere circuitos de tamaño aproximadamente igual a 100. Sin embargo, sabemos que existen circuitos de tamaño polinómico en para calcular el determinante. Estos circuitos, sin embargo, tienen una profundidad que es lineal en 100. Berkowitz propuso una mejora: un circuito de tamaño polinómico en 100 pero de profundidad [2].
También nos gustaría mencionar el mejor circuito conocido para la permanente de una matriz. En cuanto al determinante, el circuito ingenuo para la permanente tiene un tamaño aproximado. Sin embargo, para la permanente, el mejor circuito conocido tiene un tamaño aproximado que viene dado por la fórmula de Ryser: para una matriz
(este es un circuito de profundidad tres).
En términos de probar límites inferiores, nuestro conocimiento es muy limitado. Dado que estudiamos el cálculo de polinomios formales, sabemos que los polinomios de grado muy grande requieren circuitos grandes, por ejemplo, un polinomio de grado requiere un circuito de tamaño aproximadamente Entonces, el objetivo principal es probar el límite inferior para polinomios de grado pequeño, digamos, polinomio en De hecho, como en muchas áreas de las matemáticas, los argumentos de conteo nos dicen que hay polinomios de grado polinomial que requieren circuitos de tamaño superpolinomial. Sin embargo, estos argumentos de conteo generalmente no mejoran nuestra comprensión del cálculo. El siguiente problema es el principal problema abierto en esta área de investigación: encontrar un polinomio explícito de grado polinomial que requiera circuitos de tamaño superpolinomial .
El estado del arte es un límite inferior para el tamaño de un circuito que calcula, por ejemplo, el polinomio dado por Strassen y por Baur y Strassen. Más precisamente, Strassen utilizó el teorema de Bézout para mostrar que cualquier circuito que calcule simultáneamente los polinomios es de tamaño y más tarde Baur y Strassen mostraron lo siguiente: dado un circuito aritmético de tamaño que calcula un polinomio, se puede construir un nuevo circuito de tamaño como máximo que calcule y todas las derivadas parciales de Dado que las derivadas parciales de son el límite inferior de Strassen también se aplica a. [3] Este es un ejemplo donde algún límite superior ayuda a demostrar límites inferiores; la construcción de un circuito dado por Baur y Strassen implica un límite inferior para polinomios más generales.
La falta de capacidad para demostrar límites inferiores nos lleva a considerar modelos de cálculo más simples. Algunos ejemplos son: circuitos monótonos (en los que todos los elementos del campo son números reales no negativos), circuitos de profundidad constante y circuitos multilineales (en los que cada compuerta calcula un polinomio multilineal ). Estos modelos restringidos se han estudiado ampliamente y se han obtenido algunos conocimientos y resultados.
El problema abierto más interesante en la teoría de la complejidad computacional es el problema P vs. NP . En términos generales, este problema consiste en determinar si un problema dado se puede resolver con la misma facilidad con la que se puede demostrar que existe una solución para el problema dado. En su obra seminal, Valiant [4] sugirió un análogo algebraico de este problema, el problema VP vs. VNP .
La clase VP es el análogo algebraico de P; es la clase de polinomios de grado polinomial que tienen circuitos de tamaño polinomial sobre un campo fijo . La clase VNP es el análogo de NP. VNP puede considerarse como la clase de polinomios de grado polinomial tal que dado un monomio podemos determinar su coeficiente de manera eficiente, con un circuito de tamaño polinomial.
Una de las nociones básicas en la teoría de la complejidad es la noción de completitud . Dada una clase de polinomios (como VP o VNP), un polinomio completo para esta clase es un polinomio con dos propiedades: (1) es parte de la clase, y (2) cualquier otro polinomio en la clase es más fácil que en el sentido de que si tiene un circuito pequeño entonces también lo tiene Valiant demostró que el permanente es completo para la clase VNP. Entonces, para demostrar que VP no es igual a VNP, uno necesita demostrar que el permanente no tiene circuitos de tamaño polinomial. Este sigue siendo un problema abierto pendiente.
Un punto de referencia en nuestra comprensión del cálculo de polinomios es el trabajo de Valiant, Skyum, Berkowitz y Rackoff. [5] Demostraron que si un polinomio de grado tiene un circuito de tamaño entonces también tiene un circuito de tamaño polinomial en y de profundidad Por ejemplo, cualquier polinomio de grado que tenga un circuito de tamaño polinomial, también tiene un circuito de tamaño polinomial de profundidad aproximadamente Este resultado generaliza el circuito de Berkowitz a cualquier polinomio de grado polinomial que tenga un circuito de tamaño polinomial (como el determinante). Se cree que el análogo de este resultado en el entorno booleano es falso.
Un corolario de este resultado es una simulación de circuitos mediante fórmulas relativamente pequeñas, fórmulas de tamaño cuasipolinomial: si un polinomio de grado tiene un circuito de tamaño entonces tiene una fórmula de tamaño Esta simulación es más fácil que la reducción de profundidad de Valiant et al. y fue demostrada anteriormente por Hyafil. [6]