¿Cuál es el número mínimo de compuertas binarias necesarias para calcular AND y OR de bits de entrada simultáneamente? El límite superior trivial es 2 n - 2 . Creo que esto es óptimo, pero ¿cómo probarlo? La técnica de eliminación de compuerta estándar no funciona aquí, ya que al asignar una constante a cualquiera de las variables de entrada se trivializa una de las salidas.
El problema también se presenta como un ejercicio 5.12 en el libro "Complejidad de las funciones booleanas" de Ingo Wegener en una forma ligeramente diferente: "Sea . Por el método de eliminación solo puede probar un límite inferior de tamaño n + Ω ( 1 ) . Intenta demostrar límites inferiores más grandes ".
cc.complexity-theory
lower-bounds
circuit-complexity
Alexander S. Kulikov
fuente
fuente
Respuestas:
Este artículo de Blum & Seysen puede ser útil:
N.Blum, M. Seysen. Caracterización de todas las redes óptimas para un cómputo simultáneo de AND y NOR . Acta Inf. 21: 171-181 (1984)
He pensado que para 2 n - c se puede obtener el límite inferior utilizando los métodos de Blum y Seysen, pero parece que este no es el caso.x1…xn∨x¯1…x¯n 2n−c
fuente
Su pregunta está relacionada con la conocida pregunta sobre cómo calcular el mínimo y el máximo de una lista simultáneamente usando el número mínimo de comparaciones. En ese caso, la respuesta es .3⌊n/2⌋
El algoritmo inteligente que prueba el límite superior se traduce en un circuito AND / OR con el mismo límite que obtienes, ya que una de las comparaciones calcula tanto un mínimo como un máximo.
Sin embargo, el límite inferior (dado por un argumento adverso) parece traducir, al menos en el caso de circuitos monótonos (ya que un circuito AND / OR se traduce en un algoritmo max / min). Esto implicaría un límite inferior de . Quizás se pueda obtener un límite inferior ajustado analizando el argumento del adversario.3⌊n/2⌋
El límite superior aparece en "Introducción a los algoritmos", donde también puede encontrar el argumento fácil que muestra que los circuitos de comparación máximo / mínimo son válidos si funcionan para entradas booleanas (use un umbral apropiado). El límite inferior se puede encontrar, por ejemplo, aquí .
fuente