กฎการส่งเสริมการขายลูกไก่ในโดบุทสึโชงุมีความสำคัญจริง ๆ หรือไม่?


9

ในdobutsu shogiลูกไก่ (จำนำญี่ปุ่น) ส่งเสริมให้ไก่ (ทองทั่วไป) จากประสบการณ์ของฉันโปรโมชั่นนี้เกิดขึ้นเพียงเล็กน้อยเท่านั้นและฉันสงสัยว่าหลังจากเกิดความผิดพลาดมาก

กฎการส่งเสริมการขายลูกไก่ในโดบุทสึโชงุมีความสำคัญจริง ๆ หรือไม่? นั่นคือเกมมีการเปลี่ยนแปลงจริง ๆ หรือไม่ถ้าการเลื่อนลูกไก่หลุด (และลูกไก่ติดอยู่ในแถวสุดท้ายแทน)?

โดยการเปลี่ยนแปลงจริง ๆ ฉันหมายถึงการจัดประเภทของการเปลี่ยนแปลงตำแหน่ง (ชนะแพ้หรือวาดรูป) หรือลำดับการเคลื่อนที่ที่แม่นยำเพื่อบังคับให้ชนะจากตำแหน่งที่ชนะการเปลี่ยนแปลงอย่างมาก

คำตอบ:


6

กฎการส่งเสริมการขายมีความสำคัญมาก ด้วยการเล่นที่สมบูรณ์แบบเกมจะจบลงด้วยผลเสมอแทนที่จะเป็นผู้ชนะสำหรับสีขาว / gote หากคุณวางกฎการเลื่อน ในความเป็นจริงการประเมินการเคลื่อนไหวทั้งสี่ในการเปลี่ยนแปลงตำแหน่งเริ่มต้นด้วยวิธีนี้

ฉันใช้สองวิธีอิสระในการรับผลลัพธ์นี้เพื่อตรวจสอบอีกครั้งว่าไม่มีข้อผิดพลาดในการใช้งานของฉัน:

  1. การใช้เครื่องมือที่มีการค้นหาอัลฟาเบต้าคือส้อม Stockfishของฉันสำหรับตัวแปรหมากรุกนางฟ้า (รวมถึงพันธุ์โชกิ) ฉันใช้การค้นหาลึก (~ 1 ชั่วโมง) ก่อนและหลังปิดการใช้กฎการส่งเสริมการขายดูผลลัพธ์ด้านล่าง
  2. เนื่องจากdobutsu shogi เป็นเกมที่แก้ไขแล้วจึงมีเครื่องกำเนิดตารางไว้สำหรับมัน ฉันใช้ตัวสร้างtablebase โอเพ่นซอร์สและแก้ไขเพื่อปิดการใช้งานโปรโมชัน (ฉันไม่คุ้นเคยกับฐานรหัสนี้มากนัก แต่เนื่องจากผลลัพธ์ของทั้งสองวิธีนั้นสอดคล้องกันการเปลี่ยนแปลงของฉันจึงทำงานได้ดี) ฉันรันการสร้าง tablebase โดยมีทั้งชุดกฎและตรวจสอบผลลัพธ์ซึ่งคุณสามารถดูได้ด้านล่าง

1. ผลการค้นหา

การป้อนข้อมูล:

setoption name multipv value 4
setoption name hash value 4096
setoption name UCI_Variant value dobutsu
position startpos
go depth 90

เอาท์พุทที่มีกฎการส่งเสริมการขาย:

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

เอาท์พุทโดยไม่มีกฎการส่งเสริมการขาย:

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

ดูรายละเอียดโปรโตคอล UCIสำหรับรายละเอียดเกี่ยวกับความหมายของอิน - และเอาท์พุต

2. ผลฐานตาราง

การป้อนข้อมูล:

show lines

เอาท์พุทที่มีกฎการส่งเสริมการขาย:

Gc4-c3 : #-78  (25.00%)
Lb4-c3 : #-78  (25.00%)
Lb4-a3 : #-78  (25.00%)
Cb3xb2 : #-76  (24.99%)

เอาท์พุทโดยไม่มีกฎการส่งเสริมการขาย:

