Per quale c è divisione per c in AC0?


11

Supponiamo che il nostro input sia un binario e che dobbiamo generare , dove è un numero intero costante. Questo è solo uno spostamento se è una potenza di due, ma per quanto riguarda gli altri numeri? Possiamo farlo con un circuito a profondità costante per ogni ? Che dire di ?x / c c c c c = 3xx/ccccc=3

ps. So che calcolare è difficile, ma questo non sembra correlato.xmodc

Risposte:


16

L'aggiunta e la sottrazione di numeri binari sono in AC0 .

Per qualsiasi numero costante c , xmodc è AC0 riducibile alla divisione per c ( x/c ):

xmodc=x(x/c++x/cc times)

È noto che xmodc è difficile per AC0 per qualsiasi c che non sia una potenza di 2 . Quindi x/c è difficile per AC0 per qualsiasi c che non sia una potenza di 2 .

Come notato da Emil nei commenti, c'è una facile riduzione per dispari prime da (ovvero, con ) a con input binario: usiamo solo bit di input che sono multipli di e utilizziamo FLT ( ). M O D c i x i mod c x i{ 0 , 1 } x mod c p - 1 2 ( p - 1 ) i mod p = 1cMODciximodcxi{0,1}xmodcp12(p1)imodp=1


Lo stesso argomento si applica a qualsiasi che non sia un potere di 2.c
Emil Jeřábek

4
Che non sia AC ^ 0 per altri è facile da mostrare: per esempio, possiamo supporre che sia un numero primo dispari, e quindi puoi ridurre MOD_p ad esso usando ogni th bit . Oppure puoi applicare la classificazione Barrington-Thérien: è un linguaggio regolare e il suo monoide sintattico è un gruppo non banale. c cxmodcc( p - 1 )c=p(p1)
Emil Jeřábek,

@Emil Jerabek: Grazie, questo è stato esattamente l'aiuto di cui avevo bisogno :)
daniello,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.