Apa kompleksitas komputasi catur "pemecahan"?


8

Ide dasar induksi mundur adalah memulai dengan semua posisi akhir yang mungkin dari sebuah permainan di mana pemain X menang. Jadi untuk catur, lihat semua cara Putih dapat skakmat Hitam. Sekarang bekerjalah mundur ke semua kemungkinan pergerakan / posisi yang memungkinkan Putih pindah ke salah satu posisi itu. Jika White pernah menemukan dirinya dalam posisi seperti itu dia bisa menang dengan pindah ke langkah skakmat yang relevan. Sekarang kami bekerja mundur langkah lain dan seterusnya. Akhirnya kami kembali ke semua gerakan pertama yang mungkin dilakukan White. Intinya adalah, setelah kita melakukan ini, kita tahu bahwa kita memiliki respons terbaik White untuk setiap langkah yang dilakukan Black.

Baru-baru ini (lima tahun terakhir) Checker "diselesaikan" dengan cara ini. Jelas Noughts and Crosses (apa yang mungkin disebut oleh para penjajah "Tic-Tac-Toe") telah terpecahkan selama berabad-abad. Paling tidak sejak xkcd ini tetapi mungkin jauh sebelumnya.

Jadi pertanyaannya adalah: faktor apa yang bergantung pada prosedur semacam ini? Jumlah posisi hukum yang memungkinkan, mungkin. Tetapi juga mungkin jumlah langkah hukum pada titik tertentu ... Dan mengingat ini, seberapa kompleks masalah seperti ini?

Pertanyaan bonus: berapa lama sebelum PC $ 2000 dapat menyelesaikan checker dalam sehari? Catur? Pergilah? (Tentu saja untuk ini Anda juga harus memperhitungkan peningkatan kecepatan komputer di rumah ...)

Saya telah menambahkan tag karena Anda dapat mewakili permainan ini sebagai pohon, tetapi jika saya menyalahgunakan tag, tambahkan sesuatu yang lebih sesuai


4
Pertanyaan tentang kompleksitas catur telah diulang di banyak tempat. Pohon permainan memiliki panjang yang terbatas, modulo aturan yang tepat yang mengatur undian, tetapi pohon permainan memiliki faktor percabangan yang sangat tinggi sehingga solusi brute force tampaknya tidak terjangkau. Terus terang: pohon permainan memiliki ukuran sesuatu seperti , untuk k setengah bergerak. Saya tidak melihat pertanyaan TCS di sini? 10kk
András Salamon

6
Apakah kurang sopan untuk menunjukkan bahwa kompleksitasnya adalah oleh aturan lima puluh langkah? O(1)
Joe Fitzsimons

Seamus, ruang lingkup teori adalah pertanyaan tingkat penelitian dalam tcs, silakan baca FAQ. Anda dapat menggunakan math.SE untuk pertanyaan tingkat non-penelitian.
Kaveh

ada beberapa pertanyaan terkait kompleksitas dalam catur tetapi seperti yang diungkapkan ini bukan karena pohon permainan yang terbatas. pertanyaan ini agak mirip, dapatkah ada algoritma catur yang sempurna
vzn

Jawaban:


26

Seperti yang ditunjukkan oleh @ Jo, catur itu sepele untuk dipecahkan dalam waktu menggunakan tabel pencarian. (Implementasi aktual dari algoritma ini akan membutuhkan alam semesta yang secara signifikan lebih besar daripada yang kita tinggali, tetapi ini adalah situs untuk ilmu komputer teoretis . Ukuran konstanta tidak relevan.)O(1)

Tidak jelas ada kanonik generalisasi catur, tapi beberapa varian telah dipertimbangkan; kompleksitasnya tergantung pada bagaimana aturan tentang gerakan tanpa menangkap dan posisi berulang digeneralisasi.n×n

Jika imbang dinyatakan setelah sejumlah polinomial penangkapan bebas bergerak, atau setelah posisi apapun mengulangi sejumlah polinomial kali, maka setiap permainan catur ujung setelah sejumlah polinomial bergerak, sehingga masalah jelas di PSPACE. Storer membuktikan bahwa varian ini adalah PSPACE-hard.n×n

