Какой алгоритм я могу реализовать для ускорения моделирования сотовых автоматов? - PullRequest
3 голосов
/ 27 октября 2009

Я пишу няни на основе C.A. симулятор для (почти) любого вида C.A. который использует окрестности Мура или Неймана.

С текущими (жестко закодированными и наиболее очевидными [текущими функциями состояния]) моделирование работает довольно хорошо; пока экран не заполнится «включенными» (или какими-либо активными) ячейками.

Итак, мой вопрос: Существуют ли эффективные алгоритмы для обработки хотя бы жизненных правил? или поколения, взвешенная жизнь / поколения ...

Спасибо.

Ответы [ 3 ]

3 голосов
/ 27 октября 2009

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

1 голос
/ 27 октября 2009

Вы можете изучить алгоритм HashLife и попытаться адаптировать его концепцию к любым автоматам, над которыми вы работаете.

1 голос
/ 27 октября 2009

Я думаю, что написание конечных автоматов - это не столько проблема проектирования алгоритмов, сколько проблема написания чистого и безошибочного кода. То, что вы, вероятно, ищете, это реализация клеточных автоматов / диаграмма состояний.

http://www.state -machine.com / // http://www.boost.org/doc/libs/1_40_0/libs/statechart/doc/index.html

Вы также можете попробовать без Python без стека http://stackless.com/. Он может использоваться для конечных автоматов или CA. Здесь http://members.verizon.net/olsongt/stackless/why_stackless.html#the-factory это учебное пособие по внедрению симуляции заводского процесса без стеков

...