Hier ist ein Algorithmus, der die trivialen Versuche schlägt.
Das Folgende ist eine bekannte Tatsache (Übung 1.12 in O'Donnells Buch): Wenn eine Boolesche Funktion mit dem Grad as ist ein Polynom, dann ist jeder Fourier-Koeffizient von , ein ganzzahliges Vielfaches von . Mit Cauchy-Schwarz und Parseval erhält man, dass es höchstens Fourier-Koeffizienten ungleich Null und .f:{−1,1}n→{−1,1}≤dff ( S ) 2 - d 4 d Σ S | F ( S ) | ≤ 2 df^(S)2−d4d∑S|f^(S)|≤2d
Dies legt eine Stichprobenmethode nahe -
- Wählen Sie zufällige nicht negative ganze Zahlen für alle Mengen von höchstens , die sich zu summieren .aSS⊆[n]d≤4d
- Sei .f(x)=∑SaS2dχS(x)
- Stellen Sie sicher, dass ein Boolescher Wert ist. Wenn ja, geben Sie . Ansonsten gehe zurück zu .ff1
Beachten Sie, dass für jedes Grad Polynom genau eine Auswahl von Zufallszahlen in Schritt 1 das Polynom . Die Wahrscheinlichkeit für einen bestimmten Grad erhält Polynom
Daher müssen wir diesen Prozess höchstens Mal in Erwartung wiederholen , bevor wir anhalten.≤dff≤d1/((n≤d)+4d4d)=1/O(n/d)d4d.
O(n/d)d4d
Es bleibt zu zeigen, wie Schritt 3 durchzuführen ist. Man kann . Überprüfen Sie, dass (was von Nisan-Szegedy für jede Boolesche Funktion gelten sollte) und werten Sie dann für alle möglichen Zuordnungen zu den Variablen in . Dies kann in der Zeit . Gur und Tamuz bieten für diese Aufgabe einen viel schnelleren zufälligen Algorithmus an, da dieser Teil jedoch die zeitliche Komplexität nicht dominiert, ist dies ausreichend.A=⋃{S:aS≠0}|A|≤d2dfA2d2d
Insgesamt ergibt der Algorithmus eine Zufallsstichprobe mit einem Grad Polynom in der Zeit . Unter der Annahme, dass die zeitliche Komplexität .≤dO(nd)d4dn≤d2d2O(d24d)
Dies ist kein polynomieller Zeitabtastungsalgorithmus, obwohl er viel schneller ist als das Abtasten einer vollständig zufälligen Funktion (in diesem Fall beträgt die Wahrscheinlichkeit, ein bestimmtes Grad Polynom zu erhalten, ).≤d1/22n