Об управлении продуктами, бизнесе и увлечениях

Клеточный автомат

Введение

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

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

Например, изучая принципы работы мозга человечество создало искуственные нейронные сети, которые используются для таргетирования рекламы на вашей ленте. Другой пример — летающие роботы, которых создали изучая поведения летучих мышей.

Сегодня хочу рассказать подробнее про то, как компьютерная наука имитирует функции клеток.

Клеточный автомат

Клеточный автомат — это модель; попытка человечества имитировать поведение клеток.

Возьмем некий отрезок биологической ткани и разложим на сетке. Представим, что в каждой ячейке этой сетки сидит клетка. У каждой этой клетки есть соседи — другие клетки. Также у каждой клетки есть свое состояние — живая (1) или мертвая (0).

На примере выше мы смотрели на двухмерную сетку, но эти сетки могут быть многомерными. Но для простоты мы далее рассмотрим одномерную сетку.

Как и в примере выше, у каждой клетки в одномерной сетке есть соседи — клетка справа и слева (за исключением самых крайних двух). Также состояние каждой клетки мы обозначим 1 (живая клетка) или нулем (мертвая клетка).

Чтобы проследить как эти клетки меняются со временем (эволюционируют), нам необходимо внедрить понятие времени. Все клетки в нашей первичной сетке живут в одном и том же времени; принадлежат одному поколению. Значит новое поколение мы можем показать другой сеткой такой же длины и вставить ниже. Так мы создадим несколько поколений.

Итак, мы разобрались с приницпами существования клеток в пространстве компьютерных битов. Оставется важный вопрос: как меняются новые поколения?

Правило 184

Это, пожалуй, самая важная часть клеточных автоматов. Представим, что состояние (0 или 1) одной клетки в поколении определяется тремя соседствующими клетками предыдущего поколения.

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

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

Это и есть «Правило 184».

Есть множество таких правил, которые можно применить для имитации разных феноменов. Например, одно из таких правил создает узоры как у улиток.

Применение

Закончим с теорией и перейдем к программированию и визуализации клеточных автоматов по правиле 184. Мы нарисуем мертвую клетку белым цветом, а живую черным. Каждая строка — это одно поколение.

На картинке видно как скопление клеток в первых поколениях (верхняя строка) «движется» налево. Если представить мир автомобилей, то это скопление автомобилей переходит назад, или другими словами, дорожная пробка притормаживает движение автомобилей сзади.

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

Эпилог

Мы рассмотрели самый простой пример клеточного автомата. С более сложными моделями можно создать целый мир клеток, которые могут существовать «сами по себе» — размножаться, питаться, и умирать.

Send
Share
Pin