Biarkan p ( x 1 , ... , x n )
Mempertimbangkan masalah berikut: diberikan sebuah sirkuit aritmatika C ( x 1 , ... , x n )
Pertanyaan: Dengan asumsi bidang-aritmatika dapat dilakukan dalam satuan waktu, apakah ada algoritma waktu polinomial untuk ini? Ditambahkan nanti: Saya juga akan tertarik pada kasus khusus di mana C
cc.complexity-theory
polynomials
Slimton
sumber
sumber
Jawaban:
Jika bidang F berukuran minimal 2 n , saya pikir masalah ini sulit. Lebih khusus, saya berpikir bahwa jika di atas dapat diselesaikan secara efisien untuk F sebesar ini, maka CNF-SAT memiliki algoritma acak yang efisien. Katakanlah kita diberi formula CNF φ . Satu dapat dengan mudah datang dengan sebuah sirkuit aritmatika C yang menghitung sebuah `` arithmetization '' p dari φ , dimana polinomial p setuju dengan formula φ pada 0 - 1 input. Pertimbangkan multilinearization q dari p . Perhatikan bahwa qF 2n F φ C p φ p φ 0 1 q p q setuju dengan p dan karenanya φp φ pada { 0 , 1 } n .{0,1}n
Saya mengklaim bahwa q adalah non-nol iff φ memuaskan. Jelas, jika q = 0 , maka φ tidak dapat dipenuhi. Untuk kebalikannya, orang dapat menunjukkan bahwa setiap polinomial multilinear non-nol tidak dapat menghilang pada semua { 0 , 1 } n . Ini menyiratkan bahwa q non-nol (dan karenanya φ yang sesuai ) tidak hilang pada beberapa input di { 0 , 1 } n .q φ q=0 φ {0,1}n q φ {0,1}n
Oleh karena itu, memeriksa kepuasan φ sama dengan memeriksa apakah q tidak nol. Katakanlah, sekarang, bahwa kita bisa mengevaluasi q atas lapangan besar F . Kemudian, dengan menggunakan Schwartz-Zippel Lemma, kita bisa menguji identitas q menggunakan algoritma acak yang efisien dan memeriksa apakah itu nol polinomial (ukuran F digunakan untuk batas atas kesalahan dalam Schwartz-Zippel Lemma).φ q q F q F
sumber
Asumsikan ada algoritma polytime yang memberikan C ( → x ) ∈ F ( → x ) dan → a yang menghitung hasil multi-linierisasi C pada → a . (wlog Saya akan berasumsi bahwa output → b akan menjadi vektor p- bit angka biner b i adalah k iff the b i , k adalah satu.)C(x⃗ )∈F(x⃗ ) a⃗ C a⃗ b⃗ p bi k bi,k
Karena P ⊆ P / p o l y , ada sirkuit bsi polias yang memberikan pengkodean sirkuit aritmatika dan nilai-nilai untuk variabel menghitung multi-linierisasi dari rangkaian aritmatika pada input. Membiarkan memanggil sirkuit ini M .P⊆P/poly M
Biarkan C menjadi sirkuit aritmatika yang arbitrer. Perbaiki variabel dari rangkaian boolean M yang menggambarkan rangkaian aritmatika, jadi kami memiliki sirkuit boolean yang menghitung multi-linierisasi C pada input yang diberikan.C M C
Kita bisa mengubah sirkuit ini menjadi sirkuit aritmatika lebih F p dengan mencatat bahwa x p - 1 adalah 1 untuk semua nilai tapi 0 jadi pertama menaikkan semua masukan untuk kekuatan p - 1 . Ganti setiap gerbang f ∧ g dengan perkalian f . g , masing-masing f ∨ g gerbang oleh f + g - f . g dan masing-masing ¬ f gerbang oleh 1 - f .Fp xp−1 1 0 p−1 f∧g f.g f∨g f+g−f.g ¬f 1−f
By the assumption we made above about the format of the output, we can turn the output from binary to values over FpFp . Take the output for bibi and combine them to get ∑0≤k≤p−1kbi,k∑0≤k≤p−1kbi,k .
Kami juga dapat mengkonversi input yang diberikan sebagai nilai lebih F p ke bentuk biner karena ada polinomial melewati sejumlah terbatas poin. Misalnya jika kita bekerja dalam mod 3 , pertimbangkan polinomial 2 x ( x + 1 ) dan 2 x ( x + 2 ) yang memberikan bit pertama dan kedua dari input x ∈ F 3 .Fp mod3 2x(x+1) 2x(x+2) x∈F3
Menggabungkan ini kita memiliki sirkuit aritmatika lebih F p komputasi multi-linierisasi dari C dengan ukuran polynomail dalam ukuran C .Fp C C
sumber