Ini mirip dengan SAT, kecuali bahwa kita tahu penugasan masing-masing variabel, tetapi tidak tahu penugasan operator boolean apa pun. Dalam hal itu, apakah menemukan penugasan masing-masing operator sehingga ekspresi mengevaluasi nilai boolean yang diberikan masalah NPC?
Sebenarnya, saya bertanya-tanya apakah menemukan penugasan operator aritmatika untuk memenuhi ekspresi aritmatika integer (misalnya, = 10) apakah NP selesai?1
cc.complexity-theory
np-hardness
DSounders
sumber
sumber
Jawaban:
Dengan penambahan dan pengurangan, saya pikir masalah Partisi , yang NP-hard, mengurangi masalah kedua Anda.
Diberikan set kita menciptakan masalahS = { s 1 , s 2 , ... , s n }S={s1,s2,…,sn}
s 1s1 o p 1 op1 s 2s2 o p 2 op2 s 3s3 o p 3op3 … o p n - 1…opn−1 s n = 0sn=0 .
Jika ada solusi, kami membuat dua set:
S 1 = { s 1 } ∪ { s i | o p i - 1 = + }S1={s1}∪{si|opi−1=+}
S 2 = { s i | o p i - 1 = - }S2={si|opi−1=−}
Dua set ini harus memiliki jumlah yang sama dengan pengaturan masalah asli kita, sehingga masalah partisi terpecahkan. Ini menunjukkan bahwa tidak hanya menghasilkan solusi aktual untuk masalah ini dengan keras, pada kenyataannya NP sulit untuk menentukan apakah ada solusi (setidaknya untuk penambahan dan pengurangan).
Untuk serangkaian operasi yang tidak memungkinkan pembuatan bilangan bulat negatif, katakanlah perkalian dan penambahan, itu tidak begitu jelas. Juga, ini hanya menunjukkan bahwa masalahnya adalah NP-hard lemah; mungkin ada pengurangan yang memberikan hasil lebih kuat dari ini.
sumber
Jawaban singkat. Versi operator SAT dapat dipecahkan secara efisien - setidaknya, jika kita mengasumsikan sirkuit sewenang-wenang dari gerbang dua-input tanpa kipas-keluar, atas setiap pilihan gate-set yang diinginkan.
Jawaban panjang. Saya menganggap bentuk masalah boolean berikut:
Secara khusus, kami tidak memaksakan struktur tertentu pada sirkuit (selain dari pohon biner), jangan biarkan kipas angin keluar (sehingga setiap bit digunakan hanya sekali), dan gerbangnya mungkin asimetris. Dengan hanya mengizinkan gerbang dua-bit, saya mengecualikan gerbang NOT (tetapi yang dapat disimulasikan dengan memiliki beberapa gerbang yang terkait satu sama lain dengan negasi, seperti AND / NAND ; dan saya juga mengecualikan gerbang yang hanya menghasilkan konstanta tanpa input) , sehingga jumlah gerbang dalam rangkaian pada kenyataannya akan selalu menjadi untuk input bit. Demi singkatnya, saya akan merujuk pada 2-TREE-OPSAT di bawah ini hanya sebagai OPSATC x n - 1 nC x n−1 n ; meskipun analisis masalah dapat menjadi jauh lebih sulit untuk sirkuit memungkinkan sewenang-wenang k Input gerbang ( k-POHON-OPSAT ) atau memungkinkan fan-out (yang kita sebut k-fanout-OPSAT ).
[ Diedit untuk menambahkan : kita dapat dengan mudah mengadaptasi ini untuk mempertimbangkan masalah yang lebih umum dari revisi pertanyaan Anda saat ini, di mana kami berupaya memetakan ke nilai target , dengan menukar peran dan dalam analisis di bawah ini; ini memiliki efek mempertukarkan peran AND dan OR , NAND dan NOR , dll. ] x ∈ { 0 , 1 } ∗ b ∈ { 0 , 1 } 0 1x∈{0,1}∗ b∈{0,1} 0 1
Untuk pilihan tetap , masalah memilih pohon yang cocok dengan gerbang yang sesuai tidak berbeda dengan disjungsi logis: menggunakan persamaan seperti kita dapat melakukan reduksi antara koleksi yang terkait dengan set gerbang yang lebih rumit ke set gerbang yang sederhana (dan kuat); a dapat berbicara tentang satu set gerbang yang mampu meniru gerbang lain yang bukan milik set, dengan bijak memilih beberapa elemen yang memiliki efek yang sama (ketika disajikan dengan input tertentu) sebagai gate . Secara khusus, kombinasi gerbang tertentu (seperti ) dapat mensimulasikan fungsi konstan yang menghasilkanx ∈ { 0 , 1 } n ATAU ( x , y )x∈{0,1}n ≡( DAN(x,y)∨PARITY ( x , y ) ) G G ∉ G { ATAU , NAND } 1
Kami melanjutkan dengan mempertimbangkan set gerbang termasuk berbagai jenis gerbang , kemudian mengecualikan gerbang tersebut dari kasus analisis selanjutnya, untuk menunjukkan bahwa set gerbang yang melibatkan salah satu gerbang mengarah pada masalah yang dapat ditelusuri. Kami akan melanjutkan dalam urutan jumlah string dua-bit yang memenuhi gerbang yang dimaksud, mulai dari gerbang konstan ke gerbang konstan .G 1 0G 1 0
Untuk setiap gerbang yang ditetapkan yang berisi gerbang konstan , kita dapat dengan mudah membangun sirkuit menggunakan gerbang itu saja, dalam hal ini menerima .G G ( x , y ) = 1 C C xG G(x,y)=1 C C x
ATAU dan NAND. Untuk setiap gerbang yang ditetapkan yang berisi : jika semua gerbang lain memenuhi , maka tidak ada keuntungan untuk memilih gerbang lain selain dalam membangun sirkuit . Sirkuit hanya gerbang menerima string apa pun kecuali . Kalau tidak, ada gerbang sehingga bersifat tautologis. Jadi setiap instance OPSAT dengan mudah; dan pernyataan serupa berlaku untuk .G ATAU G ∈ G G ( x , y )G OR G∈G ⟹ATAU ( x , y ) ATAU C ATAU x ∈ 0 ∗ G ∈ G { G , OR } ATAU ∈ G NAND ∈ GG(x,y)⟹OR(x,y) OR C OR x∈0∗ G∈G {G,OR} OR∈G NAND∈G
Gerbang yang menyerupai implikasi. Pertimbangkan gerbang , yang hanya menghasilkan nol jika . Untuk yang berikut, analisis serupa akan berlaku untuk gerbang . Pertimbangkan string apa pun . Jika berakhir pada , dekomposisi ke dalam substring formulir ; pada setiap , kami menerapkan dari kanan ke kiri secara rekursif , yang menghasilkan output untuk setiap . (Untuk substring dengan panjang 1, kami menggunakan sirkuit sepele, yaitu membiarkan input itu sendiri.) Demikian pula, jikaG ( x , y ) = ¬ x ∨ y ( x , y ) = ( 1 , 0 ) G ′ ( x , y ) = x ∨ ¬ y x ∈ { 0 , 1 } n x 0 x w j = 1 ∗ 0 w j G 0 w j x 1 x wG(x,y)=¬x∨y (x,y)=(1,0) G′(x,y)=x∨¬y
x∈{0,1}n x 0 x wj=1∗0 wj G 0 wj x berakhir pada , mendekomposisi ke dalam substring dari , dan secara rekursif menerapkan dari kiri ke kanan pada setiap , yang menghasilkan output untuk setiap . Jadi kita dapat mengurangi masalah untuk membangun sirkuit yang dipenuhi baik dengan atau , di mana adalah jumlah substring atau . Untuk , kami dapat menerima menggunakan gerbang dengan menerapkan secara rekursif dari kiri ke kanan. Ini hanya meninggalkan kasusnya1 x j = 0 ∗ 1 G w j 1 w j 0 m 1 m m 1 ∗ 0 0 ∗ 1 m ⩾ 2 G G m = 1 x ∈ 1 ∗ 0 x = 1 ∗ 0 G 1 ∗ 0 0 G H ∈ G H ( 1 , 0 ) = 1 { G , Hwj=0∗1 G wj 1 wj 0m 1m m 1∗0 0∗1 m⩾2 G G m=1 , untuk kasus yang bermasalah adalah input . Untuk , sirkuit apa pun yang hanya terdiri dari gerbang hanya akan menghasilkan string lebih pendek dari bentuk , yang pada akhirnya menghasilkan string bit-tunggal : sehingga tidak ada sirkuit gerbang dapat dipenuhi oleh input ini. Jika ada juga gerbang yang , maka bersifat tautologis; atau, jika ada gerbang yang , kita dapat mengurangi string dari bentukx∈1∗0
x=1∗0 G 1∗0 0 G H∈G H(1,0)=1 } H ∈ G H ( 1 , 1 ) = 0 11 ∗ 0 ( 1 ∗ 0 ) ∗ H x x ∈ 1 ∗ 0 G{G,H} H∈G H(1,1)=0 11∗0 ke string bentuk , dengan menerapkan ke dua bit pertama . Kalau tidak, tidak ada rangkaian yang dapat dibangun yang menerima .
Jadi, untuk setiap gerbang-set yang berisi gerbang mirip-implikasi, OPSAT mudah.(1∗0)∗ H x x∈1∗0
G
Negasi proyeksi. Pertimbangkan gerbang dan . Kami menganggap , analisis dengan serupa. Sendiri, dapat menerima string apa pun dalam untuk dengan mengurangi bit terakhir menjadi satu bit, dan kemudian menerapkan ; dan juga dapat menerima untuk dengan mengurangi bit terakhir menjadi satu bit, dan kemudian menerapkan rangkaian¬ π 1 ( x , y ) = ¬ x ¬ π 2 ( x , y ) = ¬ y ¬ π 1 ¬¬π1(x,y)=¬x ¬π2(x,y)=¬y ¬π1 π 2 ¬ π 1 0 ( 0 | 1 ) n - 1 n ⩾ 2 n - 1 ¬ π 1 1 ( 0 | 1 ) n - 1 n ⩾ 3¬π2 ¬π1 0(0|1)n−1 n⩾2 n−1 ¬π1 1(0|1)n−1 n⩾3 n - 2 ¬ π 1 ( ¬ π 1 ( x 1 , x 2 ) , x 3 ) ¬ π 1 10 11n−2 ¬π1(¬π1(x1,x2),x3) . Satu-satunya input yang tidak dapat diterima sirkuit adalah atau ; menentukan apakah ada gerbang tambahan yang menerimanya sepele. Dengan demikian, OPSAT mudah untuk penolakan proyeksi.¬π1 10 11
PARITY dan EQUALITY . Pertimbangkan gerbang . Gerbang mengatur jelas hanya dapat dipenuhi dengan string dengan angka ganjil 1s; kami mempertimbangkan manfaat menambahkan gerbang lain.PARITY ( x , y ) = ( x ∨ ¬ y ) ∧ ( ¬ x ∨ y ) G = { PARITY } x ∈ { 0 , 1 } nPARITY(x,y)=(x∨¬y)∧(¬x∨y) G={PARITY} x∈{0,1}n
Dengan demikian, OPSAT mudah untuk semua mengandung . Analisis serupa berlaku untuk gerbang seperti untuk gerbang : karena , sirkuit dari gates pada dasarnya menghitung paritas jumlah dalam input. Kami kemudian dapat mengurangi analisis untuk dengan dengan menukar dan .G PARITY EQUAL PARITY EQUAL (G PARITY
EQUAL PARITY x , y ) = ¬ PARITY ( x , y ) = ¬ PARITY ( ¬ x , ¬ y ) EQUAL 0 PARQ EQUAL 0 1EQUAL(x,y)=¬PARITY(x,y)=¬PARITY(¬x,¬y) EQUAL 0 EQUAL PARITY 0 1
Gerbang proyeksi. Gerbang dan , yang diambil sendiri, hanya dapat membangun sirkuit yang menerima string yang dimulai atau diakhiri dengan , masing-masing. Pertimbangkan efek menambah gerbang dengan gerbang lain (analisis serupa berlaku untuk ):π 1 ( x , y ) = x π 2 ( x , y ) = y 1 π 1 π 2π1(x,y)=x π2(x,y)=y 1 π1 π2
Dengan demikian, untuk gerbang lain yang dapat kami (atau ) dengan, kami memperoleh set tautologous, tidak memperoleh daya penerimaan tambahan hanya atas (atau ), atau dapat mengurangi ke kasus OPSAT yang lebih mudah sebelumnya. . Maka setiap instance OPSAT dengan atau mudah.π 1 π 2 π 1 π 2 π 1 ∈ G π 2 ∈ Gπ1 π2 π1 π2 π1∈G π2∈G
Gerbang fungsi delta. Pertimbangkan gerbang dua-bit yang hanya ada satu input yang memuaskan mereka: , , , dan . Sirkuit dibuat hanya dengan gerbang hanya dapat menerima string : melengkapi mereka dengan gerbang delta-fungsi lain memungkinkan mereka untuk mensimulasikan baik , , atau , yang kasus diselesaikan; komentar serupa berlaku untuk . Selain itu, set gerbang dapat digunakan untuk juga mensimulasikanDAN NOR G 10 ( x , y ) = x ∧ ¬ y G 01 ( x , y ) = ¬ x ∧ y DAN 1 ∗ SAMA π 1 π 2 NOR { G G 10 1 ( 0 | 1 ) n - 1 11 n - 2 G 10 ( x 1 , G 10AND NOR G10(x,y)=x∧¬y G01(x,y)=¬x∧y AND 01 , G 10 } PARITY G 10 G 01 Z(x,y)=0 G 10 G 01gerbang. Dengan demikian kita dapat fokus pada gerbang atau , mungkin ditambah dengan gerbang . Kami fokus pada , dengan kasus menjadi serupa. Sirkuit yang terbuat dari sendiri dapat dibangun untuk menerima , kecuali untuk string , dengan menerapkan sirkuit arbitrer ke bit terakhir dan kemudian menerapkan sirkuit . Jelas, string tidak dapat diterima oleh atau oleh ; dan kami dapat menunjukkan dengan induksi bahwa
( x 2 , x 3 ) ) 11 G 10 Z G 10 1Z G 10 x∈1(0 | 10 | 11)(0 | 1 ) ∗sirkuit yang menerima string harus memiliki hasil menengah dari gerbang di cabang paling kiri semua menghasilkan , hingga input paling kiri itu sendiri. Tidak ada manfaat tambahan yang diperoleh dengan menambahkan gerbangKarenanya, sirkuit hanya dapat menerima .
Akhirnya, sirkuit yang hanya terdiri dari gerbang tidak menerima input.Z
Karena setiap gerbang menimbulkan kelas didefinisikan dengan baik dan umumnya cukup besar input yang menerima, dengan gerbang tambahan cenderung meremehkan masalah, kita menemukan bahwa 2-POHON-OPSAT dalam P .
sumber