Evaluar circuito booleano en lote de entradas similares


10

Supongamos que tengo un circuito booleano que calcula alguna función f : { 0 , 1 } n{ 0 , 1 } . Suponga que el circuito se compone de AND, OR y NO compuertas con entrada y salida de ventilador como máximo 2.Cf:{0,1}n{0,1}

Sea una entrada dada. Dado C y x , quiero evaluar C en las n entradas que difieren de x en una posición de un solo bit, es decir, para calcular los n valores C ( x 1 ) , C ( x 2 ) , ... , C ( x n ) donde x i es lo mismo que x excepto que es ix{0,1}nCxCnxnC(x1),C(x2),,C(xn)xixiEl bit está volteado.

¿Hay alguna manera de hacer esto que sea más eficiente que evaluar independientemente n veces en las n entradas diferentes?C nn

Suponga que contiene m puertas. Luego, evaluar independientemente C en todas las n entradas llevará tiempo O ( m n ) . ¿Hay alguna manera de calcular C ( x 1 ) , C ( x 2 ) , ... , C ( x n ) en el tiempo o ( m n ) ?CmCnO(mn)C(x1),C(x2),,C(xn)o(mn)


Contexto opcional: si tuviéramos un circuito aritmético (cuyas puertas son multiplicación, suma y negación) sobre , entonces sería posible calcular las n derivadas direccionales fRnenO(m)tiempo. Básicamente, podríamos usar métodos estándar para el cálculo del gradiente (regla de propagación hacia atrás / cadena), en el tiempoO(m). Eso funciona porque la función correspondiente es continua y diferenciable. Me pregunto si se puede hacer algo similar para los circuitos booleanos. Los circuitos booleanos no son continuos y diferenciables, por lo que no puedes hacer el mismo truco, pero ¿quizás hay alguna otra técnica inteligente que puedas usar? ¿Tal vez algún tipo de truco de Fourier, o algo así?fxi(x)O(m)O(m)

(Pregunta variante: si tenemos puertas booleanas con entrada y salida sin límites, ¿puede hacerlo asintóticamente mejor que evaluar n veces?)C n


1
Como Andrew respondió su pregunta bastante bien, solo dejaré un comentario. Si es grande (como O ( 2 n / n ) ) y está evaluando C en muchas entradas (hasta 2 o ( n / log n ) ), entonces hay una C ' de tamaño solo O ( 2 n / n ) que puede evaluar C en cualquier mmO(2n/n)C2o(n/logn)CO(2n/n)Cmentradas (El problema también se denomina "producción en masa" en la literatura). Ver Uhlig, "Sobre la síntesis de esquemas de autocorrección a partir de elementos funcionales con un pequeño número de elementos confiables". Math.Notes Acad.Sci. URSS 15, 558-562. Entonces, en algunos casos, puede hacerlo mejor sin uniformidad.
Ryan Williams el

Respuestas:


10

Consideraría poco probable que tal truco sea fácil de encontrar y / o le brinde ganancias significativas, ya que daría algoritmos de satisfacción no triviales. Así es cómo:

CNx0,,xN1CO~(N|C|)CC|C|+O~(Nn)0i10N1iC(xi)0i10N1ixiC

O~(|C|2ϵ+(N|C|)1ϵ/2+N2ϵ)ϵ>0CCC2n/2|C|n/2CC2n/2CCO~(2(n/2)(2ϵ)|C|2ϵ)=O~(2n(1ϵ/2)poly(|C|))

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.