0

我试图用Java制作一个Langton's ant(http://en.wikipedia.org/wiki/Langton's_ant)程序。我最初想到了一个只有两种颜色的简单实现 - 因此是一个布尔网格 - 或一个布尔值二维数组。

这里似乎有一个问题——网格需要在运行时构建——即用户输入网格长度的值。

这意味着我不能获取超过特定值的网格值 - 因为它会在 Java 堆上引发 Out of memory 错误。

我最多可以制作的典型网格是(30,000 * 30,0000)。

我正在考虑解决这个问题的方法,以至少使网格达到 2^32*2^32..

有人可以提供即兴算法的建议吗?还是其他优化?

虽然我的问题是针对一个特定问题的......我猜想解决这个问题的策略可能与许多此类问题相匹配。

谢谢

4

1 回答 1

0

您不需要为此在内存中分配和保存矩阵。您只能在节点列表中维护访问过的位置。一个节点将具有如下信息:xy坐标(来自虚拟矩阵)和color. 这样你的蚂蚁只需要知道她在虚拟矩阵中的位置(xy),并且需要遵循的方向将根据蚂蚁所在节点的颜色来计算。

于 2012-10-30T18:08:21.937 回答