Po co c jest dzieleniem przez cw AC0?


11

Załóżmy, że nasze dane wejściowe są binarne i musimy wyprowadzić ⌊ x / c ⌋ , gdzie c jest jakąś stałą liczbą całkowitą. To tylko zmiana, jeśli c jest potęgą dwóch, ale co z innymi liczbami? Czy możemy to zrobić z obwodem o stałej głębokości dla każdego c ? Co z c = 3 ?x⌊x/c⌋cccc=3

ps. Wiem, że obliczenie jest trudne, ale wydaje się to niezwiązane.xmodc

Odpowiedzi:


16

Dodawanie i odejmowanie liczb binarnych jest w AC0 .

Dla dowolnej stałej liczby , x mod c oznacza A C 0 redukowalne do dzielenia przez c ( ⌊ x / c ⌋ ): x mod c = x - ( c  razy ⏞ ⌊ x / c ⌋ + ⋯ + ⌊ x / c ⌋ )cxmoddoZAdo0do⌊x/do⌋

xmoddo=x-(⌊x/do⌋+⋯+⌊x/do⌋⏞do czasy)

Wiadomo, że jest trudne dla A C 0 dla dowolnego c, który nie jest potęgą 2 . Zatem ⌊ x / c ⌋ jest trudne dla A C 0 dla dowolnego c, który nie jest potęgą 2 .xmoddoZAdo0do2)⌊x/do⌋ZAdo0do2)

Jak zauważył Emil uwagi jest łatwo redukcji dla nieparzystej głównego z M O D C (czyli Σ I x I mod C z x i ∈ { 0 , 1 } ) do x mod C z wejścia binarne: my używaj tylko bitów wejściowych, które są wielokrotnościami p - 1 i używaj FLT ( 2 ( p - 1 ) i mod p = 1 ). doM.Oredo∑jaxjamoddoxja∈{0,1}xmoddop-12)(p-1)jamodp=1


Ten sam argument dotyczy każdego który nie jest potęgą 2.do
— Emil Jeřábek

4
To, że nie jest AC ^ 0 dla innych c, jest łatwe do wykazania: na przykład możemy założyć, że c = p jest nieparzystą liczbą pierwszą, a następnie można zredukować MOD_p do niego, używając każdego ( p - 1 ) bitu. Możesz też zastosować klasyfikację Barringtona-Thériena: jest to zwykły język, a jego składniowy monoid jest nietrywialną grupą. xmoddododo=p(p-1)
— Emil Jeřábek,

@Emil Jerabek: Dzięki, to była dokładnie taka pomoc, jakiej potrzebowałem :)
— daniello
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.