Mengapa beberapa game np-complete?

50

Saya membaca entri Wikipedia tentang " Daftar masalah NP-complete " dan menemukan bahwa game seperti super mario, pokemon, tetris atau permen crush saga np-complete. Bagaimana saya bisa membayangkan np-kelengkapan game? Jawaban tidak perlu terlalu tepat. Saya hanya ingin mendapatkan gambaran tentang apa artinya game bisa selesai-np.

racc44
sumber
4
Lihat pertanyaan referensi tentang kelengkapan NP. Saya pikir pertanyaan Anda terlalu luas untuk format pertukaran tumpukan.
Kyle Jones
5
Di minecraft, Anda dapat membuat .... baik komputer ... menjalankan .... minecraft?
djsmiley2k - Kontrak Karya
4
Membangun kalkulator menggunakan Magic: kartu Gathering. Sangat menyenangkan :-)
Mast
Ini bukan jawaban untuk pertanyaan yang Anda ajukan, tetapi sangat terkait erat sehingga penting untuk ditunjukkan: perancang permainan terkenal (dan pendukung metode formal dalam desain game) Raph Koster berteori bahwa kompleksitas komputasi dari gim-gim sangat penting untuk kelanjutan kenikmatan kami terhadapnya. Dia mendefinisikan "kesenangan" pada dasarnya sebagai respons terhadap pembelajaran untuk meningkatkan kinerja tugas yang sulit dalam lingkungan yang tidak mengancam, dan menunjukkan bahwa terus melakukan ini dalam sistem terbatas seperti permainan bergantung pada sistem yang memiliki pola perilaku yang ada. ..
Jules
... sulit atau tidak mungkin untuk sepenuhnya memprediksi cukup cepat untuk menggunakan prediksi itu, oleh karena itu memaksa kita untuk belajar dengan cara yang kurang langsung (biasanya menggunakan heuristik). Masalah dengan kompleksitas tinggi (dia sering menyarankan NP Hard) adalah cara yang paling dapat diandalkan untuk menghasilkan pola perilaku seperti itu, yang (jika dia benar) mungkin mengapa mereka muncul dalam begitu banyak permainan terkenal. Lihat slide konferensi ini dan buku ini untuk lebih lanjut.
Jules

Jawaban:

72

Ini hanya berarti bahwa Anda dapat membuat level atau teka-teki dalam game-game ini yang menyandikan masalah NP-Hard. Anda dapat mengambil masalah pewarnaan grafik, membuat level Super Mario Bros yang terkait, dan level itu dapat dikalahkan jika dan hanya jika grafik tersebut 3-berwarna.

Jika Anda ingin melihat cara spesifik masalah NP-Complete diterjemahkan ke dalam game, saya sarankan makalah "Game Nintendo Klasik adalah (Komputasi) Keras" . Ini ditulis dengan baik dan mudah diikuti.

Peringatan penting yang perlu diingat adalah bahwa kekerasan-NP membutuhkan generalisasi permainan dengan cara yang "jelas". Sebagai contoh, Tetris biasanya memiliki papan ukuran tetap tetapi bukti kekerasan membutuhkan permainan untuk memungkinkan papan besar sewenang-wenang. Contoh lain adalah musuh di luar layar di Super Mario Bros: buktinya adalah untuk varian permainan di mana musuh di luar layar terus bergerak seolah-olah mereka ada di layar, alih-alih berhenti ada dan diatur ulang ke posisi awal ketika Mario kembali .

Craig Gidney
sumber
4
Tidak layak dijawab sendiri, tetapi yang berikut memiliki kuliah video yang bagus: courses.csail.mit.edu/6.890/fall14/lectures/L05.html - Penjelasan yang jelas.
user340082710
4
Mungkin layak untuk menyertakan pernyataan teorema yang tepat dari makalah (sangat menarik!) Yang Anda tautkan, yang secara ringkas dan tepat menjelaskan secara tepat apa artinya mengatakan bahwa sebuah game adalah NP-hard: Adalah NP-sulit untuk memutuskan apakah tujuannya dapat dicapai sejak awal panggung di Super Mario Bros yang
digeneralisasi
mungkin tidak berhubungan, tetapi dengan game Pokemon terbaru (Sun and Moon), bukti dalam artikel tidak lagi benar (setidaknya, apa adanya), karena pelatih musuh tidak lagi bergerak ke arah pemain untuk melawan mereka.
simonalexander2005
2
Untuk menjadi NP-Complete, Anda berdua harus dapat menyandikan masalah NP-Hard, dan berada di NP. Klausa kedua hilang dari jawaban di atas.
Yakk
Meskipun jawaban ini secara teknis bagus, apakah itu benar-benar menerangi masalah kepada seseorang yang tidak memiliki pengetahuan yang cukup untuk mengajukan pertanyaan? Saya benar-benar berpikir itu tidak ...
MaxW
20

