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 ∂f∂xi(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?)


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/log⁡n)), 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,…,xN−1, 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 0i10N−1−i, wyjścia C(xi). Zasadniczo tworzymy małą tabelę odnośników, która wysyła0i10N−1−i 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|)).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.