Für was ist c Division durch c in AC0?


11

Angenommen, unsere Eingabe ist ein binäres und wir müssen ausgeben , wobei eine konstante ganze Zahl ist. Dies ist nur eine Verschiebung, wenn eine Zweierpotenz ist, aber was ist mit anderen Zahlen? Können wir es mit einem Stromkreis mit konstanter Tiefe für jedes ? Was ist mit ?x / c c c c c = 3xx/ccccc=3

ps. Ich weiß, dass das Berechnen von schwierig ist, aber dies scheint nichts damit zu tun zu haben.xmodc

Antworten:


16

Addition und Subtraktion von Binärzahlen erfolgen in AC0 .

Für jede konstante Zahl c , xmodc ist AC0 reduzierbar auf Division durch c ( x/c ):

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

Es ist bekannt, dass xmodc für AC0 für jedes c das keine Potenz von 2 ist, schwierig ist 2. Daher ist x/c für AC0 für jedes c das keine Potenz von 2 ist, schwierig 2.

Wie von Emil in den Kommentaren bemerkt, gibt es eine einfache Reduktion für ungerade Primzahlen von ( mit ) auf mit Binäreingang: Wir verwenden nur Eingangsbits, die Vielfache von und verwenden FLT ( ). cMODciximodcxi{0,1}xmodcp12(p1)imodp=1


Das gleiche Argument gilt für jedes das keine Potenz von 2 ist.c
Emil Jeřábek 3.0

4
Dass für andere nicht AC ^ 0 ist, lässt sich leicht zeigen: Wir können beispielsweise annehmen, dass eine ungerade Primzahl ist, und dann können Sie MOD_p mit jedem -ten Bit darauf reduzieren . Oder Sie können die Barrington-Thérien-Klassifikation anwenden: Es ist eine reguläre Sprache, und ihr syntaktisches Monoid ist eine nicht triviale Gruppe. xmodccc=p(p1)
Emil Jeřábek 3.0

@Emil Jerabek: Danke, das war genau die Hilfe, die ich brauchte :)
Daniello
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.