КЛЕТОЧНЫЕ АВТОМАТЫ И МОДЕЛИРОВАНИЕ - Студенческий научный форум

IX Международная студенческая научная конференция Студенческий научный форум - 2017

КЛЕТОЧНЫЕ АВТОМАТЫ И МОДЕЛИРОВАНИЕ

Рыженков А.А. 1
1Ухтинский государственный технический университет
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
Введение

Наш мир очень сложен и непредсказуем. Смоделировать его поистине невозможно. Но, благо, существует такая вещь как клеточные автоматы, предназначенные именно на модуляцию мира, а вернее его кокой-либо части. С помощью абстракций и определённых правил удается достаточно точно отобразить ту или иную сферу, благодаря клеточным автоматам. В данной работе постараемся взглянуть на одну из частей нашего мира, воплощающуюся в клеточный автомат-игру «Жизнь» [1].

Изучение клеточных автоматов

Клеточный автомат – дискретная модель, изучаемая в математике, теории вычислимости, физике, теоретической биологии и микромеханике. Включает регулярную решётку ячеек, каждая из которых может находиться в одном из конечного множества состояний, таких как 1 и 0. Решетка может быть любой размерности. Для каждой ячейки определено множество ячеек, называемых окрестностью [2].

Для работы клеточного автомата требуется задание начального состояния всех ячеек и правил перехода ячеек из одного состояния в другое.

Изучение игры «Жизнь»

Игра «Жизнь» представляет собой таблицу, размерами вплоть до бесконечности, каждая клеточка которой либо жива (ячейка закрашена), либо мертва (ячейка пуста). Окрестностью каждой клетки представляет собой 8 клеток сверху, снизу и по диагонали от данной клетки.

Игра работает по следующим правилам:

  1. В пустой (мёртвой) клетке, в окрестности которой ровно три живые клетки, зарождается жизнь (она оживает, закрашивается);

  2. Если у живой клетки есть две или три живые соседки, то эта клетка продолжает жить;

  3. В противном случае (если соседей меньше двух или больше трёх) клетка умирает («от одиночества» или «от перенаселённости») [3].

Таким образом игра воплощает связь математики и жизни, и моделирует простейшую и в то же время завораживающую симуляцию жизни.

Реализация программы

В рамках данной работы было решено разработать программу воссоздающую игру «Жизнь». Данная игра была написана на языке C# работающем на .NET Framework 4.6, с применением объектно-ориентированного программирования. Программный код был написан авторами полностью самостоятельно, и в течении некоторого времени модифицировался и развивался.

При запуске пользователю представляется пустая таблица, куда методом кликов можно задать начальные входные параметры (Рисунок 1).

Рисунок 1 – Входные параметры

В данном случае поле было заполнено случайными значениями. Зафиксируем жизнь на следующем шаге (Рисунок 2):

Рисунок 2 – Первый цикл жизни

Данная картинка получилась путём применения всех правил игры «Жизнь» ко всем ячейкам, и следующий этап был вычислен математически. Проследим за жизнью, сколько циклов просуществует данные входные параметры (Рисунок 3):

Рисунок 3 – Шестьдесят второй цикл

Итак, на 62 цикл программа перестала изменяться, данные входные параметры просуществовали 62 изменяющихся и непохожих друг на друга «дня», и теперь всё стало статично. Данные 3 получившиеся фигуры, без внешних вмешательств, вечны.

Вообще в данной игре есть множество классов фигур, а самих разновидностей фигур бесчисленное множество.

Классификации фигур

В игре «Жизнь» существуют бесконечное множество форм и фигур, и в зависимости от их поведения, можно их разделить на некоторые классы:

Статичные фигуры:

Данные фигуры не изменяют своё положение в течении времени, если на них не повлияют другие фигуры. В данном случае ярким примером станет уже имеющаяся картинка (Рисунок 3).

Циклические фигуры:

Данные фигуры меняют своё состояние со временем, но возвращаются в исходное состояние за конечное количество поколений (Рисунок 4).

Рисунок 4 – Циклические фигуры

