Đây là một thuật toán đánh bại những nỗ lực tầm thường.
Sau đây là một thực tế được biết đến (Tập thể dục 1.12 trong cuốn sách O'Donnell của): Nếu f:{−1,1}n→{−1,1} là một hàm Boolean trong đó có mức độ ≤d như một đa thức, sau đó mỗi hệ số Fourier của f , f ( S ) là bội số của 2 - d . Sử dụng Cauchy-Schwarz và Parseval ai được rằng có ít nhất 4 d nonzero hệ số Fourier và Σ S | f^(S)2−d4d∑S|f^(S)|≤2d.
Điều này cho thấy một phương pháp lấy mẫu -
- Chọn ngẫu nhiên số nguyên không âm aS cho tất cả các bộ S⊆[n] kích thước tối đa là d , mà số tiền lên đến ≤4d .
- Đặt f(x)=∑SaS2dχS(x).
- Xác nhận rằng f là Boolean. Nếu vậy, trả lại f . Khác, quay lại 1 .
Lưu ý rằng đối với mỗi mức độ ≤d đa thức f chính xác một sự lựa chọn của số nguyên ngẫu nhiên trong Bước 1 sẽ tạo ra các đa thức f . Xác suất nhận được một mức độ cụ thể ≤d đa thức là
Do đó, chúng ta cần lặp lại quá trình này nhiều nhất là lần, trước khi dừng lại.1/((n≤d)+4d4d)=1/O(n/d)d4d.
O(n/d)d4d
Vẫn còn để hiển thị cách thực hiện bước 3. Người ta có thể định nghĩa . Kiểm tra xem (mà nên giữ bởi Nisan-Szegedy cho mỗi chức năng Boolean) và sau đó đánh giá trên tất cả các bài tập thể các biến trong . Điều này có thể được thực hiện trong thời gian . Gur và Tamuz cung cấp một thuật toán ngẫu nhiên nhanh hơn nhiều cho nhiệm vụ này, tuy nhiên vì phần này không chi phối độ phức tạp thời gian nên điều này là đủ.A=⋃{S:aS≠0}|A|≤d2dfA2d2d
Nhìn chung, thuật toán tạo ra một mẫu ngẫu nhiên có bậc đa thức trong thời gian . Theo giả định rằng độ phức tạp thời gian là .≤dO(nd)d4dn≤d2d2O(d24d)
Đây không phải là thuật toán lấy mẫu thời gian đa thức, mặc dù nó nhanh hơn rất nhiều sau đó lấy mẫu một hàm hoàn toàn ngẫu nhiên (trong trường hợp đó xác suất nhận được một mức độ cụ thể đa thức là ).≤d1/22n