2.5 Majority

Unser Ziel in diesem Teilkapitel ist es, Schaltkreise für die Majority-Funktion zu bauen:
Diese nimmt n Bits als Input und gibt 1 aus, wenn mehr als n/2 davon 1 sind. Für n=3 heißt dass, das mindestens zwei Input-Bits 1 sein müssen. Als Formel kann man das so schreiben: Maj3(x,y,z)=(xy)(xz)(yz) und als Schaltkreis so:

Wie können wir das sinnvoll verallgemeinern für größere n? Was geschieht, wenn wir einfach die Wahrheitstabellen-Methode anwenden? Falls n ungerade ist, dann sieht man leicht, dass die Wahrheitstabelle in genau 2n1 vielen Zeilen eine 1 stehen hat und in ebenso vielen eine 0.

Übungsaufgabe 2.5.1 Sei n eine ungerade Zahl. Zeigen Sie, dass Majn für genau die Hälfte aller 2n möglichen Eingaben eine 1 ausgibt (und für die andere Hälfte eine 0).

Wir erhielten also eine DNF mit 2n1 vielen AND-Gates. Das ist sehr groß, gemessen daran, dass Zählen und mit n/2 vergleichen ja nicht besonders schwierig klingt. Hier ist eine kleine Verbesserung, demonstriert am Beispiel n=7. Wenn wir für n=7 mit Hilfe einer Wahrheitstabelle eine DNF konstruieren, erhalten wir ja unter Anderem den Term T:=x1x¯2x3x4x¯5x6x7 , da der Input Maj7(1011011)=1 ist. Schauen wir uns nun den Term T an, den wir erhalten, wenn wir alle negativen Literale aus T löschen: T:=x1x3x4x6x7 . Wenn dieser Term 1 wird, dann sind x1=x3=x4=x6=x7 sein, also insgesamt fünf Input-Bits 1, und Maj7 gibt 1 aus. Hier ist also eine Vereinfachung: wir folgen der Wahrheitstabellen-Methode, lassen aber alle negativen Literale weg. Das Ergebnis ist etwas kleiner und immer noch korrekt. Schauen Sie sich nun den Term x1x¯2x¯3x4x¯5x6x7 an. Auch dieser kommt in der Wahrheitstabelle vor, da Maj7(1001011)=1 gilt. In unserer neuen Konstruktion wird dieser zu x1x4x6x7 vereinfacht. Nun schauen Sie: wenn T den Wert 1 ausgibt, dann gibt x1x4x6x7 auf jeden Fall 1 aus, und Maj7 wird 1; T ist also redundant. Irgendwie ist das ja auch klar: zu verlangen, dass die fünf Variablen x1,x3,x4x6,x7 alle mit 1 abstimmen, ist zwar hinreichend, aber eben schon mehr als nötig. Es reicht also, sich auf alle Terme mit genau 4 Variablen zu beschränken. Im allgemeinen sei k=k+12. Dann gilt

(1)Majn(x1,,xn)=I[n]|I|=kiIxi .

Diese Konstruktion hat nun (nk) Terme, von denen jeder aus k Variablen besteht. Ist das nun gut oder schlecht?

Lemma. 2.5.1 Es gilt (nn/2)2nn+1 .
Beweis. Sei k{1,,n}. Vergleichen wir (nk) mit (nk1): (nk)(nk1)=n!k!(nk)!n!(k1)!(nk+1)!=nk+1k und somit (nk)(nk1)nk+1k2kn+1kn+12kn+12=n2 . Aus der letzten Zeile folgt nun, dass (nk) durch k:=n2 maximiert wird, also (nk)(nn2) gilt.