Интерактивные фигуры:

Данные фигуры меняют своё состояние во времени, при этом, как бы перемещаясь по полю (Рисунок 5).

Рисунок 5 – «Бегущий» планер

Под данные классы можно отнести все возможные фигуры игры.

Итог

Данный клеточный автомат-игра довольно просто, и очень лаконично переносит жизнь на что-то похожее на тетрадный лист, и когда выставляются первоначальные клетки, пользователь уже в предвкушении: «что же принесёт данная комбинация», и затем, после запуска, оно оживает. Игра радует зрителя своими причудливыми формами и орнаментами. Это находка сочетающая математику и жизнь.

Моделирование

Но только ли на это способна данная игра? А что будет если поменять «правила»? Всё сломается? На данные вопросы помог найти ответ эксперимент, который позволил с новой стороны взглянуть на данный продукт.

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

Для этого, для начала, была выбрана примерная заготовка, к которой будут применяться различные правила (Рисунок 6).

Рисунок 6 – Заготовка

Если применить данную заготовку на классические правила игры «Жизнь» через 5 поколений всё «вымрет». Изменим правила. Отключим смертность от перенаселения (4 и более соседей), все остальные параметры, заготовка, неизменны (Рисунок 7).

Рисунок 7 – Смерть 0-1, жизнь 3, остальное неизменность

Получили фрактал. Попробуем другие правила.

Рисунок 8 – Смерть 0-1, 7-8, жизнь 3

Данные фракталы – статичны. На данных этапах они останавливаются и дальше изменения не следуют.

Множество фракталов строятся именно на правилах смертности при 0 или 1 соседе, оживлении при 3 соседях, и начиная от 4 соседей вплоть до всех 8 варьируется смертность. В зависимости от смертности, фракталы изменяют свою плотность заполнения, и вообще возможность создания законченной версии, так как при некоторых правилах запущенная конструкция уже никогда не останавливается, но интересны те фракталы, которые получаются при каждом шаге. Начинается всё с небольшой модели (Рисунок 9), затем фрактал разрастается (Рисунок 10), и, в конце концов, достигая границ, симметрия разрушается, и получается безостановочное беспорядочное движение (Рисунок 11). Данный автомат настроен следующим образом: смерть при количестве соседей 0, и с 4 до 8, оживление всё также при 3.

Рисунок 9 – Стоп-кадр №1 бесконечно развивающегося фрактала

Рисунок 10 – Стоп-кадр №2 бесконечно развивающегося фрактала

Рисунок 11 – Стоп-кадр №3 бесконечно развивающегося фрактала

Также есть некоторые правила, при которых заготовка строит нечто похожее на лабиринт. В том случае, правила также не позволяют фракталу остановиться в развитии, но при этом правила замораживают внутреннюю часть математической модели (Рисунок 12). В данном случае установки таковы: смерть при 0-1 и 6-8 соседей, оживление, как всегда 3.

Рисунок 12 – Фрактал-лабиринт

Таким образом, данная игра «Жизнь», путём изменения правил и установок, даже на одних и тех же входных параметрах, даёт совершенно различные выходные значения, каждое из которых может быть применено для различных целей моделирования. Модифицированная таким образом игра «Жизнь», это огромный полигон для испытаний моделирования.

Список использованной литературы

  1. Простейшие клеточные автоматы и их практическое применение [Электронный ресурс] // Хабрахабр – Электрон. дан. – [Б. м.], 2016. – URL: https://habrahabr.ru/post/273393/ (дата обращения: 07.12.2016).

  2. Клеточный автомат [Электронный ресурс] // Википедия : свободная энцикл. – Электрон. дан. – [Б. м.], 2016. – URL: https://ru.wikipedia.org/wiki/Клеточный_автомат (дата обращения: 07.12.2016);

  3. Жизнь (игра) [Электронный ресурс] // Википедия : свободная энцикл. – Электрон. дан. – [Б. м.], 2016. – URL: https://ru.wikipedia.org/wiki/Жизнь_(игра) (дата обращения: 07.12.2016);

Просмотров работы: 350