シミュレーション・制御・実機
制約で地図を生む——あなたが制御面だ(Wave Function Collapse)
二つの規則だけの小さな世界である。タイルは海・浜・陸の3種類、そして規則はたった一つ——海と陸は隣り合えない(必ず浜を挟む)。この制約に従って、ソルバ(Wave Function Collapse)が一貫した地図を生成する。下のグリッドで、実際に触れる。
セルをクリックすると、未指定 → 海 → 浜 → 陸 → 未指定 と切り替わる。いくつか固定して「生成」を押してほしい。ソルバはあなたの固定(制約)を尊重して周りを埋め、海と陸を直接隣り合わせるような矛盾した制約には、地図を捏造せず「解なし」と正直に答える。生成そのものは易しい。難しくて価値があるのは——狙ったものを作ること、つまり制御の側だ。あなたが、その制御面である。
セルをクリック(またはキーボードで選び Enter)して海・浜・陸を固定し、「生成」を押す
仕組み——どんな規則で動いているか(クリックで展開)
考え方はごく単純である。グリッドの各セルは、最初「海・浜・陸のどれにでもなれる」という未確定の状態で始まる。ここで効いてくる規則はただ一つ——海と陸は隣り合えない(あいだに必ず浜が要る)。この一行の制約だけで、地図全体の形が決まっていく。
ソルバの手順は次の通りである。
- 最も迷いの少ないセルを選ぶ。 まだ複数の候補が残るセルのうち、選択肢が最も少ないもの(情報理論でいう「エントロピーが最も低い」セル)を一つ選ぶ。最も確定に近いところから手をつける、という発想である。
- そのセルを一つに決める(収縮=collapse)。 残った候補の中から一つを選び、そのセルのタイルを確定させる。波動関数の収縮になぞらえて Wave Function Collapse と呼ばれる所以である。
- 制約を周りへ伝える(伝播=propagation)。 確定したセルに隣接するセルから、規則に反する候補を消す。たとえば海に確定したセルの隣からは「陸」が消え、「海」か「浜」だけが残る。候補が減ったセルがあれば、そのさらに隣へと、影響が玉突きに広がっていく。
- 1〜3を、すべてのセルが確定するまで繰り返す。 どこかのセルの候補がゼロになったら、それは矛盾である——その制約のもとでは整合する地図が存在しない。そのときはやり直す(種を変えて再試行する)か、固定が本質的に矛盾していれば正直に「解なし」と返す。地図を捏造しないのは、この一点を踏み外さないからである。
あなたがセルを固定するという行為は、手順1の前にいくつかのセルを先に確定させておくことに等しい。ソルバはその固定を動かせない制約として受け取り、残りをその制約と矛盾しないように埋める。だから固定が穏当なら意図どおりの地図が出るし、海と陸を直接隣り合わせるような固定を置けば、手順4で矛盾に突き当たり「解なし」と返ってくる。重い数式は要らない——「最も迷いの少ないところから決め、決めたら周りに伝える」、本質はそれだけである。
制約伝播と観測は決定論的で、現れる地図はあなたの固定と種で決まる。同じルールから別の地図がいくらでも出るのに、狙った地図を出すことだけが難しい——制御面が成果物であって、生成ではない、という一点を、制約という形で触れるようにした。
この記事はAIが下書きし、人間が編集・公開しています。