Aturan promosi sebenarnya sangat penting. Dengan permainan sempurna, permainan berakhir imbang bukannya menang untuk putih / gote jika Anda membatalkan aturan promosi. Bahkan, evaluasi keempat gerakan di posisi awal berubah dengan cara ini.
Saya telah menggunakan dua metode independen untuk mendapatkan hasil ini untuk memeriksa ulang bahwa tidak ada bug dalam implementasi saya:
- Menggunakan mesin dengan pencarian alpha-beta, yaitu garpu Stockfish saya untuk varian catur peri (termasuk varian shogi), saya menjalankan pencarian mendalam (~ 1h) sebelum dan setelah menonaktifkan aturan promosi , lihat hasilnya di bawah.
- Karena dobutsu shogi adalah permainan yang diselesaikan , ada generator tablebase untuk itu. Saya telah menggunakan generator tablebase open-source dan memodifikasinya untuk menonaktifkan promosi (Saya tidak terlalu akrab dengan basis kode ini, tetapi karena hasil dari kedua metode ini konsisten, perubahan saya tampaknya berfungsi dengan baik). Saya menjalankan pembuatan tablebase dengan kedua set aturan dan memeriksa hasilnya, yang dapat Anda temukan di bawah.
1. Hasil pencarian
memasukkan:
setoption name multipv value 4
setoption name hash value 4096
setoption name UCI_Variant value dobutsu
position startpos
go depth 90
output dengan aturan promosi:
info depth 90 seldepth 87 multipv 1 score mate -43 nodes 2423491649 nps 889420 hashfull 338 tbhits 0 time 2724798 pv c1c2 a4a3 c2c1 b3b2 a1b2 c4b3 C@a1 C@a2 c1c2 a2a1+ b2a1 b3c2 b1c2 a3b3 c2b1 b4a3 E@b2 a3b4 b2c1 b3a3 a1b2 a3a4 b1c2 b4c4 b2c3 a4a3 c3b2 a3a2 C@a1 a2b2 c2b2 G@b3 b2b1 E@a3 G@c2 C@c3 c2b2 c4b4 b2a2 b4a4 a2a3 a4a3 a1a2 a3b4 b1a1 G@c2 a1b1 b4c4 E@a1 b3b4 a1b2 c4b3 a2a3 b4c4 b1a1 c2c1 b2c1 b3a3 G@a2 a3b3 a2b2 b3a4 b2a2 C@a3 c1b2 a3a2 a1a2 c3c2 C@b3 E@c3 b2c3 c4c3 b3b4+ a4b4 E@b2 c3b3 a2b1 b3b2 b1b2 E@a3 b2a1 E@b2 a1b1 G@a1 b1c2 C@c3
info depth 90 seldepth 87 multipv 2 score mate -43 nodes 2423491649 nps 889420 hashfull 338 tbhits 0 time 2724798 pv b1c2 b3b2 a1b2 c4b3 c2b1 a4a3 C@a1 C@a2 c1c2 a2a1+ b2a1 b3c2 b1c2 a3b3 c2b1 b4a3 E@b2 a3b4 b2c1 b3a3 a1b2 a3a4 b1c2 b4c4 b2c3 a4a3 c3b2 a3a2 C@a1 a2b2 c2b2 G@b3 b2b1 E@a3 G@c2 C@c3 c2b2 c4b4 b2a2 b4a4 a2a3 a4a3 a1a2 a3b4 b1a1 G@c2 a1b1 b4c4 E@a1 b3b4 a1b2 c4b3 a2a3 b4c4 b1a1 c2c1 b2c1 b3a3 G@a2 a3b3 a2b2 b3a4 b2a2 C@a3 c1b2 a3a2 a1a2 c3c2 C@b3 E@c3 b2c3 c4c3 b3b4+ a4b4 E@b2 c3b3 a2b1 b3b2 b1b2 E@a3 b2a1 E@b2 a1b1 G@a1 b1c2 C@c3
info depth 90 seldepth 87 multipv 3 score mate -43 nodes 2423491649 nps 889420 hashfull 338 tbhits 0 time 2724798 pv b1a2 a4a3 a2b1 b3b2 a1b2 c4b3 C@a1 C@a2 c1c2 a2a1+ b2a1 b3c2 b1c2 a3b3 c2b1 b4a3 E@b2 a3b4 b2c1 b3a3 a1b2 a3a4 b1c2 b4c4 b2c3 a4a3 c3b2 a3a2 C@a1 a2b2 c2b2 G@b3 b2b1 E@a3 G@c2 C@c3 c2b2 c4b4 b2a2 b4a4 a2a3 a4a3 a1a2 a3b4 b1a1 G@c2 a1b1 b4c4 E@a1 b3b4 a1b2 c4b3 a2a3 b4c4 b1a1 c2c1 b2c1 b3a3 G@a2 a3b3 a2b2 b3a4 b2a2 C@a3 c1b2 a3a2 a1a2 c3c2 C@b3 E@c3 b2c3 c4c3 b3b4+ a4b4 E@b2 c3b3 a2b1 b3b2 b1b2 E@a3 b2a1 E@b2 a1b1 G@a1 b1c2 C@c3
info depth 90 seldepth 85 multipv 4 score mate -42 nodes 2423491649 nps 889420 hashfull 338 tbhits 0 time 2724798 pv b2b3 c4b3 a1b2 a4a3 C@a1 C@a2 c1c2 a2a1+ b2a1 b3c2 b1c2 a3b3 c2b1 b4a3 E@b2 a3b4 b2c1 b3a3 a1b2 a3a4 b1c2 b4c4 b2c3 a4a3 c3b2 a3a2 C@a1 a2b2 c2b2 G@b3 b2b1 E@a3 G@c2 C@c3 c2b2 c4b4 b2a2 b4a4 a2a3 a4a3 a1a2 a3b4 b1a1 G@c2 a1b1 b4c4 E@a1 b3b4 a1b2 c4b3 a2a3 b4c4 b1a1 c2c1 b2c1 b3a3 G@a2 a3b3 a2b2 b3a4 b2a2 C@a3 c1b2 a3a2 a1a2 c3c2 C@b3 E@c3 b2c3 c4c3 b3b4+ a4b4 E@b2 c3b3 a2b1 b3b2 b1b2 E@a3 b2a1 E@b2 a1b1 G@a1 b1c2 C@c3
output tanpa aturan promosi:
info depth 90 seldepth 52 multipv 1 score cp 0 nodes 2745548262 nps 965315 hashfull 244 tbhits 0 time 2844199 pv b1a2 a4a3 a2b1 b3b2 a1b2 c4b3 C@a1 b4a4 c1c2 b3c2 b1c2 G@b3 b2c3 C@c4 c3b2 a4b4 E@a2 c4c3 c2c1 b3b2 c1b2 E@b3 b2b1 b3a4 G@b2 b4c4 b1c1 a4b3 a2b3 a3b3 b2b3 c4b3 G@b2 b3c4 E@b3 c4b4 c1b1 G@a3 b3a2 b4c4 b1c1 E@a4 c1b1 a4b3 b2b3 a3b3 a2b3 c4b3 G@b2 b3b4 E@b3
info depth 90 seldepth 52 multipv 2 score cp 0 nodes 2745548262 nps 965315 hashfull 244 tbhits 0 time 2844199 pv b1c2 b3b2 a1b2 c4b3 c2b1 a4a3 C@a1 b4a4 c1c2 b3c2 b1c2 G@b3 b2c3 C@c4 c3b2 a4b4 E@a2 c4c3 c2c1 b3b2 c1b2 E@b3 b2b1 b3a4 G@b2 b4c4 b1c1 a4b3 a2b3 a3b3 b2b3 c4b3 G@b2 b3c4 E@b3 c4b4 c1b1 G@a3 b3a2 b4c4 b1c1 E@a4 c1b1 a4b3 b2b3 a3b3 a2b3 c4b3 G@b2 b3b4 E@b3
info depth 90 seldepth 50 multipv 3 score cp 0 nodes 2745548262 nps 965315 hashfull 244 tbhits 0 time 2844199 pv b2b3 c4b3 a1b2 a4a3 C@a1 b4a4 c1c2 b3c2 b1c2 G@b3 b2c3 C@c4 c3b2 a4b4 E@a2 c4c3 c2c1 b3b2 c1b2 E@b3 b2b1 b3a4 G@b2 b4c4 b1c1 a4b3 a2b3 a3b3 b2b3 c4b3 G@b2 b3c4 E@b3 c4b4 c1b1 G@a3 b3a2 b4c4 b1c1 E@a4 c1b1 a4b3 b2b3 a3b3 a2b3 c4b3 G@b2 b3b4 E@b3
info depth 90 seldepth 59 multipv 4 score cp 0 nodes 2745548262 nps 965315 hashfull 244 tbhits 0 time 2844199 pv c1c2 a4a3 c2c1 b3b2 a1b2 c4b3 C@a1 b4a4 c1c2 b3c2 b1c2 G@b3 b2c3 C@c4 c3b2 a4b4 E@a2 c4c3 c2c1 b3b2 c1b2 E@b3 b2b1 b3a4 G@b2 b4c4 b1c1 a4b3 a2b3 a3b3 b2b3 c4b3 G@b2 b3c4 E@b3 c4b4 c1b1 G@a3 b3a2 b4c4 b1c1 E@a4 c1b1 a4b3 b2b3 a3b3 a2b3 c4b3 G@b2 b3a4 E@b3 a4b4 b1c1 G@a3 b3a2 b4c4 c1b1 E@b3
Lihat deskripsi protokol UCI untuk perincian tentang arti input dan output.
2. Hasil tablebase
memasukkan:
show lines
output dengan aturan promosi:
Gc4-c3 : #-78 (25.00%)
Lb4-c3 : #-78 (25.00%)
Lb4-a3 : #-78 (25.00%)
Cb3xb2 : #-76 (24.99%)
output tanpa aturan promosi:
Cb3xb2 : 0 (25.00%)
Gc4-c3 : 0 (25.00%)
Lb4-c3 : 0 (25.00%)
Lb4-a3 : 0 (25.00%)
Tolong dicatat:
- Jarak pasangan berbeda karena dua alasan:
- Stockfish menghitung jarak pasangan dalam gerakan penuh (kecuali jika Anda mengaktifkan protokol USI), sedangkan generator tablebase menghitung dalam lapis (setengah bergerak).
- Pencarian tidak selalu menemukan cara terpendek untuk kawin, sedangkan hasil tablebase harus akurat.
- Kedua perangkat lunak juga menggunakan sistem koordinat yang berbeda untuk menggambarkan kotak (urutan peringkat terbalik), jadi berhati-hatilah untuk tidak mencampurnya saat membandingkan string pindahan.
Saya sekarang yakin bahwa jawaban Fabian Fichter benar. Komentar berikut tentang jawaban Fabian dapat membantu meyakinkan orang lain tentang hal yang sama.
1. Posisi yang tampaknya terkena dampak dengan menghapus promosi anak ayam
Menganalisis hasil yang diposting dari Stockfish yang dimodifikasi, semua game bertemu cukup cepat pada posisi berikut: S / -l- / ge - / - E - / - LG / cC.
Sente kemudian bermain
C*a4
, menjatuhkan anak ayam mereka di sudut kiri bawah. Awalnya saya pikir ini penurunan yang sangat sia-sia tetapi menurut basis tabel sebenarnya tidak buruk sama sekali.Sekarang sesuatu yang menarik terjadi. Basis tabel setuju dengan Stockfish bahwa mengayunkan Singa ke samping adalah hasil imbang, tetapi bagaimana dengan menjatuhkan anak ayam untuk melawan anak ayam?
Sekarang cewek
a3
ini berada satu langkah lagi dari promosi dan terlebih lagi akan memberi cek pada promosi, yang akan memaksa singa Sente untuk mengambilnya. Satu-satunya masalah adalah bahwa langkah terbaik melibatkan kehilangan anak ayama3
dan juga bahwa kita masih cukup jauh dari skakmat. Karena itu kita akan mengambil jalan pintas, sehingga kita kehilangan lebih cepat, tetapi tanpa kehilangan karena alasan lain seperti memberikan materi secara sia-sia.Kami tampaknya telah berhasil dalam melestarikan ancaman cewek yang mempromosikan pengorbanan, jadi mari kita lanjutkan!
Dan itu dia, cewek yang mempromosikan pengorbanan sebagai langkah terbaik! Mari lihat apa yang terjadi.
Sekarang mari kita lihat apa yang terjadi jika kita mengubah ayam itu menjadi anak ayam:
Dalam posisi ini langkah terbaik menempatkan skakmat 88 (90-2) bergerak menjauh, yang jauh dari skakmat daripada posisi awal, membuatnya masuk akal bahwa ketika dianalisis akan mengarah ke posisi lain bahwa tanpa mempromosikan kekuatan cewek tiba-tiba jauh lebih jauh dari pasangan dari sebelumnya (ad infinitum). Jika benar itu akan membuat posisi G / --- / le- / cG- / CLG / e (lihat di bawah) hasil imbang bukannya menang tanpa promosi anak ayam .
2. Ketepatan pencarian lengkap
Dengan asumsi bahwa generator basis tabel yang digunakan adalah pencarian lengkap yang benar, tampaknya tambalan Fabian harus berhasil menonaktifkan promosi cewek karena file
moves.c
adalah satu-satunya tempat yangPOS_FLAGS
digunakan (kecuali untuk digunakan dalamvalidation.c
memeriksa posisi struct) dan memang tampaknya dibuat khusus. untuk menonaktifkan promosi.sumber