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 grafik-algoritma karena Anda dapat mewakili permainan ini sebagai pohon, tetapi jika saya menyalahgunakan tag, tambahkan sesuatu yang lebih sesuai
Jawaban:
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 × n n
sumber
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 tertentusumber
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:
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.
sumber
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
sumber