Apakah Stockfish dan tablebase bekerja bersama atau independen?

9

Saya menggunakan Arena GUI bersama dengan stockfish di game mesin. Saya ingin mengunduh tablebase 6-piece tapi itu hanya banyak pekerjaan (dan mungkin tidak perlu). Jika saya mengunduh tablebase (syzygy), apakah stockfish berfungsi dengannya atau hanya menunggu papan untuk memiliki 6-potongan dan kemudian tablebase membuat gerakannya?

Inilah yang saya maksud dengan lebih detail

Stockfish bekerja dengan tablebase

Saya menganggap saya memiliki posisi sebagai berikut:

(Catatan: saat ini saya tidak berbicara tentang gerakan terbaik, hanya sebuah contoh)

Stockfish 8 - Wais Kamal, Game Catur Komputer, 1-0
1. Qxd4 Rxd4 1-0

Stockfish berkonsultasi dengan tablebase tentang apa yang terjadi setelah Qxd4 Rxd4 (tanpa terus mengevaluasi sisa baris). Jika garis ini menang, itu berlaku untuk itu.

Stockfish bekerja sendiri

Stockfish terus memainkan permainan sampai enam keping tersisa di papan tulis, lalu tablebase membuat gerakan.

Yang mana yang sebenarnya terjadi?

Wais Kamal
sumber
Posisi awal dimenangkan untuk putih, tetapi menangkap ratu hitam adalah kesalahan besar. Tidak tahu mengapa hitam akan menyerah ...
Deduplicator
Saat ini saya tidak berbicara tentang gerakan terbaik, hanya sebuah contoh.
Wais Kamal

Jawaban:

15

main game sampai enam buah

Stockfish tidak melakukan itu, itu bukan tujuan dari tablebase. Secara singkat, tablebase meningkatkan pencarian mesin sebelum posisi enam orang mencapai papan tulis.

Ayo berolahraga, tambahkan papan 5 buah. Sekarang Anda memiliki 10 buah di papan tulis, dan itu bukan sesuatu yang dapat Anda temukan di tablebase apa pun. Namun, selama pencarian mesin setiap kali Stockfish diperdagangkan hingga 6 buah , ia dapat langsung menggunakan informasi tablebase. Informasi tablebase memberi Stockfish apakah posisi itu win / loss / draw tanpa pernah turun menjadi 5 potong. Karena itu, pencarian lebih cepat dan lebih efisien.

EDIT:

Kode yang relevan adalah 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::Cardinalitysecara default 6. Stockfish memeriksa berapa banyak bagian, jika tidak lebih dari 6 ia berkonsultasi dengan informasi tablebase. Kalau tidak, pencarian teratur.

Catur kecil
sumber
Jadi, apakah stockfish berkonsultasi dengan tablebase sebelum mencapai posisi dengan 6 buah di papan?
Wais Kamal
@WaisKamal Saya memperbarui dengan kode yang relevan. SF melakukan pengecekan.
SmallChess