En la teoría de la complejidad computacional, los circuitos aritméticos son el modelo estándar para calcular polinomios. Los circuitos aritméticos pueden recibir información de variables o números y calcular el resultado de una expresión previamente calculada mediante suma o multiplicación. Este modelo nos permite comprender metafísicamente la complejidad de calcular polinomios.
La pregunta fundamental de un circuito es "¿Cómo calcular un polinomio dado de la manera más eficiente?"
Un circuito aritmético se compone de un gráfico acíclico guiado. Cada nodo del gráfico con grado cero se denomina puerta de entrada y está etiquetado como una variable o un elemento en el dominio. Otras puertas son puertas de suma o puertas de multiplicación. La fórmula aritmética es un circuito en el que el grado de salida de cada puerta es uno, formando un árbol dirigido. Hay dos medidas importantes de complejidad de los circuitos: tamaño y profundidad. El tamaño del circuito se refiere al número de puertas, mientras que la profundidad se refiere a la longitud del camino dirigido más largo del circuito.
Los circuitos aritméticos tienen una forma natural de calcular polinomios. Una puerta de entrada calcula su polinomio etiquetado; una puerta de suma calcula la suma de los polinomios calculados por sus hijos y una puerta de multiplicación calcula el producto de los polinomios calculados por sus hijos. Tomando la figura como ejemplo, la puerta de entrada calcula x1, x2 y 1 en secuencia, la puerta de suma calcula x1 + x2 y x2 + 1, y la puerta de multiplicación calcula el valor de (x1 + x2) x2 (x2 + 1) .
Cuando nos enfrentamos a un polinomio f, la pregunta es cuál es la mejor manera de calcularlo; por ejemplo, calcular el tamaño mínimo de un circuito unitario. Esta pregunta suele constar de dos partes. La primera parte es encontrar un circuito que calcule el polinomio, lo que se denomina complejidad del límite superior; la segunda parte es demostrar que otros circuitos no pueden lograr un mejor rendimiento, lo que se denomina complejidad del límite inferior.
Aunque las dos tareas están estrechamente relacionadas, demostrar un límite inferior generalmente es más difícil porque todos los circuitos deben analizarse simultáneamente.
Es importante señalar aquí que lo que nos interesa es el cálculo formal de polinomios, no las funciones definidas por polinomios. Por ejemplo, considere el polinomio x2 + x en un dominio binario. Este polinomio representa una función cero en este dominio, pero no es un polinomio cero. Ésta es una de las diferencias entre el estudio de circuitos aritméticos y el estudio de los circuitos de Bollinger, y una de las razones por las que la complejidad de Bollinger es más difícil que la complejidad aritmética.
En el estudio del cálculo de la complejidad polinómica, se descubrieron algunos circuitos o algoritmos inteligentes. Por ejemplo, el famoso algoritmo de multiplicación de matrices de Strassen utiliza un tamaño de circuito de aproximadamente n2,807, lo que reduce en gran medida la complejidad en comparación con el simple n3. Otra historia fascinante es sobre el cálculo del determinante de una matriz n × n. Aunque el método de cálculo original requería un circuito de tamaño n!, sabemos que el determinante se puede calcular con un circuito de tamaño polinómico, aunque la profundidad del mismo. El circuito es lineal con n.
Mientras tanto, existen desafíos similares para calcular el tamaño de circuitos permanentes para matrices n × n, teniendo el circuito óptimo un tamaño de aproximadamente 2n.
Nuestro conocimiento actual sobre la demostración de límites inferiores es muy limitado. Por ejemplo, calcular polinomios de grados muy grandes a menudo requiere circuitos grandes; por ejemplo, un polinomio de grado 2^2n requiere un tamaño de circuito de aproximadamente 2n; El principal problema radica en demostrar límites inferiores para polinomios de pequeño grado, especialmente polinomios de tamaño n.
El principal problema abierto actualmente es encontrar un polinomio explícito tal que el tamaño del circuito requerido para su cálculo exceda el nivel del polinomio.
El problema abierto más interesante en la teoría de la complejidad computacional es el problema P versus NP. En términos generales, la pregunta es si determinar una solución a un problema puede ser tan fácil como probar su existencia. Valiant propuso una analogía algebraica de los problemas de VP y VNP, que implica la relación entre el tamaño del polinomio y el tamaño del circuito.
Un punto de referencia importante para nuestra comprensión de los cálculos polinomiales es el trabajo de Valiant, Skyum, Berkowitz y Rackoff. Demostraron que si un polinomio de grado r tiene un circuito de tamaño s, entonces el polinomio también tiene circuitos de polinomios de tamaño r y s.
Este resultado se considera falso dados resultados similares en la configuración de Bollinger. Un corolario de este resultado es que las simulaciones de circuitos que involucran polinomios son fórmulas relativamente pequeñas, en este caso, un polinomio de grado r para un circuito de tamaño s requeriría una fórmula de tamaño s^ (O(log(r))).
El diseño, el tamaño y la profundidad de los circuitos aritméticos son elementos clave para calcular polinomios. Estudiar estos elementos no es sólo un desafío teórico en matemáticas, sino que también está estrechamente relacionado con aplicaciones prácticas. En estos cálculos complejos, una de las direcciones de las investigaciones futuras será si podemos encontrar métodos más eficientes para resolver problemas más grandes.