NP

{Pi}kPk

NPNP

quicksort
sumber
1

Berikut ini penjelasan melambaikan tangan yang sederhana:

O(nlog(n))

Permainan seperti itu NP-hard karena perilaku pemain sangat ekspresif. Sementara pada suatu titik tertentu seorang pemain mungkin hanya memiliki sejumlah tindakan yang terbatas, bahkan tetap, yang mungkin, itu cukup untuk menciptakan ruang perilaku atau strategi yang eksponensial di sepanjang permainan; dan sementara Anda mungkin dapat memberikan kondisi sederhana atau formula logis tentang validitas / manfaat / kebenaran tindakan pemain secara lokal, secara global Anda mendapatkan efek yang serupa dengan sirkuit kombinatorial besar, atau formula k-CNF.

Semoga ini masuk akal dan juga cukup berdering lonceng teori CS.

PS - Beberapa game jauh lebih kompleks (secara komputasi) dari itu. Sebagai contoh, boardgames Hex , Go dan dan Reversi adalah PSPACE-complete. Itu pada dasarnya karena formula yang Anda perlukan untuk strategi kemenangan adalah formula bilangan berulang-kali-bolak-balik: Ada gerakan oleh pemain 1, sehingga untuk setiap gerakan oleh pemain 2, ada gerakan oleh pemain 1 dll. Dll. sedemikian sehingga dengan semua gerakan yang telah dimainkan, beberapa gerakan pemain 2 tidak valid atau kami memiliki urutan pemain yang valid 1 telah menang. Dengan game NP, biasanya hanya perilaku / strategi / pilihan pergerakan satu pemain.

einpoklum - mengembalikan Monica
sumber
"Semoga ini masuk akal secara intuitif" - tidak bagi saya ...
Raphael
1

Untuk permainan pemain tunggal, Anda selalu dapat mengajukan pertanyaan "apakah ada strategi kemenangan untuk pemain", dan pertanyaan itu sering kali memiliki jawaban "YA" yang dapat diverifikasi dalam waktu polinomial, dan mungkin NP lengkap.

Untuk permainan dua pemain, jawabannya seringkali tidak dapat diverifikasi dalam waktu polinomial, karena untuk memverifikasi bahwa langkah untuk A adalah langkah yang menang, Anda harus menunjukkan bahwa untuk setiap respons B akan ada lagi langkah yang menang untuk A dan begitu seterusnya.

gnasher729
sumber
0

Yah, itu tentu dalam NP, karena solusi yang mungkin hanya sejumlah input terbatas (di setiap frame input Anda dapat memilih salah satu tombol k, kami mewakili setiap pilihan tombol untuk setiap frame dengan huruf) yang membawa Anda ke layar menang. Kami tahu bahwa permainan ini telah dikalahkan sebelumnya, jadi kami tahu, bahwa ada solusi. NTM memeriksa kasetnya dan menebak secara ajaib sertifikat panjang yang benar n. Kemudian itu mensimulasikan Super Mario dengan input dan memverifikasinya. Verifikasi dapat dilakukan dalam waktu polinomial (waktu linier sebenarnya, jika solusinya benar, dibutuhkan n frame yang tepat untuk menang).

