Oceń obwód logiczny na partii podobnych danych wejściowych

10

Załóżmy, że mam obwód boolowski C która oblicza jakąś funkcję f:{0,1}n{0,1}. Załóżmy, że obwód składa się z AND, OR i NOT bramek z wachlarzem i wachlowaniem co najwyżej 2.

Pozwolić x{0,1}nbyć danym wkładem. DanyC i x, Chcę ocenić C na n dane wejściowe, które różnią się od x w pozycji pojedynczego bitu, tj. do obliczenia n wartości C(x1),C(x2),,C(xn) gdzie xi jest taki sam jak x oprócz tego, że to ibit jest odwrócony.

Czy istnieje sposób, aby to zrobić, który jest bardziej wydajny niż niezależna ocena C n razy na n różne dane wejściowe?

Założyć C zawiera mbramy Następnie samodzielnie oceniaC na wszystkich n wejścia zajmie O(mn)czas. Czy istnieje sposób na obliczenieC(x1),C(x2),,C(xn) w o(mn) czas?


Kontekst opcjonalny: Gdybyśmy mieli obwód arytmetyczny (którego bramkami jest mnożenie, dodawanie i negowanie) ponadR, wówczas można obliczyć n pochodne kierunkowe fxi(x) w O(m)czas. Zasadniczo moglibyśmy użyć standardowych metod obliczania gradientu (wsteczna propagacja / reguła łańcuchowa) wO(m)czas. Działa to, ponieważ odpowiednia funkcja jest ciągła i można ją rozróżnić. Zastanawiam się, czy coś podobnego można zrobić dla obwodów boolowskich. Obwody boolowskie nie są ciągłe i różnicowalne, więc nie możesz zrobić tej samej sztuczki, ale może jest jakaś inna sprytna technika, której można użyć? Może jakiś trik Fouriera lub coś takiego?

(Pytanie wariantowe: jeśli mamy bramki typu boolean z nieograniczonym wachlarzem i ograniczonym wachlarzem, czy można zrobić asymptotycznie lepiej niż oceniać C n czasy?)

DW
źródło
1
Ponieważ Andrew dość dobrze odpowiedział na twoje pytanie, zostawię komentarz. Gdybym jest duży (jak O(2n/n)) i oceniasz C na wielu wejściach (do 2o(n/logn)), to jest C tylko wielkości O(2n/n) który może ocenić C na każdym mwejścia. (W literaturze problem nazywany jest również „masową produkcją”). Zobacz Uhlig, „O syntezie schematów samokorekty z elementów funkcjonalnych z niewielką liczbą wiarygodnych elementów”. Math.Notes Acad.Sci. ZSRR 15, 558--562. Tak więc w niektórych przypadkach możesz zrobić lepiej z nierównomiernością.
Ryan Williams,

Odpowiedzi:

10

Uważam, że jest mało prawdopodobne, że taka sztuczka jest łatwa do znalezienia i / lub da ci znaczące korzyści, ponieważ dałaby niełatwe algorytmy satysfakcji. Oto jak:

Przede wszystkim, choć pozornie łatwiejszy, twój problem może faktycznie rozwiązać bardziej ogólny problem, biorąc pod uwagę obwód C i N wejścia x0,,xN1, oceń C przy wszystkich wejściach szybciej niż O~(N|C|)czas. Powodem jest to, że możemy dostosowaćC w obwód C wielkościowy |C|+O~(Nn) który na wejściu 0i10N1i, wyjścia C(xi). Zasadniczo tworzymy małą tabelę odnośników, która wysyła0i10N1i do xii podłącz go C.

Nietrywialne algorytmy oceny partii obwodów boolowskich mogą być następnie wykorzystane do stworzenia szybkich algorytmów satysfakcji. Oto przykład w prostym przypadku, w którym przypuszczamy, że mamy algorytm dokonujący oceny na czasO~(|C|2ϵ+(N|C|)1ϵ/2+N2ϵ) dla dowolnej stałej ϵ>0. Na wejściu obwoduC, możemy zadecydować o satysfakcji poprzez rozszerzenie C w obwód C wielkościowy 2n/2|C| który jest po prostu OR dla wszystkich możliwych wyborów pierwszego n/2 dane wejściowe do C(pozostawiając inne wejścia wolne). Następnie oceniamy partięC na wszystkich jego 2n/2wejścia. W rezultacie znajdujemy satysfakcjonujące zadanieC iff Cjest zadowalający. Czas działania wynosiO~(2(n/2)(2ϵ)|C|2ϵ)=O~(2n(1ϵ/2)poly(|C|)).

Andrew Morgan
źródło