解説
ビットボード は、チェス盤上のマスの集合を64ビットの数で表す。ビットとは0または1だけを保持できる情報単位である。チェス盤には64マスあるため、各マスに1ビットを割り当てられる。
白ポーンのマスク
各マスに1ビット
固定されたローカル規約では、指標を から までランクごとに読み、次に から へ進み、そのまま から まで続ける。1は集合に属することを示す。表示する集合、白ポーン: 00000000/00000000/00000000/00000000/00000000/00101000/10000001/00000000。手番とその他のFENデータは、このマスクには含まれない。
値1は必ずしも駒があることを意味しない。そのマスが、そのビットボードの表す集合に属するという意味である。白ポーンすべて、ナイトが攻撃する全マス、占有マスすべて、またはほかの有用な集合を示せる。
ナイトの攻撃マスク
駒のないマスにも1
同じランク順の規約を用いる。表示する集合、 の白ナイトが攻撃するマス: 00000000/00000000/00101000/01000100/00000000/01000100/00101000/00000000。1は、そのマスに駒がなくても幾何学的な性質を表す。
は通常、複数のビットボードを同時に保持する。0と1を直接組み合わせるビット演算により、集合の積や和、マスの除外、パターンのシフトを、ごく少ないプロセッサー命令で実行できる。これは高速な合法手生成と攻撃生成に役立つ。
攻撃と占有の共通部分
A ∩ Bの結果
すでに示したランク順の規約では、Aは の白ルークが攻撃するマスの集合、Bは黒駒が占めるマスの集合である。表示する集合はA ∩ B: 00000000/00000000/00000000/00010000/00000000/00000000/00000000/00000001。1になっているビットは と に対応する。 の黒キングはBには属するが、Aには属さない。
一つのビットボードだけでは保持しない情報
- ほかのビットボードで区別しない限り、すべての駒種。
- どちらの手番か。
- の権利、つまりキングとルークによる特別な手がまだ許されるかどうかと、アンパッサンが可能かどうか。アンパッサンはポーンによる特別な捕獲である。
完全な局面は、こうした事実を複数の集合と組み合わせる。ビットボードは のような探索手法でもなく、情報の表現方式である。
よくある混同
ビットボードと完全な盤面状態
一つのビットボードは通常、一つのマス集合を表す。完全な局面は複数の集合とほかの状態情報を組み合わせる。
ビットボードとビットベース
ビットボードは一局面内のマスを表し、ビットベースは多数のエンドゲーム局面の結果を保存する。
用語を見る出典
- 1.Bitboards, Chess Programming Wiki
- 2.bitboard.h, Stockfish