Cb3xb2 : 0     (25.00%)
Gc4-c3 : 0     (25.00%)
Lb4-c3 : 0     (25.00%)
Lb4-a3 : 0     (25.00%)

โปรดทราบ:

  • ระยะทางของเพื่อนต่างกันด้วยสองเหตุผล:
    • สต็อคฟิชนับระยะห่างของคู่ในการเคลื่อนไหวเต็มรูปแบบ (เว้นแต่คุณจะเปิดใช้งานโปรโตคอล USI) ในขณะที่ตัวสร้างตารางฐานข้อมูลนับเป็นเร่ (ครึ่งย้าย)
    • การค้นหาไม่จำเป็นต้องค้นหาวิธีที่สั้นที่สุดในการผสมพันธุ์ในขณะที่ผลของตารางฐานข้อมูลควรมีความแม่นยำ
  • ซอฟต์แวร์ทั้งสองยังใช้ระบบพิกัดที่แตกต่างกันเพื่ออธิบายกำลังสอง (การเรียงลำดับของลำดับกลับด้าน) ดังนั้นโปรดระวังอย่าผสมกันเมื่อเปรียบเทียบการย้ายสตริง

1
ช่างเป็นผลลัพธ์ที่น่าสนใจและคาดไม่ถึง! ฉันศึกษาตัวสร้าง tablebase เล็กน้อย แต่ไม่ได้ตระหนักถึงการเปลี่ยนแปลงเล็กน้อยที่จะบรรลุเป้าหมายของฉัน ยังไงก็ตามเจ้าช่วยอธิบาย Fairy-stockfish ได้มากกว่านี้หน่อยได้ไหม? (เพราะเหตุใด) "cp 0" หมายถึงวาด?
hkBst

1
ใช่ฉันรู้สึกประหลาดใจเช่นกัน ขอบคุณสำหรับคำติชมฉันได้เพิ่มลิงก์ไปยังคำอธิบายโปรโตคอล UCI สำหรับคำถามที่เฉพาะเจาะจงของคุณ: ใช่ cp 0 หมายถึงวาดเนื่องจากมันเป็นประโยชน์จากด้านที่จะย้ายในหน่วยของ centipawn (1 / 100th ของเบี้ยหมากรุก)
Fabian Fichter

1

ตอนนี้ฉันเชื่อว่าคำตอบของ Fabian Fichterนั้นถูกต้อง ความเห็นต่อไปนี้เกี่ยวกับคำตอบของเฟเบียนอาจช่วยโน้มน้าวผู้อื่นในแบบเดียวกัน

1. ตำแหน่งที่ดูเหมือนว่าจะได้รับผลกระทบจากการลบการส่งเสริมการขายลูกไก่

การวิเคราะห์ผลลัพธ์ที่โพสต์จาก Stockfish ที่แก้ไขแล้วเกมทั้งหมดมาบรรจบกันอย่างรวดเร็วในตำแหน่งต่อไปนี้: S / -l- / ge - / - E - / - LG / cC

$ ./dobutsu -vs900
Loading tablebase... done
1. setup S/-l-/ge-/-E-/-LG/cC
1. show board
  ABC 
 +---+
1| l | c
2|ge |
3| E |
4| LG| *C
 +---+
1. show lines
Eb3xa2 : #-72  (67.13%)
C  *a4 : #-70  (32.87%)   <---  apparently quite strong
Gc4-c3 : #-46  ( 0.00%)
C  *c2 : #-36  ( 0.00%)
C  *c1 : #-28  ( 0.00%)
Eb3-a4 : #-26  ( 0.00%)
Lb4-a4 : #-26  ( 0.00%)
C  *a1 : #-24  ( 0.00%)
C  *c3 : #-22  ( 0.00%)
C  *a3 : #-20  ( 0.00%)
Eb3-c2 : #-12  ( 0.00%)
Lb4-c3 : #-2   ( 0.00%)
Lb4-a3 : #-2   ( 0.00%)

