0

Java で Langton's ant (http://en.wikipedia.org/wiki/Langton's_ant) プログラムを作成しようとしていました。 2D 配列。

ここに問題があるようです。実行時にグリッドを構築する必要があります。つまり、ユーザーはグリッドの長さの値を入力します。

つまり、Java ヒープでメモリ不足エラーがスローされるため、特定の値を超えるグリッド値を取ることはできません。

最大で作成できる典型的なグリッドは (30,000*30,0000) です。

この問題を回避して、少なくともグリッドが 2^32*2^32 になるようにする方法を考えていました。

誰かがアルゴリズムを即興で提案することはできますか? または他の最適化?

私の質問は特定の問題に固有のものですが...この問題を回避するための戦略は、そのような多くの問題で一致する可能性があると思います。

ありがとう

4

1 に答える 1

0

このために行列をメモリに割り当てて保持する必要はありません。ノードのリストで、訪問した位置のみを維持できます。ノードには次のような情報があります:xy座標 (仮想マトリックスから) とcolor. このように、アリは仮想マトリックス内の自分の位置 (xおよびy) のみを知る必要があり、従う必要がある方向は、アリが座っているノードの色に基づいて計算されます。

于 2012-10-30T18:08:21.937 に答える