Ва-Тор похож на клеточные автоматы.В каком порядке должны обновляться ячейки? - PullRequest
3 голосов
/ 12 января 2012

Некоторое время назад я написал Wa-Tor, похожий на клеточные автоматы ( см. Wikipedia ), но с еще несколькими видами и немного более умными видами. За исключением большого количества тонкой настройки, чтобы получить стабильную систему, это было довольно просто и работало хорошо. Однако с тех пор я спрашиваю себя (а теперь и вас), как обновлять ячейки "реалистично".

Мой «мир» был сеткой и всегда обновлялся с левого верхнего до правого нижнего. ИМО это также означает, что ячейки, которые находятся ближе к верху и слева, всегда быстрее. Так, например рыба в клетке [3, 3] может быть съедена акулой в [3, 2] перед обновлением. Если бы клетки имели противоположные позиции, рыба всегда убегала бы от акулы, так как она может отойти от акулы, прежде чем ее обновят.

Я прав, что это «проблема» (или, по крайней мере, нереальная)?

IMO в реалистичной обстановке все ячейки должны обновляться одновременно, но я не знаю, как реализовать что-то подобное. Еще один метод, который я могу себе представить, это оценить клетки в «перемешанном» порядке.

Как бы вы решили эту проблему / как обычно решаются такие проблемы?

Ответы [ 2 ]

1 голос
/ 15 января 2012

Как упоминает @Rogach, одновременные обновления не будут работать.Поскольку ваши клеточные автоматы недетерминированы, две рыбы не будут знать следующую позицию друг друга и могут столкнуться.

Я думаю, что лучшим решением, учитывая, что ваши клеточные автоматы недетерминированы, является обновлениеваша сетка недетерминированным способом, т.е.случайным образом.Выберите случайные ячейки для обновления.Либо выбирайте ячейки случайным образом и отслеживайте, какие из них вы обновили, чтобы каждая ячейка обновлялась ровно один раз за такт, либо выбирайте ячейки случайным образом и не следите за их отслеживанием.Второй подход был бы проще, но рискует, что некоторые ячейки будут обновляться немного чаще.В среднем все ячейки обновлялись бы одинаково, если бы вы имели равномерно распределенную случайную функцию.

1 голос
/ 13 января 2012

В реалистичной настройке ИМО все ячейки должны обновляться одновременно, но я не знаю, как реализовать что-то подобное.

Это подход, который я бы предложил. Есть две сетки: «старая» и «новая / текущая». При расчете следующего поколения основывайте свои расчеты на старой сетке и записывайте результаты в новую сетку. Затем отобразите новую сетку. Теперь поменяйте местами указатели так, чтобы новая сетка стала «старой», а старая стала новой сеткой. Повторите.

...