Als nächstes müssen wir uns die Definition von (nk) ins Gedächtnis rufen. Nein, n!k!(nk)! ist nicht die Definition, sondern eine Formel dafür. Die Definition ist: (nk) ist die Menge der Teilmengen von {1,,n}, die Größe k haben. Wieviele Teilmenge (jeglicher Größe) gibt es insgesamt? Genau 2n viele: Sie müssen für jede Zahl i{1,,n} die Entscheidung treffen, ob i in die Menge soll oder nicht, haben also insgesamt 2n Wahlmöglichkeiten. Daher gilt: k=0n(nk)=2n . Intuitiv gesprochen heißt das: diese Summe hat n+1 Terme (k wandert von 0 bis n, also muss der größte Term mindestens ein (n+1)-tel des Gesamtbetrages sein. Formal: 2n=k=0n(nk)k=0n(nn2)=(n+1)(nn2) und somit (nn2)2nn+1 ,

wie behauptet.

Unsere neue, bessere Konstruktion benötigt also immer noch mindestens 2nn+1 Terme, was bereits für moderate Werte wie n=30 nicht vertretbar ist.

Majority Top-Down mit if-then-else-Gates

Wenden wir nun statt Wahrheitstabelle die Top-Down-Methode an, modifiziert für monotone Funktionen wie in den Lösungen zu den Übungsaufgaben dargestellt. Insbesondere definieren wir Verallgemeinerungen von Majn wie folgt: θkn(x1,,xn):={1 falls x1++xnk0 sonst. Die Funktion Majn ist also ein Speziallfall θkn für k=n+12. Wir können θkn rekursiv zerlegen wie folgt: θkn(x1,,xn)=(xnθk1n1(x1,,xn1))θkn1(x1,,xn1)  und somit θkn aus θk1n1 und θkn1 berechnen. Rekursiv fortgefühtr sieht das dann so aus:
Die Konstruktion endet mit θ0m, was immer 1 ausgibt, und mit θmm, was x1xm ist. Die Konstruktion ist leider auch nicht effizient; wenn man mit Ckn die Anzahl der θmm und θ0m in diesem Baum zählt, dann sieht man, dass Ckn=Ck1n1+Ckn1Cnn=1C0n=1 gilt; sie erfüllt also die gleiche Rekursionsgleichung wie der Binomialkoeffizient (nk), also gilt Ckn=(nk). Die Konstruktion ist asymptotisch auch nicht besser als die, aus der Wahrheitstabelle direkt eine monotone DNF zu basteln.

Allerdings können wir die obige Konstruktion offensichtlich effizienter machen, indem wir mehrfach verwendete Zwischenergebnisse wie θk1n1 nicht doppelt berechnen, also statt dem obigen Baum einen Schaltkreis nach folgendem Pyramidenschema bauen:

Um eine Analogie mit der Programmierpraxis zu bemühen: der Unterschied zwischen den beiden Konstruktionen für θkn per Baum versus per Pyramidenschema entspricht dem Unterschied zwischen dem rekursiven Code für (nk),

def binomial(n,k):
    if k == 0 or k == n:
        return 1 
    else:
        return binomial(n-1,k-1) + binomial(n-1,k)
        
der exponentielle Laufzeit aufweist, und der effizienten Implementierung mittels Dynamic Programming, bei welchem wir uns die Zwischenergebnisse merken.

Um Größe und Tiefe des Schaltkreises zu analysieren, machen wir eine grobe Abschätzung. Für jedes θlm, das in unserer Pyramide vorkommt, brauchen wir 2 Gates; m kann die Werte 0,,n annehmen und l die Werte 0,,k, also bekommen wir insgesamt höchstens (n+1)(k+1) graue Kästchen und O(n2) Gates. Die Tiefe ist O(n), da in jedem Schritt von grauem Kasten zu dem nächsttieferen der Wert von m abnimmt. Insgesamt also haben wir gezeigt:

Theorem 2.5.2 Die Funktion Majn(x1,,xn) kann mit einem Schaltkreis der Größe O(n2), Tiefe O(n) und Fan-in 2 berechnet werden.

Majority durch Zählen

Majn(x1,,xn) zu bestimmen sollte doch einfach sein: wir zählen die Anzahl der 1en und vergleichen sie mit n2. Wie aber sollen wir zählen? Ganz einfach: mit einem Binäraddierer! Sei d=log2(n+1) die Anzahl der Bits in der Binärdarstellung von n. Wir interpretieren jede Input-Variable xi als d-stellige Binärzahl, wobei xi=1 der Zahl 000001, also 1 entspricht, und xi=0 der Zahl 0000, also 0, und addieren die dann auf:
Übungsaufgabe 2.5.2 Bestimmen Sie asymptotisch die Größe und die Tiefe dieses Schaltkreises. Achten Sie besonders bei der Berechnung der Größe darauf, dass die untersten Add-Gadgets ja 1-stellige oder dann 2-stellige Zahlen addieren müssen und erst die weniger obersten Gadgets Zahlen mit Θ(logn) Bits als Input bekommen.

O(logn) Tiefe mit 2-for-3-Addierern.

Die vorherige Konstruktion mit den Addierern war schon deutlich effizienter als unsere pyramidenartige θlm-Konstruktion, allerdings wurde das Ziel, eine Tiefe von O(logn) zu erreichen, wieder verfehlt, wenn auch knapp. Die Idee, die eine Tiefe von O(logn) erreichen wird, ist ebenso einfach wie genial.
Lemma (2-for-3 Adder) 2.5.3 Es gibt einen Schaltkreis mit O(n) Gates, Tiefe 2 und Fan-In 2, der als Input drei n-stellige Binärzahlen x,y,z nimmt und zwei n+1-stellige Binärzahlen u,v ausgibt, so dass x+y+z=u+v gilt.
Beweis. Ich demonstriere das Beweisprinzip erst einmal mit drei Zahlen in Basis 10:

Wir addieren also pro Stelle drei (einstellige) Zahlen, führen den Übertrag (das Carry) aber nicht der weiter links stehenden Stelle zu, sondern sammeln alle Überträge und bilden daraus die n+1-stellige Zahl u. Für Binärzahlen ist das natürlich noch einfacher:

Dieser Schaltkreis hat insgesamt O(n) Gates und Tiefe 2 (wobei wir die NOT-Gates im -Gate nicht mitzählen).
Wir interpretieren nun die n Inputs x1,,xn von Majoroty als einstellige Binärzahlen, sortieren sie in Dreiergruppen und machen per 2-for-3-Addierer daraus 2n3 Zahlen. Dann machen wir (mit den mittlerweile 2-stelligen Zahlen) weiter und bekommen circa 4n9 Zahlen. Auf jeder Ebene schrumpft die Anzahl der Zahlen um einen Faktor von 23; nach log3/2n Ebenen haben wir schließlich noch zwei mittlerweile (logn)-stellige Zahlen, die wir mit einem "normalen" Binäraddierer addieren. Das Ergebnis vergleichen wir mit dem -Schaltkreis mit k+12. Was ist die Tiefe des Gesamtschaltkreises? Es ist log3/2n×depth(2-for-3 adder)+depth(Binäraddierer für (logn)-stellige Zahlen)+depth(-Schaltkreis für (logn)-stellige Zahlen=O(logn)+O(loglogn)+O(loglogn)=O(logn) . Die Größe des Schaltkreises wird dominiert von den 2-for-3-Addierern. Wir haben O(n) viele davon, allerdings hat jeder bis zu O(logn) viele Gates, da wir ja (logn)-stellige Zahlen addieren müssen; wir haben insgesamt also O(nlogn) viele Gates.
Theorem. 2.5.4 Die Konstruktion mit 2-for-3-Addierern gibt uns einen Schaltkreis für Majority mit Fan-in 2, Tiefe O(logn) und Größe O(nlogn)

Übungsaufgabe 2.5.3 Führen Sie eine genauere Abschätzung der Größe durch. Untersuchen Sie insbesondere:

  1. Wieviele 2-for-3-Addierer haben Sie in Ebene i des Baumes?
  2. Wieviel Bits haben die Zahlen auf Ebene i, und wie groß muss daher der 2-for-3-Addierer sein?
  3. Was ergibt sich insgesamt in Summe?

Wir haben nun also fast alle unserer Ziele erreicht. Allerdings hat die Konstruktion mit 2-for-3-Addierern einen Schönheitsfehler: sie ist nicht monoton. Warum sollten wir das wollen? Nun ja, Majority ist eine monotone Funktion, also ist es ja irgendwie verständlich, dass wir auch einen monotonen Schaltkreis wollen. Unser Pyramidenschema, in dem wir alle θkm berechnen, ist monoton, hat allerdings leider Tiefe Ω(n).

Monoton und polylogarithmische Tiefe durch Halbierung und Aufzählung.

Die Idee ist, dass wir, anstatt θkn aus xn, θk1n1 und θkn1 zu berechnen, versuchen, irgendwie von n auf n/2 runterzukommen. Dann könnten wir rekursiv weitermachen und müssten uns nur durch logarithmisch viele Werte von n wühlen. Wir sehen, dass wir k auf k+1 Weisen als Summe zweier nichtnegativer Zahlen a+b=k schreiben können. Des weiteren zerlegen wir x{0,1}n in y=(x1,,xn/2) und z=(xn/2+1,,xn) und sehen, dass ixikiyiajzjb für Werte a,b0 mit a+b=k und somit θkn(x)=a=0k(θan/2(y)θkan/2(z)) Wenn wir diese Konstruktion rekursiv fortsetzen, erhalten wir logn Ebenen und somit auf den ersten Blick logarithmische Tiefe. Auf den zweiten Blick erkennen wir, dass wir etwas geschummelt haben: die -Gates haben sehr großen Fan-in, nämlich bis zu n. Um Fan-in 2 zu erreichen, müssen wir jedes -Gate durch einen Binärbaum aus normalen -Gates von Fan-in 2 ersetzen. Dies gibt uns zusätzlich Tiefe O(logn) pro -Gate; wir erhalten also insgesamt eine Tiefe von O(log2n).

Übungsaufgabe 2.5.4 dass polynomiell viele (in diesem Falle: O(n2) viele) Gates ausreichen. Zeigen Sie, wie die gerade skizzierte Konstruktion so ausgeführt werden kann,

Monoton und logarithmische Tiefe: Valiants probabilitische Konstruktion

Theorem. 2.5.5 Es gibt einen monotonen Schaltkreis mit Fan-in 2, Tiefe O(logn) und Größe poly(n), der Majn berechnet.
Beweis. Die Beweismethode, die wir verwenden, ist womöglich neu für Sie. Wir verwenden bei der Konstruktion des Schaltkreises Zufall; am Ende werden wir zeigen, dass dieser zufällige Schaltkreis mit hoher Wahrscheinlichkeit Majn auf allen möglichen 2n Inputs korrekt berechnen, und folgern daraus, das etwas, was mit hoher Wahrscheinlichkeit eintritt, auch existieren muss. Die Existenz folgt also schlussendlich aus einer Wahrscheinlichkeitsrechnung. Das heißt auch, dass ich Ihnen für konkretes n, sagen wir n=99, nicht hinschreiben könnte, wie ein korrekter Schaltkreis aussähe; ich könnte die randomisierte Konstruktion durchführen und Ihnen erklären, das der resultierende Schaltkreis höchstwahrscheinlich korrekt ist.

Während des ganzen Beweises müssen Sie sich vor Augen halten, dass wir bei der Konstruktion des Schaltkreises C Zufall verwenden; wir nehmen nicht an, dass die Inputs x{0,1}n in irgendeiner Weise zufällig sind. Wir verwenden also Wahrscheinlichkeitsverteilungen über Schaltkreisen, nicht von über Inputs. Zuerst definieren wir die Signalstärke von Verteilungen über Schaltkreise.

Definition (Signalstärke) 2.5.6 Sei C eine Verteilung über Schaltkreise mit Input-Variablen x1,,xn. Wir sagen, dass C Signalstärke mindestens δ hat, wenn x{0,1}:PrCC[C(x)=Majn(x)]1+δ2 gilt.

In Worten, wenn der zufällig ausgewählte Schaltkreis C den Wert Majn(x) besser als ein Münzwurf vorhersagt, und zwar um δ/2 besser. Wir können einen ganz einfachen (zufälligen Schaltkreis) bauen, der ein schwache aber positive Signalstärke hat.

Lemma. 2.5.7 Es gibt eine Wahrscheinlichkeitsverteilung C0 über monotone Schaltkreise der Größe 1, die Signalstärke 1n hat. Genauer gesagt gilt für jeden Input x{0,1}n: ein nach dieser Verteilung zufällig ausgewählter Schaltkreis CC0 ist mit Wahrscheinlichkeit mindestens 12+12n korrekt ist. Formal ausgedrückt: x{0,1}n:PrCC0[C(x)=Majn(x)]=12+12n .
Beweis. Der Schaltkreis bzw. die Wahrscheinlichkeitsverteilung ist extrem einfach. Wir wählen zufällig einen Index I{1,,n} und geben xI als unseren Schaltkreis C (bestehend aus einem einzigen Input-Gate, das gleichzeitig das Output-Gate ist) aus. Dieser Schaltkreis ist natürlich monoton.

Beachten Sie, dass ich den Index groß geschrieben mit I bezeichne, nicht i; das ist Konvention, weil I eine Zufallsvariable ist. Sei nun ein festes x{0,1} gegeben. Mit welcher Wahrscheinlichkeit ist unser (recht primitiver) Schaltkreis korrekt?

C(x)=Majn(x)xI=Majn(x) . Wir unterscheiden nun zwei Fälle. Wenn Majn(x)=1 ist, dann gibt es mindestens k+1 Indizes i mit xi=1. Wenn wir mit I einen solchen ausgewählt haben, dann sind wir erfolgreich. Die Wahrscheinlichkeit hierfür ist PrCC0[C(x)=1]=PrI[n][xI=1]=|{i[n] | xi=1}nk+1n=k+12k+1=k+12+122k+1=12+12n . Wenn nun Majn(x)=0 ist, dann gibt es mindestens k+1 Stellen i mit xi=0, und somit ist C(x) auch wieder mit Wahrscheinlichkeit mindestens k+1n+1 korrekt.

Um eine Analogie aus dem Alltag zu bemühen: wenn Sie für eine Wahlprognose einen zufällig ausgewählten Bürger befragen, so ist das Ergebnis zwar nicht wirklich repräsentativ, aber immerhin leicht besser, als wenn Sie einfach raten würden. Unser zufälliger Schaltkreis sendet uns also ein schwaches aber positives Signal in die richtige Richtung. Die Signalstärke ist 1n.

Die zweite Zutat ist nun ein "Signalverstäker". Angenommen, eine Verteilung C hat Signalstärke δ, also x{0,1}n:PrCC[C(x)=Majn(x)]1+δ2 . Dann können wir drei Schaltkreise C1,C2,C3C unabhängig voneinander samplen und einen neuen Schaltkreis bauen: C(x):=Maj3(C1(x),C2(x),C3(x)). Dies gibt uns wiederum eine Verteilung über Schaltkreise, die wir C3 nennen. Diese hat eine höhere Signalstärke:

Lemma 2.5.8 Falls C eine Verteilung über Schaltkreise der Tiefe d und Größe s ist und C Signalstärke δ hat, dann gilt:
  1. alle Schaltkreise in C3 haben Tiefe d+2;
  2. alle Schaltkreise in C3 haben Größe 3s+4;
  3. die Signalstärke von C3 ist 32δ12δ3.

Beweis. Wir betrachten ein festes x{0,1}n mit Majn(x)=1; der Fall Majn(x)=0 ist analog. Wir definieren nun U:=C1(x), V:=C2(x) und W:=C3(x). Da C1,C2,C3C zufällige Schaltkreise sind, sind U,V,W Zufallsvariable über {0,1}, und zwar unabhängig, weil wir C1,C2,C3 auch unabhängig gesampelt haben. Wir wissen: Pr[U=1]=Pr[V=1]=Pr[W=1]1+δ2=:p. Was ist nun Pr[Maj3(U,V,W)=1]?

Pr[Maj3(U,V,W)=1]=Pr[U=V=W=1]+Pr[genau zwei von {U,V,W} sind 1]=p3+3p2(1p)=(1+δ2)3+3(1+δ2)21δ2=18(4+6δ2δ3)=12(1+32δ12δ3) .

Die Signalstärke von C3 ist also mindestens 32δ12δ3.

Wir beginnen nun mit der Verteilung C0 über Schaltkreise der Größe 1 und definieren

Ci+1:=(Ci)3 .

Zur Wiederholung: um CCi+1 zu sampeln, sampeln wir unabhängig drei Schaltkreise Ci und verknüpfen deren Output-Gates mit einem Maj3-Gadget. Wenn Ci die Signalstärke δi hat, dann hat Ci+1 Signalstärke 32δi12δi3. Wenn δi1/2 sein sollte, dann ist das mindestens 54δi. Daraus folgt, dass nach höchstens i:=log5/4n Rekursionsstufen eine Signalstärke von mindestens 1/2 erreicht ist: Ci hat Signalstärke mindestens 1/2.

Wenn wir jetzt die rekursive Konstruktion fortsetzen, steigt die Signalstärke weiter an und konvergiert gegen 1: limiδi=1. Die Frage ist nur, wie schnell konvergiert es? Da wir nun nicht mehr an Wahrscheinlichkeiten interessiert sind, die knapp über 1/2 liegen, sondern an solchen, die knapp unter 1 liegen, führen wir einen Parameterwechsel durch: eine Verteilung C von Schaltkreisen mit Inputs x1,,xn hat Fehlerwahrscheinlichkeit ϵ, wenn

x{0,1}n:PrCC[C(x)=Majn(x)]1ϵ .

Eine Signalstärke von δ entspricht einer Fehlerwahrscheinlichkeit von 1δ2. Die Verteilung Ci hat also eine Fehlerwahrscheinlichkeit von höchstens 11/22=1/4. Das obige Lemma, nun aus der Sicht der Fehlerwahrscheinlichkeit, liest sich so:

Behauptung. Wenn C Fehlerwahrscheinlichkeit ϵ hat, dann hat C3 Fehlerwahrscheinlichkeit 3ϵ2

Beweis. Wie im Beweis vom Lemma setzen wir p:=1+p2=1ϵ und erhalten

Pr[Maj3(U,V,W)=1]=p3+3p2(1p)=(1ϵ3)+3(1ϵ)2ϵ=13ϵ2 .

Somit hat C3 Fehlerwahrscheinlichkeit 3ϵ2.

Für i:=log5/4n hat Ci eine Fehlerwahrscheinlichkeit von höchstens 1/4. Für i+1 wird das zu 3(14)2=316 und für i+2 zu 3(316)2=2725619. Wenn nun ϵ19 ist, dann gilt 3ϵ2ϵ3/2. Wir definieren ϵi:=1δi2, also die Fehlerwahrscheinlichkeit von Ci. Es gilt also ϵi+1(ϵi)3/2 für alle ii+2 und somit

ϵi+2+j(ϵi)(32)j(14)(32)j .

Qualitativ sehen wir: solange δi1/2 gilt, wächst die Signalstärke exponentiell an. Dieses exponentielle Wachstum kann natürlich nicht beliebig weitergehen. Jenseits δi1/2 hört das auf, dafür fällt nun die Fehlerwahrscheinlichkeit doppelt exponentiell. Für j:=log3/2n gilt dann

ϵi+2+j(14)n<2n .

In Bildern:


Graph der Funktion pp3+3p2(1p)

Signalstärke δ wächst für p[1/2,3/4] exponentiell.

Fehlerwahrscheinlichkeit ϵ fällt für p[3/4,1/2] doppelt exponentiell.

Wir setzen nun k:=i+2+j=log5/4n+2+log3/2n=O(logn) und sehen, dass Ck eine Verteilung über Schaltkreise mit Tiefe O(logn) und Fehlerwahrscheinlichkeit kleiner als 2n ist. Was nun kommt, ist ein absolutes Standardargument in probabilitischen Beweisen: ein Union Bound. Das geht ungefähr so: wenn für jedes feste b{0,1}n ein Schaltkreis CCk mit Wahrscheinlichkeit ϵk irrt, dann ist die Wahrscheinlichkeit, dass C sich für irgendein x{0,1}n irrt, höchstens 2nϵk. Formal: für jedes b{0,1}n definieren wir Eb als die Menge der Schaltkreise mit Input-Variablen x1,,xn, die sich auf b irren, also

Eb:={Schaltkreise C über x1,,xn | C(b)Majn(b)} .

Die Verteilung Ck existiert ja im Wahrscheinlichkeitsraum aller Boolescher Schaltkreise mit Inputs x1,,xn. Die Menge Eb ist somit ein Ereignis in diesem Raum. Ein extrem unwahrscheinliches Ereignis:

b{0,1}n:PrCCk[CEb]=ϵk<2n .

Oder kompakt ausgedrückt: PrCk[Eb]<2n. Wir haben nun ein Ereignis Eb für jedes b{0,1}n und definieren

E:=b{0,1}nEb .

Was ist E? Es ist die Menge der Schaltkreise, die sich auf mindestens einem b{0,1}n irren. Was ist das Komplement E¯? Das ist die Menge der Schaltkreise, die sich auf keinem b{0,1}n irren, also die Menge der Schaltkreise, die Majn korrekt berechnen. Es gilt nun

PrCk[E]=PrCk[b{0,1}nEb]b{0,1}nPrCk[Eb]=b{0,1}nϵk<b{0,1}n2n=2n2n=1 .

Also PrCk[E]<1 und somit PrCk[E¯]>0. Das bedeutet, dass ein zufälliger Schaltkreis CCK mit positiver Wahrscheinlichkeit die Funktion Majn korrekt berechnet. Jeder Schaltkreis, der unter Ck gesampelt werden kann, hat Tiefe O(logn), Fan-in 2 und ist monoton, und somit schließen wir: es gibt einen monotonen Schaltkreis C mit Fan-in 2 und Tiefe O(logn), der Majn berechnet.

Es bleibt die Frage, wie groß dieser Schaltkreis C ist. Seien wir hier bequem: ein Schaltkreis mit Fan-in 2 und einem Output-Gate hat höchstens 2i Gates, die Abstand i vom Output-Gate haben. Somit hat ein Schaltkreis mit Fan-in 2 und Tiefe d höchstens

1+2+4++2d=2d+11

Gates. Ein Schaltkreis mit Fan-in 2 und Tiefe clog2n hat also insgesamt höchstens 2clogn+11=O(nc)=O(poly(n)) Gates.

Übungsaufgabe 2.5.5 Präzisieren Sie die Größe von Valiants Schaltkreis und bestimmen ein cR, so dass er die Größe Θ(nc) hat.

Wir könnten nun noch ehrgeiziger sein und einen monotonen Schaltkreis mit Fan-in 2, Tiefe O(logn) und linearer Größe O(n) anstreben.