Saya memiliki "bukti" yang sangat sederhana ini untuk NP = CoNP dan saya pikir saya melakukan sesuatu yang salah di suatu tempat, tetapi saya tidak dapat menemukan apa yang salah. Adakah yang bisa membantu saya?
Biarkan A menjadi beberapa masalah dalam NP, dan biarkan M menjadi penentu untuk A. Biarkan B menjadi pelengkap, yaitu B ada dalam CoNP. Karena M adalah penentu, Anda dapat menggunakannya untuk memutuskan B juga (balik saja jawabannya). Bukankah itu berarti bahwa kita menyelesaikan masalah NP dan CoNP dengan M yang sama?
Untuk membuatnya lebih konkret.
Biarkan A menjadi beberapa masalah NP-complete, dan biarkan M menjadi penentu untuk A. Pertimbangkan masalah B di CoNP. Kami menganggap pelengkapnya bukan-B, yang ada dalam NP, dan kemudian mendapatkan pengurangan polinom menjadi A. Kemudian kami menjalankan penentu M kami dan membalikkan jawaban kami. Dengan demikian, kami mendapatkan penentu untuk B. Ini menyiratkan B juga dalam NP.
Bolehkah saya tahu apa yang salah dengan alasan saya?
Jawaban:
Ada dua kemungkinan bug dalam bukti ini:
Ketika Anda mengatakan "penentu" - yang Anda maksud adalah TM deterministik. Dalam hal ini, terjemahan terbaik (untuk pengetahuan kita) dari mesin NP ke mesin deterministik dapat menghasilkan mesin yang berjalan dalam waktu eksponensial, sehingga setelah melengkapi Anda akan memiliki penentuan untuk pelengkap dalam waktu eksponensial, membuktikan bahwa (atau, setelah beberapa optimasi, c o - N P ⊆ P S P A C E ).c o - NP⊆ EXP c o - NP⊆ P.SPA CE
Ketika Anda mengatakan "penentu" yang Anda maksud adalah TM yang tidak deterministik. Dalam hal ini, membalikkan jawaban tidak harus melengkapi bahasa. Memang, bahasa mesin membalik akan menjadi semua kata yang ada menjalankan menolak pada wM w
sumber
Berikut cara lain untuk melihat titik yang dibuat Shaull sehubungan dengan "penentu".
Masalahnya adalah dalam NP jika dan hanya jika ada algoritma sedemikian rupa sehinggaV:{0,1}n×{0,1}poly(n)→{0,1}
untuk setiap instance YA , ada sertifikat p ∈ { 0 , 1 } p o l y ( n ) sedemikian rupa sehingga V ( x , p ) = 1 ; danx∈{0,1}n p∈{0,1}poly(n) V(x,p)=1
untuk setiap instance NO , kami memiliki V ( x , p ) = 0 untuk semua p ∈ { 0 , 1 } p o l y ( n ) .x∈{0,1}n V(x,p)=0 p∈{0,1}poly(n)
Ini biasanya digambarkan sebagai kondisi kelengkapan dan kesehatan untuk algoritma verifikasi NP : kondisi "kelengkapan" mengatakan bahwa setiap instance YA memiliki sertifikat, dan kondisi "kesehatan" mengatakan bahwa algoritma tidak pernah dibodohi oleh instance NO. Sebaliknya untuk CoNP : ada algoritma verifikasi yang akan menerima setidaknya satu sertifikat untuk setiap instance NO, tetapi yang tidak pernah bisa dibodohi oleh instance YA.
Jika Anda ingin menunjukkan NP ⊆ coNP , Anda harus menunjukkan bahwa setiap masalah NP memiliki verifier tipe- coNP , yang dapat mensertifikasi NO instans alih-alih instance YA. Anda tidak dapat melakukan ini dengan mesin Turing nondeterministic: tidak ada cara yang kami tahu, misalnya, untuk secara efisien memetakan instance SAT satu sama lain, sedemikian rupa sehingga semua formula yang tidak memuaskan dipetakan ke yang memuaskan, dan sebaliknya. (Meniadakan output atau formula tidak cukup, misalnya: formula yang memuaskan tetapi bukan tautologi hanya akan dipetakan ke formula berbeda yang memuaskan tetapi bukan tautologi, ketika kita membutuhkan formula yang tidak memuaskan sebagai gantinya.) Tidak ada cara yang kita tahu untuk 'membodohi' mesin nondeterministik untuk mendeteksi hal-hal seperti semua jalannya menjadi jalur penolakan.
Anda mungkin bertanya: "Bukankah mesin Turing nondeterministis tahu hasil apa yang didapatnya?" Jawabannya adalah tidak , tidak. Bekerja dari mesin non-deterministik tidak memberikannya akses ke informasi apa pun tentang lebih dari satu jalur komputasi sekaligus: Anda mungkin berpikir itu bekerja di banyak jalur secara paralel, tetapi dalam setiap jalur itu hanya tahu tentang satu jalur itu. Jika Anda mencoba melengkapinya dengan kemampuan untuk "menyadari" apakah ada atau tidak ada solusi sebagai titik tertentu, Anda malah menggambarkan mesin dengan NP oracle , yang lebih (berpotensi!) Lebih kuat daripada mesin Turing sederhana nondeterministic.
Jadi, tidak, tidak ada mesin (deterministik atau lainnya) yang dapat dengan mudah 'memutuskan' bahwa masalah adalah contoh YA atau TIDAK secara efisien, kecuali jika kita menggunakan nubuat; tetapi bahkan dengan oracle seperti itu, kita berakhir dengan mesin yang (mungkin) lebih kuat daripada NP atau coNP , bukan yang menunjukkan bahwa mereka setara.
sumber
Alasan Anda menyiratkan bahwa RE = CORE, tetapi ini terbukti salah. Anda dapat mencoba mencari bukti tentang itu dan kemudian melihat di mana pengurangan Anda gagal.
sumber
Berikut adalah TL; versi DR; Saya juga memposting jawaban yang lebih panjang untuk pertanyaan serupa.
Asimetri definisi ini (terima jika ada jalur yang menerima; tolak saja jika semua jalur ditolak) yang membuat masalah NP vs ko-NP menjadi sulit.
sumber
Saya benar-benar setuju bahwa mesin nondeterministic Anda M dapat memutuskan apakah string input yang diberikan dalam B. Namun, "memutuskan" sedikit berbeda dari cara memutuskan jika input yang diberikan adalah dalam A. Dalam kasus terakhir, ia melakukannya dengan ( nondeterministically) menemukan negara penerima. Dalam kasus sebelumnya, ia melakukannya dengan gagal menemukan negara penerima. Mengapa perbedaan ini penting? Ayo lihat:
Saat bertanya M "Apakah string dalam bahasa A?"
M mencapai status penerimaan. Ini, Anda dapat membuktikan (lihat, misalnya, teorema buku Sipser 7.20) menyiratkan bahwa ada mesin deterministik yang memverifikasi string dalam A dalam waktu polinomial
Ketika menanyakan M "Apakah string dalam bahasa B?"
M mencapai status tolak pada semua cabang perhitungan nondeterministiknya. Jika Anda berpikir tentang cara kerja bukti verifikasi di atas, Anda akan melihat bahwa itu tidak dapat diselesaikan dalam situasi ini. Ini kira-kira karena verifier menggunakan jalur yang diambil M melalui ruang keadaannya sebagai "bukti". Dalam hal ini, tidak ada jalan seperti itu.
Kesimpulan:
Jika Anda menganggap keberadaan verifier deterministik waktu polinomial untuk suatu bahasa sebagai definisi bahasa NP (yang seharusnya), keberadaan M tidak membuktikan bahwa B ada dalam NP.
sumber