Bewerten Sie die Boolesche Schaltung anhand einer Reihe ähnlicher Eingaben


10

Angenommen, ich habe eine boolesche Schaltung , die eine Funktion berechnet . Angenommen, die Schaltung besteht aus UND-, ODER- und NICHT-Gattern mit höchstens Fan-In und Fan-Out 2.f : { 0 , 1 } n{ 0 , 1 }C.f:{0,1}n{0,1}}

Sei eine gegebene Eingabe. Wenn und , möchte ich an den Eingängen auswerten , die sich von in einer einzelnen Bitposition unterscheiden, dh um die Werte zu berechnen wobei dasselbe ist wie außer dass sein tes Bit umgedreht wird. C x C n x n C ( x 1 ) , C ( x 2 ) , , C ( x n ) x i x ix{0,1}}nC.xC.nxnC.(x1),C.(x2),,C.(xn)xichxich

Gibt es eine effizientere Möglichkeit, als mal an den verschiedenen Eingängen unabhängig auszuwerten ?n nC. nn

Angenommen, enthält Tore. Die unabhängige Auswertung von an allen Eingängen dauert dann . Gibt es eine Möglichkeit, in Zeit zu berechnen ?m C n O ( m n ) C ( x 1 ) , C ( x 2 ) , , C ( x n ) o ( m n )C.mC.nÖ(mn)C.(x1),C.(x2),,C.(xn)Ö(mn)


Optionaler Kontext: Wenn wir eine arithmetische Schaltung (deren Gatter Multiplikation, Addition und Negation sind) über , wäre es möglich, die n Richtungsableitungen f zu berechnenR.nfxich(x)inÖ(m)Zeit. Grundsätzlich könnten wir Standardmethoden zur Berechnung des Gradienten (Rückausbreitung / Kettenregel) inÖ(m). Das funktioniert, weil die entsprechende Funktion stetig und differenzierbar ist. Ich frage mich, ob etwas Ähnliches für boolesche Schaltungen getan werden kann. Boolesche Schaltkreise sind nicht kontinuierlich und differenzierbar, daher können Sie nicht denselben Trick ausführen, aber vielleicht gibt es eine andere clevere Technik, die Sie verwenden können? Vielleicht eine Art Fourier-Trick oder so?

(Variantenfrage: Wenn wir boolesche Gates mit unbegrenztem Fan-In und begrenztem Fan-Out haben, können Sie dies asymptotisch besser machen als die Bewertung von n -Zeiten?)C. n


1
Da Andrew Ihre Frage ziemlich gut beantwortet hat, werde ich nur einen Kommentar hinterlassen. Wenn groß ist (wie O ( 2 n / n ) ) und Sie C an vielen Eingängen auswerten (bis zu 2 o ( n / log n ) ), gibt es ein C 'mit der Größe nur O ( 2 n / n) ), die C auf jedem m auswerten kannmO(2n/n)C2o(n/logn)C'Ö(2n/.n)C.mEingänge. (Das Problem wird in der Literatur auch als "Massenproduktion" bezeichnet.) Siehe Uhlig, "Zur Synthese selbstkorrigierender Schemata aus Funktionselementen mit einer kleinen Anzahl zuverlässiger Elemente". Math.Notes Acad.Sci. UdSSR 15, 558-562. In einigen Fällen können Sie also mit Ungleichmäßigkeiten besser abschneiden.
Ryan Williams

Antworten:


10

Ich halte es für unwahrscheinlich, dass ein solcher Trick leicht zu finden ist und / oder Ihnen erhebliche Vorteile bringt, da er nicht triviale Erfüllbarkeitsalgorithmen liefert. Hier ist wie:

Erstens, obwohl es scheinbar einfacher ist, kann Ihr Problem tatsächlich das allgemeinere Problem lösen, bei gegebener Schaltung und N Eingängen x 0 , , x N - 1 C an allen Eingängen schneller als ˜ O ( N | zu bewerten) C | ) Zeit. Der Grund ist, dass wir C in eine Schaltung C ' der Größe | optimieren können C | + ˜ O ( N n ) welche bei Eingabe iC.N.x0,,xN.- -1C.Ö~(N.|C.|)C.C'|C.|+Ö~(N.n) gibt C ( x i ) aus . Grundsätzlich erstellen wir nur eine kleine Nachschlagetabelle, die 0 i 10 N - 1 - i an x i sendet, und verdrahten sie mit C.0ich10N.- -1- -ichC.(xich)0ich10N.- -1- -ichxichC. .

Nichttriviale Algorithmen zur Batch-Bewertung von Booleschen Schaltkreisen können dann verwendet werden, um schnelle Erfüllbarkeitsalgorithmen zu erstellen. Hier ist ein Beispiel in dem einfachen Fall, in dem wir annehmen, dass wir einen Algorithmus haben, der die Auswertung in der Zeit für jede Konstante ϵ durchführt > 0 . Bei der Eingabe einer Schaltung C können wir die Erfüllbarkeit entscheiden, indem wir C in eine Schaltung C erweiternÖ~(|C.|2- -ϵ+(N.|C.|)1- -ϵ/.2+N.2- -ϵ)ϵ>0C.C. Größe 2 n / 2| C | Dies ist nur das ODER über alle möglichen Auswahlmöglichkeiten der ersten n / 2 Eingänge für C (wobei die anderen Eingänge frei bleiben). Wir bewerten dann C ' an allen seinen 2 n / 2 Eingängenchargenweise. Das Endergebnis ist, dass wir eine zufriedenstellende Zuordnung zu C 'finden, wenn C erfüllbar ist. Die Laufzeit beträgt ˜ O ( 2 ( n / 2 ) ( 2 - ϵ)C.'2n/.2|C.|n/.2C.C.'2n/.2C.'C..Ö~(2(n/.2)(2- -ϵ)|C.|2- -ϵ)=Ö~(2n(1- -ϵ/.2)poly(|C.|))

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.