Giả sử tôi có một mạch boolean tính toán một số hàm f : { 0 , 1 } n → { 0 , 1 } . Giả sử mạch bao gồm các cổng AND, OR và KHÔNG có quạt vào và ra nhiều nhất là 2.
Đặt là một đầu vào đã cho. Cho C và x , tôi muốn đánh giá C trên n đầu vào khác với x ở một vị trí bit đơn, nghĩa là để tính n giá trị C ( x 1 ) , C ( x 2 ) , Lỗi , C ( x n ) Trong đó x i giống với x ngoại trừ i của nóbit thứ được lật.
Có cách nào để làm điều này hiệu quả hơn khi đánh giá độc lập n lần trên n đầu vào khác nhau không?
Giả sử chứa m cổng. Sau đó, việc đánh giá C độc lập trên tất cả n đầu vào sẽ mất thời gian O ( m n ) . Có cách nào để tính C ( x 1 ) , C ( x 2 ) , Lọ , C ( x n ) trong thời gian o ( m n ) không?
Bối cảnh tùy chọn: Nếu chúng ta có một mạch số học (có các cổng là phép nhân, cộng và phủ định) trên , thì có thể tính được các đạo hàm n ∂ ftrongthời gianO(m). Về cơ bản, chúng ta có thể sử dụng các phương pháp tiêu chuẩn để tính toán độ dốc (quy tắc truyền ngược / chuỗi), trongthời gianO(m). Điều đó hoạt động vì chức năng tương ứng là liên tục và khác biệt. Tôi đang tự hỏi liệu một cái gì đó tương tự có thể được thực hiện cho các mạch boolean. Các mạch Boolean không liên tục và khác biệt, vì vậy bạn không thể thực hiện cùng một mẹo, nhưng có thể có một số kỹ thuật thông minh khác mà người ta có thể sử dụng? Có thể một số loại lừa Fourier, hoặc một cái gì đó?
(Câu hỏi biến thể: nếu chúng ta có cổng boolean với quạt không giới hạn và quạt bị chặn, bạn có thể làm tốt hơn so với việc đánh giá n lần không?)