Lo stoccafisso e la base funzionano insieme o indipendentemente?


9

Uso Arena GUI insieme allo stoccafisso nei giochi di motori. Voglio scaricare un tablebase di 6 pezzi ma questo è solo un sacco di lavoro (e forse non necessario). Se scarico il tablebase (syzygy), lo stoccafisso funziona con esso o aspetta semplicemente che il board abbia 6 pezzi e poi il tablebase faccia le sue mosse?

Ecco cosa intendo in modo più dettagliato

Stoccafisso che lavora con il tavolo

Presumo di avere la seguente posizione:

(Nota: al momento non sto parlando delle mosse migliori, solo un esempio)

Stoccafisso 8 - Wais Kamal, Computer Chess Game, 1-0
1. Qxd4 Rxd4 1-0

Lo stoccafisso consulta il tablebase su ciò che accade dopo Qxd4 Rxd4 (senza continuare a valutare il resto della linea). Se questa linea sta vincendo va bene.

Stoccafisso che lavora da solo

Lo stoccafisso continua a giocare fino a quando non rimangono sei pezzi sul tabellone, quindi il tavolo effettua le mosse.

Quale di questi ha effettivamente luogo?


La posizione iniziale è vinta per il bianco, ma catturare la regina nera è un grave errore. Non ho idea del perché il nero si sarebbe arreso ...
Deduplicatore,

Attualmente non sto parlando delle mosse migliori, solo un esempio.
Wais Kamal,

Risposte:


15

gioca fino a sei pezzi

Lo stoccafisso non lo fa, non è per questo che serve il tablebase. In breve, la base del tavolo aumenta la ricerca del motore molto prima che la posizione di sei uomini raggiunga il tabellone.

Facciamo un esercizio, aggiungiamo la tavola 5 pezzi. Ora hai 10 pezzi sul tabellone, e non è qualcosa che puoi trovare in qualsiasi base da tavolo. Tuttavia, durante la ricerca del motore ogni volta che lo stoccafisso viene scambiato fino a 6 pezzi , può immediatamente utilizzare le informazioni sul tavolo. Le informazioni sul tablebase danno allo stoccafisso se la posizione è una vittoria / perdita / pareggio senza mai scendere a qualcosa come 5 pezzi. Pertanto, la ricerca è più veloce ed efficiente.

MODIFICARE:

Il codice pertinente è https://github.com/official-stockfish/Stockfish/blob/master/src/search.cpp :

// Step 4a. Tablebase probe
if (!rootNode && TB::Cardinality)
{
    int piecesCount = pos.count<ALL_PIECES>();

    if (    piecesCount <= TB::Cardinality
        && (piecesCount <  TB::Cardinality || depth >= TB::ProbeDepth)
        &&  pos.rule50_count() == 0
        && !pos.can_castle(ANY_CASTLING))
    {

TB::Cardinalityè di default 6. Lo stoccafisso controlla quanti pezzi, se non è più di 6 consulta le informazioni sul tablebase. Altrimenti, ricerca regolare.


Quindi lo stoccafisso consulta il tavolo prima di raggiungere una posizione con 6 pezzi sul tabellone?
Wais Kamal,

@WaisKamal Ho aggiornato con il codice pertinente. SF fa il controllo.
SmallChess,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.