技術文章ゲーム・パズル関係


 

 

ビット演算(ビットボード)によるライフゲーム高速化
Nobuhide Tsuda
23-Dec-2012

概要

 単純な遷移ルールによる2次元セル・オートマトンである Conway's Game of Life(ライフ・ゲーム)の次世代状態計算を行う高速なアルゴリズムを調査・考案・実装・評価した。
ビットボード演算により8近傍のON状態数をカウントすることで、条件分岐をまったく使用せず多くのビットをパラレルに処理することができる。
本稿では32ビット長までの実装・計測を行なったが、レジスタのビット数に比例した処理速度を得ることが出来るので、 SSE の128ビットレジスタを使用すれば、テーブルを引く方法のように多量のメモリを使用することもなく、さらに4倍程度の高速化も可能である。

ライフゲーム

データ構造

次世代状態計算(定義通りの自然な方法)

次世代状態計算(テーブルを引く方法)

次世代状態計算(ビットボードを使用する方法)

次世代状態計算(より高速な方法)

次世代状態計算(もうちょい高速な方法)

次世代状態計算(アイデア倒れな方法)

パフォーマンス測定結果

評価・考察・今後の課題

余談

まとめ