2012-10-30 29 views
0

我正在嘗試在Java中創建一個Langton的螞蟻(http://en.wikipedia.org/wiki/Langton's_ant)程序。我最初認爲只有兩種顏色 - 因此是布爾網格或布爾二維數組。Langton的螞蟻中的JVM堆大小錯誤

這裏似乎存在一個問題 - 網格需要在運行時構建 - 也就是說,用戶輸入網格長度的值。

這意味着我不能採取超過特定值的網格值 - 因爲它會在Java堆上拋出內存不足錯誤。

我最大可以製作的典型網格是(30,000 * 30,0000)。

我在想辦法解決這個問題ATLEAST使電網達到2^32 * 2^32 ..

有人能提供建議,以即興的算法?還是有其他優化?

雖然我的問題是特定於一個特定的問題......我猜策略繞過這個問題可能會在很多這樣的問題匹配。

感謝

回答

0

你並不需要分配和保留在內存中的矩陣這一點。您只能在節點列表中維護訪問位置。節點將具有如下信息:xy座標(來自虛擬矩陣)和color。 這樣,你的螞蟻只需要知道她在虛擬矩陣中的位置(xy),並且需要遵循的方向將根據螞蟻所處的節點的顏色來計算。