จากนั้น Sente ก็เล่นC*a4วางลูกไก่ไว้ที่มุมล่างซ้าย ตอนแรกฉันคิดว่านี่เป็นการตกที่ไร้ประโยชน์ แต่ตามฐานของตารางแล้วมันไม่เลวเลย

1. C  *a4
  ABC 
 +---+
1| l | *c
2|ge |
3| E |
4|CLG| 
 +---+

ตอนนี้สิ่งที่น่าสนใจเกิดขึ้น ฐานโต๊ะเห็นด้วยกับ Stockfish ที่ก้าวสิงโตไปด้านข้างเป็นรูปวาด แต่สิ่งที่เกี่ยวกับการทิ้งลูกไก่เพื่อต่อสู้กับลูกไก่?

2. show lines
C  *a3 : #69   (99.57%)   <---  winning chick drop
C  *c2 : #91   ( 0.21%)
C  *c1 : #91   ( 0.21%)
C  *a1 : 0     ( 0.00%)
Ga2-a1 : 0     ( 0.00%)
Eb2-c1 : 0     ( 0.00%)
Eb2-a1 : 0     ( 0.00%)
Lb1-a1 : 0     ( 0.00%)   <---  draws the game
C  *c3 : #-28  ( 0.00%)
Lb1-c1 : #-22  ( 0.00%)
Eb2-c3 : #-20  ( 0.00%)
Eb2-a3 : #-20  ( 0.00%)
Ga2-a3 : #-18  ( 0.00%)
Lb1-c2 : #-2   ( 0.00%)
2. C  *a3
  ABC 
 +---+
1| l | 
2|ge |
3|cE |
4|CLG| *
 +---+

ตอนนี้ลูกไก่อยู่a3ห่างเพียงหนึ่งก้าวจากการโปรโมตและยิ่งไปกว่านั้นก็ให้ตรวจสอบการส่งเสริมซึ่งจะบังคับให้สิงโต Sente นำมันไป ปัญหาเดียวก็คือการย้ายที่ดีที่สุดเกี่ยวข้องกับการสูญเสียลูกไก่a3และเราก็ยังค่อนข้างห่างไกลจากการรุกฆาต ดังนั้นเราจะต้องใช้เวลาเล็กน้อยในการตัดสั้น ๆ เช่นที่เราสูญเสียได้เร็วขึ้น แต่ไม่สูญเสียด้วยเหตุผลอื่น ๆ เช่นการให้วัสดุที่ไม่จำเป็น

3. show lines
Ca4xa3 : #-68  (92.84%)   <---  catches chick about to promote
Gc4-c3 : #-62  ( 7.16%)
Eb3xa2 : #-32  ( 0.00%)   <---  shortcut
Eb3-c2 : #-8   ( 0.00%)   <---  give away elephant
Lb4-c3 : #-2   ( 0.00%)   <---  stupid
Lb4xa3 : #-2   ( 0.00%)   <---  stupid
3. Eb3xa2
  ABC 
 +---+
1| l | *
2|Ee |
3|c  |
4|CLG| G
 +---+
4. show lines
Lb1xa2 : #31   (100.00%)
Lb1-c2 : #-10  ( 0.00%)
Lb1-c1 : #-6   ( 0.00%)
Lb1-a1 : #-6   ( 0.00%)
Ca3xa4+: #-2   ( 0.00%)
Eb2-c3 : #-2   ( 0.00%)
Eb2-c1 : #-2   ( 0.00%)
Eb2-a1 : #-2   ( 0.00%)
4. Lb1xa2
  ABC 
 +---+
1|   | e
2|le |
3|c  |
4|CLG| *G
 +---+

ดูเหมือนว่าเราจะประสบความสำเร็จในการรักษาภัยคุกคามของเจี๊ยบที่เสียสละเพื่อโปรโมตดังนั้นขอต่อไป!

5. show lines
G  *b3 : #-30  (100.00%)
G  *a1 : #-24  ( 0.00%)
G  *c3 : #-20  ( 0.00%)
Gc4-c3 : #-18  ( 0.00%)
G  *c2 : #-14  ( 0.00%)
G  *c1 : #-10  ( 0.00%)
G  *b1 : #-10  ( 0.00%)
Ca4xa3 : #-8   ( 0.00%)
Lb4-c3 : #-2   ( 0.00%)
Lb4-b3 : #-2   ( 0.00%)
Lb4xa3 : #-2   ( 0.00%)
5. G  *b3
  ABC 
 +---+
