y son dos de las clases de complejidad más pequeñas que tenemos. (Tenga en cuenta que la jerarquía de tiempo logarítmico es igual a y estos son los dos primeros niveles de ).
Después de leer esta pregunta , me convierto interesado en ver si se conoce la separación entre estas dos clases, y de hecho es fácil separarlos desde (gracias a Robin Kothari. Véase también conocido) Ahora estoy interesado en conocer su caracterización de la complejidad del circuito correspondiente. He buscado un poco y he preguntado a algunas personas, pero no he podido encontrar la respuesta.
¿Tenemos buenas caracterizaciones de complejidad de circuito para las clases de complejidad y ?
Nota: muestra mucho en la definición de uniformidad para clases de complejidad pequeña. Tenga en cuenta que el pequeño límite de tiempo no permite que estas máquinas lean la entrada completa, solo pueden leer bits de la entrada, y las clases se definen usando máquinas que pueden escribir la dirección de un bit y luego leer ese bit directamente ( es decir, no es necesario repasar todos los bits anteriores para llegar allí).
Respuestas:
Creo que es mucho más interesante que las clases de complejidad del circuito utilizadas por la teoría de la complejidad CS hagan predicciones diferentes y utilicen métricas diferentes a las de la comunidad VLSI. De la complejidad VLSI de las funciones booleanas :
Curiosamente, la complejidad del circuito VLSI tiene una tendencia a tratar la profundidad como "irrelevante", ya que hay una y solo una "profundidad" que importa: la ruta crítica. Para los propósitos más prácticos, un circuito arbitrariamente complejo puede ser tratado como con una latencia de n .O(1) n
De hecho, ni siquiera estoy seguro de que el concepto de / N L o g T i m e se traduzca directamente en la complejidad del circuito VLSI. Incluso el resultado de Shannons 2 n / n no se traduce fácilmente: los resultados de Shannons son válidos solo para una base booleana que consiste en aridad ≤ 2 {AND, OR, NOT}. Esta no es la única base, y el número de "puertas" necesarias disminuye drásticamente a medida que permite más y más tipos de puertas. Los siguientes son a r e a 2DLogTime NLogTime 2n/n ≤2 area2 de una biblioteca de células estándar comercial VLSI normalizada al tamaño de una puerta NAND de 2 entradas:
Específicamente, observe las
aoi
/oai
puertas que sonAnd Or Invert
/ queOr And Invert
consisten en una primera función del tamaño de arity que alimenta la segunda función, donde el número de puertas de primera función es igual al número de veces que aparece arity . Por ejemplo, representa "Dos 2 entradas Y puertas que alimentan una puerta NOR".aoi22
Mi punto es: Tomado por separado,
oai222
se puede construir una función usando tres compuertas OR de 2 entradas y una compuerta NAND de 3 entradas, para un área total de ~ 4.56, sin incluir ningún área utilizada para la interconexión. Sin embargo, esta primitiva se puede realizar en un área de solo 1.72, lo que significa que una manifestación discreta de la misma función booleana consume 2.65 veces más área.También tenga en cuenta que el área para una puerta input {AND, NAND, OR, NOR, XOR, XNOR}, donde n ≥ 2 , es mucho menor que el área que tomaría construir la misma función usando puertas de entrada discretas 2. También tenga en cuenta que si bien el área dada para {XOR, XNOR} para este proceso es "grande" en relación con las otras puertas, hay otras formas de construir las mismas n puertas de entrada usando menos área.n n≥2 n
Las propiedades de propagación para las primitivas más complejas también son significativamente mejores que las que se obtendrían utilizando puertas discretas.
Sobre la complejidad de las implementaciones de VLSI y las representaciones gráficas de las funciones booleanas con aplicación a la multiplicación entera , la predicción de la complejidad del circuito utilizando un modelo OBDD sobreestima la complejidad real del circuito:
fuente