Đánh giá mạch boolean trên lô đầu vào tương tự


10

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.Cf:{0,1}n{0,1}

Đặt là một đầu vào đã cho. Cho Cx , 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óx{0,1}nCxCnxnC(x1),C(x2),,C(xn)xixibit 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?C nn

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?CmCnO(mn)C(x1),C(x2),,C(xn)o(mn)


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 fRntrongthờ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ì đó?fxi(x)O(m)O(m)

(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?)C n


1
Vì Andrew trả lời câu hỏi của bạn khá tốt, tôi sẽ chỉ để lại nhận xét. Nếu lớn (như O ( 2 n / n ) ) và bạn đang đánh giá C trên nhiều đầu vào (tối đa 2 o ( n / log n ) ) thì có một C có kích thước chỉ O ( 2 n / n ) có thể đánh giá C trên bất kỳ mmO(2n/n)C2o(n/logn)CO(2n/n)Cmđầu vào. (Vấn đề còn được gọi là "sản xuất hàng loạt" trong tài liệu.) Xem Uhlig, "Về tổng hợp các sơ đồ tự sửa từ các yếu tố chức năng với một số lượng nhỏ các yếu tố đáng tin cậy." Toán học.Note Acad.Sci. Liên Xô 15, 558--562. Vì vậy, trong một số trường hợp, bạn có thể làm tốt hơn với tính không đồng nhất.
Ryan Williams

Câu trả lời:


10

Tôi cho rằng không chắc rằng một mẹo như vậy rất dễ tìm và / hoặc sẽ mang lại cho bạn những lợi ích đáng kể, vì nó sẽ cung cấp các thuật toán thỏa mãn không cần thiết. Đây là cách thực hiện:

CNx0,,xN1CO~(N|C|)CC|C|+O~(Nn)0i10N1iC(xi)0i10N1ixiC

O~(|C|2ϵ+(N|C|)1ϵ/2+N2ϵ)ϵ>0CCC2n/2|C|n/2CC2n/2CCO~(2(n/2)(2ϵ)|C|2ϵ)=O~(2n(1ϵ/2)poly(|C|))

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.