Untuk menunjukkan kelengkapan NP, kita bisa mengurangi 3-SAT untuk itu dengan membangun pemeriksa 3-Sat dengan generator level (yang dibangun melalui eksekusi kode arbitrer https://www.youtube.com/watch?v=IOsvuEA2h4w ).

Jadi kami memiliki input CNF 3-SAT, yang kami periksa untuk pemformatan yang benar terlebih dahulu. Jika diformat dengan buruk, kami hanya menerjemahkannya menjadi satu input 'lompatan' (tidak mungkin mengalahkan Super Mario dalam satu frame dengan melakukan lompatan).

Kami menyebut panjang input 3-CNF n.

Jika diformat dengan benar, kami menerjemahkannya ke sejumlah input, yang membangun pemeriksa 3-CNF untuk kami (selalu kode panjang yang sama k), menerjemahkan 3-CNF menjadi String input, yang membangun spesifik 3- CNF di pemeriksa (di O (n)), dan periksa semua solusi yang mungkin dengan kekerasan. Itu menganggur dan tidak melakukan apa-apa, jika setelah melalui semua solusi, tidak ada yang ditemukan. Ini me-restart permainan dan menggunakan solusi yang dikenal untuk Super Mario untuk mengalahkan permainan (kode untuk melakukannya adalah memiliki panjang j). Transformasi kami dengan demikian dalam O (n), sehingga dalam waktu polinomial.

Jika CNF diformat dengan buruk, kami tidak menang (menurut definisi, input kami tidak menang, jika kami belum memenangkan satu frame setelah eksekusi). Jika CNF tidak memuaskan, kami tidak menang (Anda tidak bisa menang dengan berhenti untuk satu frame di generator level, kami memastikannya dalam kode kami). Jika CNF memuaskan, pemeriksa menemukan solusi memulai kembali dan memenangkan permainan. Jadi pengurangan polinomial dari 3-Sat ke Super Mario sudah lengkap dan kami telah membuktikan, bahwa Super Mario adalah NP-complete.

(Semoga saya tidak mengacaukannya di suatu tempat. Kami mengalami masalah penyimpanan, jika 3-CNF terlalu panjang, tetapi penyimpanan terbatas biasanya diabaikan dalam konteks ini, saya percaya)

David
sumber
"Ya, tentu saja dalam NP, karena solusi yang mungkin hanya sejumlah input yang terbatas" Menjadi dalam NP mengharuskan solusi secara polinomi terbatas pada ukuran input. Menjadi terbatas tidak cukup.
David Richerby
0

Saya menulis ulang jawaban ini untuk mencoba menjawab beberapa komentar pada versi sebelumnya.

Saya berasumsi bahwa Anda telah membaca definisi Wikipedia untuk kelengkapan NP yang benar-benar tidak fokus pada game. Saya akan mempermudah arti dari kelengkapan NP dan teori permainan sedikit saja dan menjelaskan esensi dari game NP-Lengkap.

Mari kita pertimbangkan permainan 2 pemain dengan gerakan alternatif, lebih terbatas ini pada dasarnya adalah tentang permainan Kombinatorial . Pada dasarnya gim yang Anda miliki memiliki sejumlah gerakan yang dapat dilakukan dan Anda harus memilih salah satunya. Anda ingin bermain "sempurna" yang berarti Anda tidak akan pernah melakukan gerakan "buruk". Jadi dari langkah yang diijinkan Anda ingin memilih yang terbaik. (Tentu saja lawanmu memiliki tujuan yang sama ...)

Perhatikan bahwa permainan sempurna tidak berarti Anda akan selalu menang. Aturan permainan bisa sedemikian rupa sehingga pemain pertama atau kedua harus menang. Juga beberapa permainan seperti Tic-Tac-Toe harus berakhir seri. Jadi apa yang dimaksud dengan "permainan sempurna" dalam diskusi ini adalah:
(1) Bahwa Anda tidak akan pernah berada dalam posisi menang dan kemudian kehilangan permainan karena Anda membuat gerakan "buruk"
(2) Anda tidak akan pernah melewatkan kesempatan untuk mendapatkan ke posisi menang jika kesempatan seperti itu muncul.

Mengingat kondisi permainan saat ini, Anda ingin dapat menggunakan "algoritma efisien" untuk menghitung langkah terbaik. Di sisi lain, mari kita perhatikan bahwa algoritma yang harus mencari melalui seluruh pohon permainan adalah "algoritma yang tidak efisien."

CBnT


  • TaBa+bBα1+cBα2+...+hB0
    α

  • TaBn
    n

Sekarang poin penting adalah bahwa tidak mungkin untuk memiliki algoritma yang efisien, waktu polinomial, yang bermain sempurna untuk permainan yang NP-lengkap. Untuk memainkan dengan sempurna masalah NP-complete harus, secara definisi, diselesaikan dengan algoritma yang tidak efisien yang berjalan dalam waktu nonpolinomial.

Perhatikan bahwa waktu berjalan adalah tentang jumlah intrinsik perhitungan, bukan waktu respons yang dirasakan oleh manusia. Untuk gim kecil seperti Tic-Tac-Toe, komputer dapat memainkan semua kemungkinan pergerakan di masa depan dan masih merespons dengan cepat seperti yang dirasakan oleh manusia.

Untuk Nim dimungkinkan untuk membuat algoritma waktu polinomial. Pada titik mana pun dalam game, algoritme dapat menghitung pemain mana yang memiliki langkah kemenangan dan apa yang seharusnya dilakukan.

Di sisi lain mari kita ambil permainan Qubic . (Anda mencoba membuat garis 4 dalam kisi 3D. Jadi pada dasarnya tic-tac-toe pada kisi 4x4x4.) Qubic adalah NP-lengkap sehingga tidak ada algoritma waktu polinomial untuk menghitung langkah sempurna berikutnya. Satu-satunya cara untuk mengetahui apakah Anda saat ini memiliki langkah kemenangan adalah mencoba semua gerakan yang mungkin dilakukan dari kedua pemain untuk memverifikasi bahwa langkah tertentu adalah pemenang, atau setidaknya bukan pecundang.

Sejujurnya seluruh pohon permainan untuk Qubic cukup kecil sehingga dapat disandikan ke dalam program komputer yang dapat bermain dengan sempurna. Apa yang dimaksud dengan pengkodean adalah bahwa seluruh pohon permainan telah dieksplorasi dan semua gerakan dilakukan sebelumnya. Jadi program pada dasarnya dapat melakukan panggilan basis data cepat menggunakan kondisi papan saat ini dan mendapatkan kembali langkah terbaik untuk kondisi papan tanpa harus melakukan pencarian pohon setiap kali gerakan harus dilakukan. Ini benar-benar "cheat" untuk keperluan kita di sini.

Sekarang mari kita bahas catur untuk membahas fungsi evaluasi mengabaikan beberapa fitur lain dari program bermain catur. Catur masih merupakan permainan yang belum terpecahkan . Tidak diketahui apakah pemain pertama atau kedua harus menang. Tidak mungkin diberikan posisi dewan dan diprediksi dengan pasti siapa yang akan menang. Bahkan catur memiliki pohon permainan yang sangat besar sehingga mustahil untuk mencari seluruh pohon permainan. Anda akan membutuhkan komputer yang tidak hanya 10 atau 100 kali lebih cepat tetapi miliaran miliar waktu lebih cepat daripada komputer saat ini. (Ada harapan bahwa komputasi kuantum dapat memotong simpul Gordian ini.)

Pikirkan fungsi evaluasi catur sebagai memberikan setiap kemungkinan langkah selanjutnya kemungkinan menjadi langkah terbaik. Apa yang dilakukan program catur adalah menggabungkan pandangan ke depan dengan fungsi evaluasi. Dengan demikian program melihat semua kemungkinan pergerakan di masa depan hingga mencapai titik di mana skor "baik" dapat diberikan ke posisi dewan. Komputer mengevaluasi semua jalur yang mungkin melalui pohon dengan cara ini dan kemudian memilih jalur dengan skor terbaik. Karena pencarian tidak pernah sampai ke akhir permainan untuk semua jalur yang dievaluasi, semua program catur akhirnya menggunakan fungsi evaluasi yang tidak sempurna. (Jika Anda mendekati akhir permainan maka komputer mungkin dapat melihat semua kemungkinan langkah di masa depan.) Itu berarti mungkin untuk mengalahkan program bahkan jika program memiliki posisi yang menang di beberapa titik.

MaxW
sumber
"Tidak mungkin / memiliki algoritma yang efisien, waktu polinomial, untuk game yang menyelesaikan NP. Masalah NP-complete harus, secara definisi, diselesaikan dengan algoritma yang tidak efisien yang berjalan dalam waktu nonpolinomial." - Itu tidak benar. Tidak diketahui apakah mungkin untuk menyelesaikan masalah NP-lengkap dalam waktu polinomial: sebagian besar peneliti sangat berharap bahwa jawabannya adalah "tidak", tapi kami tidak tahu pasti, dan itu tidak secara definisi. Saya mendorong Anda untuk menghabiskan lebih banyak waktu membaca tentang sebenarnya definisi NP-lengkap. Anda dapat menemukan beberapa sumber di situs ini, dan di Wikipedia.
DW
@ WD - Ya, saya sedikit membodohi jawabannya. Saya mengatakan itu di paragraf pertama. Jika Anda membaca sedikit di bawah Qubic saya juga menjelaskan bagaimana algoritma waktu polinomial dapat digunakan untuk permainan "kecil". Saya sedang mencoba memberikan jawaban OP akan mengerti tidak menulis buku tentang NP-kelengkapan dan teori permainan.
MaxW
@@ DW - Terpikir oleh saya bahwa saya secara implisit mengambil permainan yang sempurna. Saya secara eksplisit menambahkan kualifikasi itu.
MaxW