İşte önemsiz girişimleri yenen bir algoritma.
Aşağıdaki (O'Donnell kitabında Egzersiz 1.12) bilinen bir gerçeği var: Eğer f:{−1,1}n→{−1,1} derecesi olan bir Boole fonksiyonudur ≤d bir polinom sonra her Fourier katsayısı olarak ve f , f ( S ) arasında bir tamsayı katı olan 2 - d . Cauchy-Schwarz ve Parseval'i kullanmak en fazla 4 gün sıfır Fourier katsayısı ve ∑ S | f^(S)2−d4d∑S|f^(S)|≤2d.
Bu bir örnekleme yöntemi önerir -
- Rasgele olmayan negatif tamsayıyı seçin aS bütün serileri için S⊆[n] en boyutunun d , toplam kadar ≤4d .
- Let f(x)=∑SaS2dχS(x).
- Doğrulayın f Boole olduğunu. Eğer öyleyse, f . Başka, 1 geri dön .
Her derece için geldiğini hatırlatırız ≤d polinom f tam Adım 1'deki rasgele tamsayılar biri tercihi polinom üretecektir f . Belirli bir derecede yakalanma ihtimali ≤d polinom
Bu nedenle, durmadan önce bu işlemi en çok kez tekrarlamalıyız.1/((n≤d)+4d4d)=1/O(n/d)d4d.
O(n/d)d4d
Adım 3'ün nasıl gerçekleştirileceğini göstermek için kalır. Kişi tanımlayabilir . Kontrol et (her Boolean işlevi için Nisan-Szegedy tarafından tutulması gerekir) ve ardından değişkenindeki tüm olası atamaları olarak değerlendirin . Bu, zamanında yapılabilir . Gur ve Tamuz bu görev için çok daha hızlı bir randomize algoritma sunuyor, ancak bu kısım zaman karmaşıklığına hakim olmadığından, bu yeterli.A=⋃{S:aS≠0}|A|≤d2dfA2d2d
Genel algoritma, bir derece rasgele örnek üretir polinom zamanda . nin zaman karmaşıklığının olduğu varsayımı altında .≤dO(nd)d4dn≤d2d2O(d24d)
Bu çok daha hızlı bir tamamen rastgele işlev örnekleme rağmen, bu algoritma örnekleme bir polinom zaman değil (bu durumda, belirli bir derecede yakalanma ihtimali polinom ).≤d1/22n