← カタログへ戻る #181

ベネット圧縮

Bennettのpebble gameでメモリと時間のトレードオフを体感する

背景: Bennett (1989) は n ステップの計算を k 個のpebble (= 中間値を保存できる枠) で可逆実行できることを示した。前進ステップは隣の空きマスにpebbleを置き、後退ステップは置いてあるpebbleを消す。目標: 最終ステップ n にpebbleを到達させ、それ以外を全て消去 (ガベージなし)。
ステージ: 1/6 段数 n: 3 上限 k: 2 使用中: 0 手数: 0 最良: --

Pebble Game

盤面の各マスは計算ステップ。隣接する空きマスにpebbleを置く=forward
置いてあるpebbleを消す=uncompute (隣にpebbleがあるときのみ)。
最終ステップに到達し、他のpebbleを全て消去すれば clear。

ヒント: 一直線にpebbleを並べると上限kを超える。Bennettの再帰戦略では「半分まで進む→半分まで戻る」を入れ子に行うと少ないkで済む。

操作

クリック マスにpebbleを置く / 取る UNDO 1手戻す HINT 次に押すべきマスを点滅 RESET ステージ最初から

各ステップ i のpebbleを操作する規則:

Y Lab tieup: Bennett 1989の可逆チューリング機械の時空トレードオフを直接シミュレート。横山研の可逆計算理論 (R-WHILE/Janus等) で、不可逆プログラムを最小ガベージで可逆化する基本テクニック。