私は最近よく考えていたコンピュータ サイエンスの問題を抱えており、他の人のフィードバックを聞きたいと思っています。
3D ブロックワールド (Minecraft など) があるとします。任意のブロックについて、そのブロックからブロックの一番下の行への確実なパスが存在する場合、その世界は「安定」しています。世界が生成されたとき、それは安定していることが保証されていますが、プレイヤーがブロックを掘り起こしていると、世界が不安定になる可能性があります. たとえば、プレイヤーは木の幹を掘り出すことができます。その場合、木のてっぺんが空中に浮かんでいるため、世界が不安定になります。
目標は、掘削の結果として世界が不安定になるかどうか、および世界を安定した状態に戻すためにどのキューブを削除する必要があるかをすばやく把握することです。アルゴリズムは高速であり、多くの発掘が行われている世界のコンテキストで機能する必要があります。そのほとんどは世界を不安定にするものではありません。
単純なアプローチの 1 つは、掘削後に隣接する各キューブを取り、地底への道を見つけることです。隣人から底への道が見つからない場合、世界は不安定です (また、プロセスの一部としてどのキューブを削除するかを学習します)。底への道が非常に長い場合、これは崩壊します。これが計算コストが高くなる例を思いつくのは非常に簡単です (大きな曲がりくねった塔の上部を取り除くことを想像してください)。
この問題は、1 つの頂点がグラフを 2 つ以上のコンポーネントに分割できるかどうかをすばやく検出するグラフの問題と考えることができます。
この問題を扱いやすくする方法について他のアイデアを持っている人がいるかどうかを知りたいです。