Ist die Regel zur Förderung von Küken in Dobutsu Shogi wirklich wichtig?

9

Im Dobutsu Shogi befördert das Küken (japanischer Bauer) ein Huhn (Gold General). Nach meiner Erfahrung kommt diese Beförderung nur selten vor und ich vermute nach vielem Fehler.

Ist die Regel zur Förderung von Küken in Dobutsu Shogi wirklich wichtig? Das heißt, ändert sich das Spiel wirklich, wenn die Kükenwerbung eingestellt wird (und die Küken stattdessen in der letzten Reihe stecken bleiben)?

Mit wirklich ändern meine ich die Klassifizierung einer sich ändernden Position (Gewinnen, Verlieren oder Ziehen) oder die genaue Abfolge von Zügen, um einen Gewinn von einer gewinnbringenden Position zu erzwingen, die sich wesentlich ändert.

hkBst
quelle

Antworten:

6

Die Beförderungsregel ist tatsächlich sehr wichtig. Bei perfektem Spiel endet das Spiel mit einem Unentschieden anstelle eines Gewinns für Weiß / Gote, wenn Sie die Beförderungsregel fallen lassen. Tatsächlich ändert sich die Auswertung aller vier Bewegungen in der Ausgangsposition auf diese Weise.

Ich habe zwei unabhängige Methoden verwendet, um dieses Ergebnis zu erhalten, um zu überprüfen, ob meine Implementierungen fehlerfrei sind:

  1. Mit einer Engine mit Alpha-Beta-Suche, nämlich meiner Stockfish-Gabel für Feenschachvarianten (einschließlich Shogi-Varianten), habe ich vor und nach dem Deaktivieren der Promotion-Regel gründliche Suchvorgänge (~ 1 Stunde) durchgeführt (siehe Ergebnisse unten).
  2. Da Dobutsu Shogi ein gelöstes Spiel ist , gibt es dafür Tablebase-Generatoren. Ich habe einen Open-Source-Tabellenbasisgenerator verwendet und ihn geändert, um Werbeaktionen zu deaktivieren (ich bin mit dieser Codebasis nicht sehr vertraut, aber da die Ergebnisse der beiden Methoden konsistent sind, scheint meine Änderung gut zu funktionieren). Ich habe die Tabellenbasisgenerierung mit beiden Regelsätzen ausgeführt und die Ergebnisse überprüft, die Sie unten finden.

1. Suchergebnisse

Eingang:

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

Ausgabe mit Promotion-Regel:

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

Ausgabe ohne Promotion-Regel:

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

Weitere Informationen zur Bedeutung der Ein- und Ausgabe finden Sie in der Beschreibung des UCI-Protokolls .

2. Tabellenbasisergebnisse

Eingang:

show lines

Ausgabe mit Promotion-Regel:

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

Ausgabe ohne Promotion-Regel:

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

Bitte beachten Sie:

  • Die Partnerabstände unterscheiden sich aus zwei Gründen:
    • Stockfisch zählt die Partnerentfernung in vollen Zügen (es sei denn, Sie aktivieren das USI-Protokoll), während der Tabellenbasisgenerator in Lagen (halbe Züge) zählt.
    • Die Suche findet nicht unbedingt den kürzesten Weg zur Paarung, wohingegen das Tabellenergebnis genau sein sollte.
  • Die beiden Softwareprogramme verwenden auch unterschiedliche Koordinatensysteme, um die Quadrate zu beschreiben (die Reihenfolge der Ränge ist invertiert). Achten Sie daher darauf, sie beim Vergleich von Bewegungszeichenfolgen nicht zu verwechseln.
Fabian Fichter
quelle
1
Was für ein interessantes und unerwartetes Ergebnis! Ich habe diesen Tischbasisgenerator ein wenig studiert, aber nicht bemerkt, dass eine so kleine Änderung mein Ziel erreichen würde. Wie auch immer, können Sie die Ausgabe von Fairy-Stockfish etwas genauer erklären? (Warum) bedeutet "cp 0" Unentschieden?
hkBst
1
Ja, es war auch für mich überraschend. Vielen Dank für das Feedback. Ich habe einen Link zur Beschreibung des UCI-Protokolls hinzugefügt. Zu Ihrer spezifischen Frage: Ja, cp 0 bedeutet Unentschieden, da es für den Vorteil der Seite steht, sich in der Einheit der Tausendfüßler (1/100 eines Schachbauern) zu bewegen.
Fabian Fichter
1

Ich bin jetzt überzeugt, dass die Antwort von Fabian Fichter richtig ist. Der folgende Kommentar zu Fabians Antwort kann helfen, andere davon zu überzeugen.

1. Position, die durch das Entfernen der Kükenwerbung beeinträchtigt zu werden scheint

Bei der Analyse der veröffentlichten Ergebnisse des modifizierten Stockfish konvergieren alle Spiele ziemlich schnell an der folgenden Position: 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 spielt C*a4und lässt ihr Küken in die untere linke Ecke fallen. Anfangs dachte ich, dies sei ein ziemlich verschwenderischer Tropfen, aber laut Tabellenbasis ist es eigentlich gar nicht so schlecht.

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

Jetzt passiert etwas Interessantes. Die Tischbasis stimmt mit Stockfish überein, dass es ein Unentschieden ist, den Löwen zur Seite zu treten, aber wie wäre es, ein Küken fallen zu lassen, um gegen ein Küken zu kämpfen?

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| *
 +---+

Jetzt ist das Küken a3einen Schritt von der Werbung entfernt und würde darüber hinaus die Werbung kontrollieren, was den Sente-Löwen zwingen würde, sie anzunehmen. Das einzige Problem ist, dass der beste Schritt darin besteht, das Küken zu verlieren a3und dass wir immer noch ziemlich weit von einem Schachmatt entfernt sind. Deshalb werden wir eine Abkürzung nehmen, so dass wir schneller verlieren, aber ohne aus anderen Gründen zu verlieren, z. B. weil wir unnötig Material verschenken.

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
 +---+

Es scheint uns gelungen zu sein, die Bedrohung durch das opferfördernde Küken zu bewahren. Fahren wir also fort!

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%)

Und da ist es, das opferfördernde Küken als bester Schachzug! Mal sehen was passiert.

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%)

Nun wollen wir sehen, was passiert, wenn wir diesen Hahn in ein Küken verwandeln:

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%)

In dieser Position bewegt sich der Schachmatt 88 (90-2) am besten, der weiter vom Schachmatt entfernt ist als die Ausgangsposition, was es plausibel macht, dass er bei der Analyse zu einer anderen Position führt, die ohne Förderung der Kükenkraft plötzlich viel weiter entfernt ist Partner als zuvor (ad infinitum). Wenn dies zutrifft , würde Position G / --- / le- / cG- / CLG / e (siehe unten) ein Unentschieden anstelle eines Gewinns ohne Kükenförderung bedeuten .

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

2. Richtigkeit der umfassenden Suche

Unter der Annahme , dass der verwendete Tischfuß Generator ist eine korrekte erschöpfende Suche, scheint es , dass Fabian Patch deaktivieren chick Promotions erfolgreich sein sollten als Datei moves.cder einzige Ort ist , die POS_FLAGSverwendet wird ( mit Ausnahme einer Verwendung in validation.cPosition structs zu überprüfen) und in der Tat scheint speziell gebaut um Werbeaktionen zu deaktivieren.

/* clear promotion bits for pieces that can't be promoted */
status &= POS_FLAGS;
hkBst
quelle