Untuk varian tanpa batas pada posisi berulang atau capture bebas bergerak, jumlah hukum posisi catur adalah eksponensial di n , sehingga masalah jelas di EXPTIME. Fraenkel dan Lichtenstein membuktikan bahwa varian ini EXPTIME-hard.n×nn


3
"atau setelah posisi apa pun mengulangi jumlah polinomial beberapa kali". Saya pikir hanya pembatasan ini yang masih memungkinkan untuk permainan yang sangat panjang secara polinomi. Misalnya membayangkan papan dengan 2 n ksatria (misalnya. Via promosi) dan dua raja. Untuk m = n 2 , jumlah posisi adalah Ω ( C ( m , 2 n×n2nm=n2, yang superpolinomial, dan saya tidak dapat membayangkan beberapa kemunduran menurunkan jumlah posisi yang dapat dicapai dalam satu pertandingan ke beberapap(m). Ω(C(m,2m))p(m)
Yonatan N

AlphaGo membuat saya berpikir. Ada adalah sebuah kanonik versi Go, kan? Jadi apakah itu pertanyaan yang lebih baik? n×n
Seamus

Saya benar-benar membenci masalah-masalah yang ada O(1)tetapi sebenarnya tidak ada komputer atau algoritma untuk menyelesaikannya dalam waktu manusia yang wajar. Saya ingin tahu jumlah masalah seperti ini untuk memori dan waktu tetap limiter tertentu
albanx

1
n×n

11

50×(16×6+1)+1=48511324851234172O(1). Di sisi lain, dengan pendekatan naif seperti itu akan memakan waktu sekitar lima puluh ribu tahun untuk masalah menjadi dapat ditelusuri, dengan asumsi hukum Moore terus berlanjut tanpa batas.


Berdalih kecil: jumlah maksimum gerakan lebih seperti 50 * (16 * 6 + 1) + 1. Tapi 16 * 6 dari mereka adalah pion, 16 di antaranya berpotensi diambil dari 4 opsi, meskipun salah satu dari opsi tersebut memotong turunkan jumlah gerakan kemudian ... (Tidak untuk tidak setuju dengan poin dasar, yang bagus. Anehnya perkiraan Anda keluar sekitar 10 ^ 10 ^ 5, sedangkan Mathworld mengatakan bahwa Hardy memperkirakannya sebagai 10 ^ 10 ^ 50. Keajaiban apakah itu transkripsi catatannya yang buruk).
Peter Taylor

@Peter Kesalahan saya, maaf. Saya sudah mengoreksi jawabannya sekarang. Saya tidak yakin apakah ini adalah perkiraan di Mathworld. Jika hanya menghitung pengaturan hukum dewan (mengabaikan aturan lima puluh langkah), itu mungkin jauh lebih besar.
Joe Fitzsimons

Berdalih lain: Anda menggunakan versi yang salah dari aturan lima puluh langkah. Seharusnya "50 gerakan tanpa pion atau penangkapan". Jumlah potongan di papan tentu saja menurun secara monoton selama pertandingan dan aturan masih memungkinkan batas yang terbatas. Meskipun permainan masih terbatas tanpa aturan lima puluh langkah oleh aturan pengulangan tiga kali lipat, yang kemudian menghasilkan batas yang jauh lebih besar.
Olaf

Ah iya. Itu meningkatkan jumlah gerakan maksimum sekitar sepertiga.
Joe Fitzsimons

Anda melewatkan sesuatu tentang 50 gerakan: setelah 50 langkah tanpa langkah gadai dan tanpa item terbunuh, kami telah menggambar (kekuatan perhitungan Anda secara dramatis tumbuh tetapi masih konstan).
Saeed

8

Sebenarnya ada beberapa pertanyaan berbeda di sini: (a) berapa banyak daya komputasi yang diperlukan untuk melakukan pencarian pohon untuk game, dan (b) apa kompleksitas komputasi dari masalah ini? Sumber daya serba guna terbaik untuk hal semacam ini mungkin adalah halaman Wikipedia tentang Kompleksitas Game , tetapi untuk sedikit lebih detail:

dbbd/2bddb

Dalam praktiknya, pencarian pohon murni dilengkapi dengan kamus dari bawah ke atas; misalnya, hasil dari semua permainan catur 6 bagian diketahui, dan banyak permainan akhir 7 potong telah dianalisis (lihat http://en.wikipedia.org/wiki/Endgame_tablebase ), sehingga hasil cabang permainan dapat diketahui. mendongak di 'kamus' (database besar posisi) setelah posisi dikurangi menjadi beberapa bagian, mempersingkat banyak pencarian pohon tambahan yang seharusnya diperlukan. Inilah yang dilakukan dengan checker - basis data dibangun dari semua endgame dengan jumlah yang cukup, kemudian diperluas untuk menambah lebih banyak potongan dan lebih banyak, sampai hasil dari semua endgame 10-piece diketahui; kemudian pencarian pohon digunakan dari posisi awal, dan pada dasarnya keduanya bertemu di tengah.

Di luar pendekatan praktis ini, ada sisi (b) dari pertanyaan: apa kompleksitas komputasi dari masalah-masalah seperti ini? Secara abstrak, sebagian besar masalah sejenis ini cenderung jatuh ke dalam beberapa kategori; keduanya PSPACE-complete - yang secara kasar berarti 'jika Anda dapat menyelesaikan ini, Anda dapat menyelesaikan masalah yang membutuhkan banyak ruang polinomially' - atau EXPTIME-complete (yang kira-kira berarti 'jika Anda dapat menyelesaikan ini, Anda dapat menyelesaikan masalah apa pun itu membutuhkan banyak waktu secara eksponensial '), tergantung pada berapa lama game dapat bertahan; lagi, halaman Wikipedia tentang kelengkapan EXPTIME memiliki diskusi yang cukup bagus tentang masalah yang terlibat dan apa yang membedakan berbagai permainan di bagian depan ini.


-2

Perkiraan ini terlalu tinggi.

Anda fokus pada percabangan berdasarkan langkah hukum. Ini masuk akal jika Anda mencoba membuat komputer catur cepat, tetapi bukan bagaimana Anda akan menulis sebuah program untuk "memecahkan" catur.

Ada <<<<< 13 ^ 64 kemungkinan status permainan dalam catur. Setiap kotak hanya dapat berisi salah satu bidak catur atau tidak sama sekali. Anda dapat mengulanginya meskipun semuanya dan menandainya sebagai menang hitam atau putih tidak lebih dari 2 ^ 256 atau lebih operasi.

Tebakan yang lebih realistis dari jumlah kondisi permainan yang dapat dicapai secara wajar adalah sekitar 2 ^ 100


3
Karena aturan yang mengulang konfigurasi papan tiga kali adalah hasil imbang, keadaan permainan tidak hanya mencakup posisi saat ini dari potongan-potongan, tetapi semua konfigurasi papan masa lalu juga. Tapi apa pun; konstanta adalah konstanta.
Jeff

1
Ini juga membutuhkan hak castling, tetapi hanya membutuhkan konfigurasi 100 board terakhir.

Anda tampaknya menyapu banyak kompleksitas ke "dan tandai sebagai menang hitam atau menang putih".
Joe Fitzsimons

1
@ Jɛ ff E Tidak semua konfigurasi board masa lalu, karena posisi apa pun sebelum penangkapan terakhir atau pegadaian tidak pernah dapat dicapai lagi. Tapi, tetap saja, terserahlah; konstanta masih konstan.
David Richerby

Anda tidak akan memerlukan konfigurasi 100 board terakhir (katakan masing-masing 100 bit), tetapi hanya 100 move yang lalu, dan Anda tidak perlu mempertimbangkan pion move. Seharusnya tidak memerlukan lebih dari 8 bit. Jadi totalnya kurang dari 900 bit.
gnasher729
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.