ISSN 1810-0198. Вестник ТГУ, т.13, вып.1, 2008 РЕАЛИЗАЦИЯ ТРЕХМЕРНОГО КЛЕТОЧНОГО АВТОМАТА В.В. Хлебников, А.Е. Горюшин Учитывая, что многие биологические, физические и другие объекты представляют собой дискретные структуры, состоящие из отдельных, сравнительно простых элементов – «клеток», то представляет интерес разработка программ, которые на основе правил взаимодействия между ними порождают различные морфологические структуры. Одним из таких приемов являются клеточные автоматы, т. к. они способны порождать сложное поведение при использовании простого набора правил. Идея клеточных автоматов появилась в конце 40-х гг. XX в. Она была задумана и сформулирована Джоном фон Нейманом и Конрадом Цусе независимо друг от друга как универсальная вычислительная среда для построения, анализа и сравнения характеристик алгоритмов. Так, клеточные автоматы являются дискретными динамическими системами, поведение которых полностью определяется в терминах локальных зависимостей. В значительной степени также обстоит дело для большого класса непрерывных динамических систем, определенных уравнениями в частных производных. В этом смысле клеточные автоматы в информатике являются аналогом физического понятия «поля». Т.о. клеточный автомат может мыслиться как стилизованный мир. В данной работе пространство представлено равномерной сеткой, каждая ячейка которой содержит несколько битов данных; время идет вперед дискретными шагами, а законы мира выражаются единственным набором правил, скажем, справочной таблицей, по которой любая клетка на каждом шаге вычисляет своё новое состояние по состояниям её близких соседей. Таким образом, законы системы являются локальными и повсюду одинаковыми. «Локальный» означает, что для того, чтобы узнать, что произойдет мгновение спустя, достаточно посмотреть на состояние ближайшего окружения: никакое дальнодействие не допускается. «Одинаковость» означает, что законы везде одни и те же, и можно отличить одно место от другого только по форме ландшафта, а не по какой-то разнице в законах. В общем случае клеточные автоматы обладают следующими свойствами: − изменения значений всех клеток происходят одновременно после вычисления нового состояния каждой клетки решетки; − решетка однородна – невозможно различить какие-либо две области решетки по ландшафту; − взаимодействия локальны. Лишь клетки окрестности (как правило, соседние) способны повлиять на данную клетку; − множество состояний клетки конечно. Клеточные автоматы можно реализовать разными способами. В данной работе был применен следующий подход: 1. Вводятся два массива для хранения состояний клеток. Первый из них содержит текущее состояние каждой клетки. Второй массив предназначен для хранения нового ее состояния. 114 2. Определяется система правил клетки решетки. Для определения следующего ее состояния в качестве параметров в функцию переходов передаются текущие значения состояний клеток окрестности, возможно, включая ее саму. 3. На нулевом шаге производится заполнение решетки (первого массива) начальными данными. Для выбранных решетки и функции переходов клетки это полностью определяет поведение системы. 4. Просчет следующего состояния клеточного автомата. 5. После завершения итерации значения из всех элементов второго массива переносятся в первый массив. Второй массив очищается. 6. Осуществляется трехмерная визуализация содержимого клеточного автомата. В зависимости от выбора пользователя отображаться могут и слои клеточного автомата. 7. Выполняется переход к пункту 4. Таким образом, целью данной работы было разработать программную реализацию трехмерного клеточного автомата и подготовить программу для работы с ним. Также необходимыми условиями являлись возможность пользователя настройки системы правил клеточного автомата, осуществление 3D-визуализации работы, осуществление послойной визуализации работы. Для осуществления программной реализации была выбрана среда разработки Borland Delphi 7, как полностью удовлетворявшая необходимым требованиям. Для реализации трехмерной визуализации использовался OpenGL. В полученной программе пользователь имеет возможность настроить систему правил клеточного автомата перед началом работы. Настройка правил заключается в выборе соседних клеток, служащих окрестностью для выбранной клетки, также осуществляется выбор пользователем числа «живых» клеток в окрестности, при котором происходит рождение новой, смерть «живой» клетки из-за перенаселенности или же выживание клетки. Настраивается также размерность клеточного автомата и начальное заполнение «живыми» клетками. Начальное состояние клеточного автомата может быть сгенерировано случайным образом или установлено пользователем в ручном режиме. Для удобства пользователя систему правил клеточного автомата можно сохранять в текстовый файл и загружать из него. Также во время работы можно сохранять трехмерную и послойные визуализации в графические файлы. Таким образом, в данной работе была разработана программа реализации трехмерного клеточного автомата. Данная программа позволяет осуществлять как 3Dвизуализацию клеточного автомата, так и каждого слоя в отдельности. Также имеется возможность вывода на экран графика изменения численности клеток во времени. Просчет клеточного автомата может производиться как в пошаговом, так и в автоматическом режиме. Поступила в редакцию 23 декабря 2007 г.