Untuk apa c dibagi dengan c di AC0?


11

Misalkan input kita adalah biner dan kita harus menampilkan , di mana adalah bilangan bulat konstan. Ini hanya pergeseran jika adalah kekuatan dua, tetapi bagaimana dengan angka lainnya? Bisakah kita melakukannya dengan sirkuit kedalaman konstan untuk setiap ? Bagaimana dengan ?⌊ x / c ⌋ c c c c = 3x⌊x/c⌋cccc=3

ps. Saya tahu bahwa komputasi sulit, tetapi ini tampaknya tidak berhubungan.xmodc

Jawaban:


16

Penambahan dan pengurangan angka biner ada di AC0 .

Untuk bilangan konstan c , xmodc adalah AC0 dapat direduksi menjadi pembagian dengan c ( ⌊x/c⌋ ):

xmodc=x−(⌊x/c⌋+⋯+⌊x/c⌋⏞c times)

Diketahui bahwa xmodc sulit untuk AC0 untuk setiap c yang bukan kekuatan 2 . Jadi ⌊x/c⌋ sulit untuk AC0 untuk setiap c yang bukan kekuatan 2 .

Sebagaimana dicatat oleh Emil di komentar ada pengurangan mudah bagi aneh perdana dari (yaitu, dengan ) untuk dengan input biner: kami hanya menggunakan bit input yang merupakan kelipatan dan menggunakan 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 = 1cMODc∑iximodcxi∈{0,1}xmodcp−12(p−1)imodp=1


Argumen yang sama berlaku untuk mana pun yang bukan merupakan kekuatan 2.c
— Emil Jebekábek

4
Itu bukan AC ^ 0 untuk lainnya mudah untuk ditampilkan: misalnya, kita dapat menganggap adalah prime yang aneh, dan kemudian Anda dapat mengurangi MOD_p untuk itu dengan menggunakan setiap bit th . Atau Anda dapat menerapkan klasifikasi Barrington-Thérien: ini adalah bahasa biasa, dan monoid sintaksisnya adalah grup nontrivial. c c = p ( p - 1 )xmodccc=p(p−1)
— Emil Jeřábek

@Emil Jerabek: Terima kasih, ini persis bantuan yang saya butuhkan :)
— daniello
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.