分散アルファベータプルーニング


19

私は、分散アーキテクチャでアルファ-ベータプルーニングを使用してチェスのミニマックス検索ツリーを処理できる効率的なアルゴリズムを探しています。私が見つけたアルゴリズム(PVS、YBWC、DTSは下記参照)はすべてかなり古い(1990年が最新)。それ以来、多くの大きな進歩があったと思います。この分野の現在の標準は何ですか?

また、私が読んだ研究論文からは理解できないので、DTSについての馬鹿の説明を教えてください。

上記のアルゴリズム:

  • PVS:原理変動の分割
  • YBWC:ヤングブラザーズウェイトコンセプト
  • DTS:動的なツリー分割

ここですべて議論されます


多分これは興味深い読み物です:chessbase.com/newsdetail.asp?newsid
アレックス10ブリンク

2
さて、これは特に難しい問題です(ミニマックス検索またはその変形の並列化)。今年リチャード・コーフが発表した「コンビナトリアル検索の研究課題」と題する論文で、次のように読むことができます。効率的に、常にそれを作るアルゴリズムが...そこにある
カルロス・リナレス・ロペス

だから、私は非常に謙虚な第4学期のコンピュータサイエンスの学部生だと考えると、シリアル化されたアルゴリズムに行くべきですか、それとも受け入れ可能な準線形の高速化を期待すべきですか?
wirate

返信が遅れて申し訳ありませんが、これは受信ボックスでまったく気付かれずに通過しました。実際のところ、最終的な節約は、評価関数によって検索ツリーのリーフに割り当てられたスコアの分布に完全に依存すると予想されます。一般に、分散検索アルゴリズムがシリアル化されたアルファベータ検索アルゴリズムよりも大幅に優れたパフォーマンスを発揮するという保証はありません。したがって、私は間違いなく実現可能な(などの注文が移動すると、移調テーブル、)など、多くの機能強化として、しようとし、それをシリアル化されたバージョンのために行くだろう
カルロス・リナレス・ロペス

パラレルアルファベータ版(基本的にはリンク先のWikiページで説明されているとおり)である程度成功しました。
ジェレミーリスト

回答:


3

はい、理論は大幅に進歩しました。チェス分析の文献と一般的な並列プログラミング技術の両方のおかげです。分散クラスター/並列処理での(チェス)アルファベータプルーニングに関するいくつかの新しいリファレンスがあります。また、初期の分散コンピューティングチェスの文献のいくつかは、多くの基本的な並列設計パターンに先行しており、そのフレームワーク内で概念化できます。

DTSの背後にある基本的な考え方は、検索ツリーが移動/レイアウトの複雑さに基づいて計算ノードに分散されることです。「早期に終了」する未使用のプロセッサは、初期割り当てを超えて追加作業を行うことができます。初期割り当ては、最初は可能な限り均等に分散できますが、不均一になります。したがって、基本的に一種の「負荷分散」および「プロデューサー/コンシューマー」キュー、またはジョブスケジューリングに似ています。

このアイドルプロセッサは、(共有メモリを使用して)アイドル状態であることをブロードキャストし、他のプロセッサがツリーの検索を終了するのを「支援」するために使用できます。ビジープロセッサは「ツリーの状態」データを収集し、共有メモリに保存して、アイドルプロセッサが検査できるようにします。このアイドルプロセッサはこのデータを分析し、使用中のプロセッサのどれが、検索を支援するのに効率的であるほど十分に複雑なツリーを持っていると思われるかを決定します。そのような位置が見つかった場合、アイドルプロセッサはそのノードを所有するプロセッサに通知し、力を「結合」します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.