2012-10-30 2 views
0

Java에서 Langton의 ant (http://en.wikipedia.org/wiki/Langton's_ant) 프로그램을 만들려고했습니다. 처음에는 단순한 두 가지 색상으로 단순한 구현을 생각했습니다. - 부울 그리드 또는 부울 2D 배열.Langton의 개미에서 JVM 힙 크기 오류가 발생했습니다.

여기에 문제가있는 것 같습니다. 그리드는 런타임에 구성해야합니다. 즉, 사용자가 그리드 길이의 값을 입력해야합니다.

즉, Java 힙에 메모리 부족 오류가 발생하므로 특정 값 이상으로 모눈 값을 가져올 수 없습니다.

내가 작성할 수있는 일반적인 그리드는 (30,000 * 30,0000)입니다.

나는 그리드에 도달이어야이 이런 문제점을 극복 할 수있는 방법에 대해 생각하고 있었다 2^32 * 2^32 ..

누군가가 알고리즘을 즉석 제안을 제공 할 수 있습니까? 아니면 다른 최적화?

내 질문은 특정 문제에만 국한되지만 ...이 문제를 해결하기위한 전략은 이러한 많은 문제와 일치 할 수 있습니다.

감사합니다.

답변

0

메모리에 매트릭스를 할당하고 보유 할 필요가 없습니다. 노드 목록에서 방문 위치 만 유지할 수 있습니다. 노드는 xy 좌표 (가상 행렬로부터)와 color과 같은 정보를 갖습니다. 이 방법은 개미가 가상 행렬에서 자신의 위치 (xy)를 알아야하기 때문에 따라야하는 방향은 개미가 앉아있는 노드의 색상을 기반으로 계산됩니다.