1|   | *e
2|le |
3|cG |
4|CLG| 
 +---+
6. show lines
Ca3xa4+: #29   (100.00%)   <---  sacrificial promoting chick check
E  *c3 : #-30  ( 0.00%)
E  *c1 : #-28  ( 0.00%)
Eb2-c1 : #-28  ( 0.00%)
Eb2-a1 : #-28  ( 0.00%)
La2-b1 : #-28  ( 0.00%)
La2-a1 : #-28  ( 0.00%)
E  *c2 : #-26  ( 0.00%)
E  *a1 : #-24  ( 0.00%)
E  *b1 : #-12  ( 0.00%)
Eb2-c3 : #-12  ( 0.00%)
La2xb3 : #-2   ( 0.00%)

และนั่นก็คือลูกเจี๊ยบที่เสียสละโปรโมตว่าเป็นท่าที่ดีที่สุด! มาดูกันว่าเกิดอะไรขึ้น

6. Ca3xa4+:
  ABC 
 +---+
1|   | ce
2|le |
3| G |
4|rLG| *
 +---+
7. show lines
Lb4xa4 : #-28  (100.00%)   <---  take chick (forced if promoted)
Gc4-c3 : #-2   ( 0.00%)
Gb3-c3 : #-2   ( 0.00%)
Gb3-a3 : #-2   ( 0.00%)
Gb3xb2 : #-2   ( 0.00%)
Lb4-c3 : #-2   ( 0.00%)
Lb4-a3 : #-2   ( 0.00%)

ตอนนี้เรามาดูกันว่าจะเกิดอะไรขึ้นถ้าเราเปลี่ยนไก่ตัวนั้นเป็นไก่:

7. setup S/---/le-/-G-/cLG/ec
1. show board
  ABC 
 +---+
1|   | ce
2|le |
3| G |
4|cLG| *
 +---+
1. show lines
Gc4-c3 : #-90  (100.00%)
Gb3xb2 : #-30  ( 0.00%)
Lb4xa4 : #-28  ( 0.00%)
Gb3-c3 : #-10  ( 0.00%)
Gb3-a3 : #-8   ( 0.00%)
Lb4-c3 : #-2   ( 0.00%)
Lb4-a3 : #-2   ( 0.00%)

ในตำแหน่งนี้การย้ายที่ดีที่สุดทำให้รุกฆาต 88 (90-2) ย้ายออกไปซึ่งอยู่ไกลจากรุกฆาตมากกว่าตำแหน่งเริ่มต้นทำให้เป็นไปได้ว่าเมื่อวิเคราะห์แล้วมันจะนำไปสู่ตำแหน่งอื่นที่ไม่มีการส่งเสริมพลังลูกไก่ คู่ครองก่อนหน้านี้ (ad infinitum) ถ้าเป็นจริงที่จะทำให้ตำแหน่ง G / --- / le- / cG- / CLG / E (ดูด้านล่าง) วาดแทนการชนะโดยไม่ต้องโปรโมชั่นเจี๊ยบ

  ABC 
 +---+
1|   | *e
2|le |
3|cG |
4|CLG| 
 +---+

2. ความถูกต้องของการค้นหาอย่างละเอียด

สมมติว่าเครื่องกำเนิดตารางพื้นฐานที่ใช้เป็นการค้นหาที่ถูกต้องแล้วดูเหมือนว่าโปรแกรมปรับปรุงของ Fabian ควรประสบความสำเร็จในการปิดใช้งานการส่งเสริมการขายลูกไก่เนื่องจากไฟล์moves.cเป็นสถานที่เดียวที่POS_FLAGSใช้ (ยกเว้นการใช้ในvalidation.cการตรวจสอบตำแหน่งของโครงสร้าง) เพื่อปิดการใช้งานโปรโมชัน

/* clear promotion bits for pieces that can't be promoted */
status &= POS_FLAGS;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.