干し魚とテーブルベースは一緒に、または独立して動作しますか?


9

エンジンゲームでは、アリーナGUIをストックフィッシュと一緒に使用しています。6ピースのテーブルベースをダウンロードしたいのですが、これは多くの作業です(そしておそらく不要です)。テーブルベース(syzygy)をダウンロードした場合、ストックフィッシュはそれで動作しますか、それともボードが6個になるのを待ってからテーブルベースが動きますか?

詳細はこちら

テーブルベースを使った干し魚

私は次の立場にいると思います:

(注:現在私は最高の動きについて話しているのではなく、単なる例です)

干し魚8-Wais Kamal、コンピュータチェスゲーム、1-0
1. Qxd4 Rxd4 1-0

Stockfishは、Qxd4 Rxd4の後に何が起こるかについてテーブルベースを調べます(残りの行の評価を続けることはありません)。このラインが勝っている場合、それはそれのために行きます。

一人で働く干し魚

ストックフィッシュは、ボードに6個のピース​​が残るまでゲームをプレイし続け、テーブルベースが動きます。

これらのどれが実際に起こりますか?


白では最初のポジションが勝ちますが、黒のクイーンを捕まえることは深刻な失敗です。なぜ黒がそれを放棄するのかわからない...
重複排除プログラム2017年

現在、私は最高の動きについて話しているのではなく、単なる例です。
Wais Kamal 2017

回答:


15

6個までゲームをプレイ

ストックフィッシュはそれをしません、それはテーブルベースの目的ではありません。簡単に言うと、tablebaseは、6人のポジションがボードに到達するかなり前にエンジン検索を向上させます。

演習をして、ボードを5個追加します。これでボードに10個のピース​​ができましたが、テーブルベースで見つけることはできません。ただし、エンジンフィッシュ中にStockfishが6個にトレードダウンするときはいつでも、すぐにテーブルベース情報を使用できます。テーブルベースの情報は、5ピースのようなものに下がることなく、ポジションが勝ち/負け/引き分けであるかどうかをStockfishに提供します。したがって、検索はより高速で効率的です。

編集:

関連するコードは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::CardinalityStockfishのデフォルトは6です。Stockfishは個数をチェックし、6個以下の場合はテーブルベース情報を調べます。それ以外の場合は、定期的に検索します。


では、ストックフィッシュは、ボード上の6個のポジションに到達する前にテーブルベースを調べますか?
Wais Kamal 2017

@WaisKamal私は関連するコードで更新しました。SFがチェックを行います。
SmallChess 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.