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 ?xx/ccccc=3

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

domotorp
źródło

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 )cxmoddoZAdo0dox/do

xmoddo=x-(x/do++x/dodo 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/doZAdo0do2)

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.Oredojaxjamoddoxja{0,1}xmoddop-12)(p-1)jamodp=1

Daniello
źródło
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