????, Хабр!
Осторожно, присутствуют мерцающие гифки. Они спрятаны под спойлеры, открывайте на своё усмотрение. На большом экране рекомендуется смотреть в хорошо освещённом помещении.
Базовая вводная
Клеточный автомат – модель, в которой состояние ячеек-клеток изменяется в зависимости от окружающих её клеток. Существует множество характеристик моделей, в каждой из которых ещё большее количество правил-конфигураций.
Самое простое представление двумерной модели включает следующие характеристики:
клетки имеют 2 состояния – жива/мертва;
клетки – квадраты без смещений;
правила изменения состояния зависят только от количества живых соседей из окрестности Мура первого порядка (8 окружающих);
правила учитывают 4 исхода для каждой клетки – рождение, выживание, смерть, пустота.
Такая категория КА называется «Life-like», по названию самого известного автомата с такими характеристиками – «Conway's Game of Life». Игра «Жизнь» Конвея работает на правиле B3/S23, т.е. для рождения клетки (Birth) требуется ровно 3 живых соседа, для выживания (Survival) – 2 или 3. Во всех других случаях клетка умирает (или же остаётся пустой).
На данных характеристиках у нас существует 218 вариантов правил. Очень немногая часть из них получила в сообществе собственные названия, сверх обычного именования нотацией. Сегодня посмотрим на нескольких интересных представителей.
0. Игра «Жизнь»
Вне счёта, для разминки начнём с классики. B3/S23
![Генерация со случайно заполненными клетками (30%) в центральных 80×80 на сетке 200×200 Генерация со случайно заполненными клетками (30%) в центральных 80×80 на сетке 200×200](https://habrastorage.org/getpro/habr/upload_files/9e6/d9a/d34/9e6d9ad34a675a46da9c76bb063b25b1.gif)
Из-за популярности автомата у него существует множество именованных паттернов/фигур. На этом примере мы видим несколько простейших:
-
Устойчивые (a.k.a. «натюрморты»):
Блоки
Ульи
и пасеки
Пруды
Караваи
Лодки
Корабли
Устойчивый пожиратель «рыболовный крючок»
Периодические мигалки
Классические планеры или глайдеры
В случайной генерации/развитии сложно поймать более изощрённые паттерны, но их ещё множество:
-
Натюрморты:
Пекарня (симметрия двойных караваев)
Длинные баржи
, лодки
и корабли
Лодочный
и корабельный
банты
Каноэ
Авианосец
Интеграл
Манго
Змея
-
Осцилляторы:
Звезда
Крест
Французский поцелуй
Часы
Октагон
Фумарола
Пентоид
Галактика Кока
Пентадекатлон
Ружья
![Ружьё Госпера – выпускает глайдеры Ружьё Госпера – выпускает глайдеры](https://habrastorage.org/getpro/habr/upload_files/091/b96/60f/091b9660f3599c6cca9035f5101afb43.gif)
Космические корабли
![](https://habrastorage.org/getpro/habr/upload_files/a86/57e/dc0/a8657edc03a75faee52cdf0a96b9784e.gif)
![](https://habrastorage.org/getpro/habr/upload_files/41a/382/c74/41a382c7412e50f3f68ea9a6a03e0b27.gif)
Паровозы – космические корабли оставляющие за собой след из других объектов
![](https://habrastorage.org/getpro/habr/upload_files/473/663/872/473663872ca764e6b35bdee82440945b.gif)
![Паровоз оставляющий за собой ружья Госпера Паровоз оставляющий за собой ружья Госпера](https://habrastorage.org/getpro/habr/upload_files/175/008/755/175008755574fe87e1d14aa0aba60a57.gif)
Грабли – паровозы оставляющие за собой след из космических кораблей
![](https://habrastorage.org/getpro/habr/upload_files/12f/6fe/338/12f6fe33899ba7646062743d9115ee8c.gif)
Поглощатели и отражатели – структуры не повреждающиеся от сталкивающихся с ними космических кораблей, уничтожая или отражая последние
И многие другие
Игра «Жизнь» стала культовой и внесла большой вклад в популяризацию клеточных автоматов. По сей день обсуждают различные возможные конфигурации объектов, а на собеседованиях могут предложить простую задачу с итерацией этого КА.
1. Лабиринт
B3/S12345
Конфигурация с почти полным заполнением, без отмирания клеток.
На генерациях со случайным началом паттерны обнаруживается очень редко.
![Генерация со случайно заполненными клетками (30%) в центральных 10×10 на сетке 200×200. Генерация со случайно заполненными клетками (30%) в центральных 10×10 на сетке 200×200.](https://habrastorage.org/getpro/habr/upload_files/2d0/bda/a9f/2d0bdaa9fccc9d6904e3143b4acbfa21.gif)
![Уникальная генерация с башней и мигалкой.
Огромная редкость при естественном росте. Уникальная генерация с башней и мигалкой.
Огромная редкость при естественном росте.](https://habrastorage.org/getpro/habr/upload_files/74c/90f/7c3/74c90f7c33ab89fabbe56a9b59222a5c.gif)
Как и с многими КА, подбор стартового состояния может дать очень впечатляющие орнаменты.
![Башни-близнецы с мигалками на каждой из сторон.
Старт с центрального 19×19 заполненного блока. Башни-близнецы с мигалками на каждой из сторон.
Старт с центрального 19×19 заполненного блока.](https://habrastorage.org/getpro/habr/upload_files/4dd/667/9be/4dd6679bef26b2d5e57769058cbb44ee.gif)
Лабиринты с модификациями
B3/S1234 (без S5)
Mazectric модификация приводит к более вытянутым коридорам, более плавному и полному распространению, а также на ней куда чаще встречаются естественные мигалки.
![](https://habrastorage.org/getpro/habr/upload_files/14b/3a6/b0e/14b3a6b0eb92fb5cd225df6da79428b7.gif)
B37/S12345 (с B7)
Лабиринт с «мышами»-мигалками. Дополнительное рождение при 7 соседях порождает бегающие по лабиринту клетки-мыши, хоть они и ограничены только прямыми коридорами, сталкиваясь друг с другом.
![](https://habrastorage.org/getpro/habr/upload_files/265/963/ee1/265963ee1975397d49b44a8a55789e34.gif)
И вместе – B37/S1234. Mazectric with mice.
![](https://habrastorage.org/getpro/habr/upload_files/de8/46e/ca7/de846eca74f7c253e00437e9d81b5fce.gif)
Интересно как мыши в этом варианте иногда "запирают" некоторые свежесгенерированные проходы лабиринта, становясь частью последнего.
2. H-деревья
B1/S012345678
Один из самых "предсказуемых" КА, не имеющий каких-либо особых паттернов сверх своего обычного вида. Потому с ним интереснее вручную задавать старт, получая определённый финальный орнамент.
![Старт с точки; до границы в каждую сторону 98 клеток. Старт с точки; до границы в каждую сторону 98 клеток.](https://habrastorage.org/getpro/habr/upload_files/236/0c0/5b2/2360c05b280da6d5f79f78a00ad6c044.gif)
![Старт с точки; до границы в каждую сторону 102 клетки. Старт с точки; до границы в каждую сторону 102 клетки.](https://habrastorage.org/getpro/habr/upload_files/d25/7f1/be1/d257f1be11249e9ece529a6306e95ddb.gif)
![Старт из углов; поле 200×200 Старт из углов; поле 200×200](https://habrastorage.org/getpro/habr/upload_files/754/67a/d31/75467ad31256569f226d04ef31d990b4.gif)
![Полностью случайный старт с 0.1% на живую клетку Полностью случайный старт с 0.1% на живую клетку](https://habrastorage.org/getpro/habr/upload_files/0ad/b51/34f/0adb5134f7d74ecead1106ea3ebc9710.gif)
3. Диамёба
B35678/S5678
Поглощающее правило с рядом известных паттернов.
![Поле 200×200; случайное распределение 50% в центральных 140×140. Поле 200×200; случайное распределение 50% в центральных 140×140.](https://habrastorage.org/getpro/habr/upload_files/0c4/c3e/300/0c4c3e30073a827b47c05029c98243d3.gif)
![Осцилляторы Осцилляторы](https://habrastorage.org/getpro/habr/upload_files/d70/913/b6b/d70913b6b70ad802af08aaae86c14b17.gif)
![Космические корабли Космические корабли](https://habrastorage.org/getpro/habr/upload_files/a9f/da4/356/a9fda435646277025b0c46c2ce06824f.gif)
![Фигуры с бесконечным ростом Фигуры с бесконечным ростом](https://habrastorage.org/getpro/habr/upload_files/ed1/f7a/e98/ed1f7ae98a1a9fdb9b2a590ce7240fd8.gif)
4. Ассимиляция
B345/S4567
Ещё одно поглощающее правило со стабильным видом. Стремится к ромбу, но не всегда заканчивает фигуру.
![Случайное 30% распределение на центральных 80×80 Случайное 30% распределение на центральных 80×80](https://habrastorage.org/getpro/habr/upload_files/e00/d8d/cc8/e00d8dcc84847eece6e5f00765593d61.gif)
![Случайное 20% распределение на центральных 180×180 Случайное 20% распределение на центральных 180×180](https://habrastorage.org/getpro/habr/upload_files/c99/9da/257/c999da25757e69441b12aa30d30a347e.gif)
На последней генерации видно, что у данного правила также присутствуют осцилляторы – пропеллеры, волны, стрелы, жуки (названия я придумал сам ¯\_(ツ)_/¯).
5. Живи свободным или умри
B2/S0
Не самое зрелищное, но концептуально интересное правило, отсылающее к девизу времён войны за независимость США (ныне официальный девиз штата Нью-Гэмпшир) – клетки выживают только если не имеют соседей, а рождаются исключительно от двух клеток.
![Случайное распределение 40×40 Случайное распределение 40×40](https://habrastorage.org/getpro/habr/upload_files/95f/836/d28/95f836d28b88fe53c8c2a282d64946fd.gif)
В правиле существует только один вид осцилляторов – дуоплеты (две клетки расположенные по диагонали друг от друга), а также несколько прочих фигур, вроде ружья и космических кораблей.
N. Семена
Отдельное правило, но упомянем вне счёта, как продолжение идеи прошлого. Здесь ещё более строгое условие выживания – B2/S. То есть, клетки никогда не выживают, только появляются новые при двух соседях.
![](https://habrastorage.org/getpro/habr/upload_files/568/44d/208/56844d208d9e67798aa39ba1638886c1.gif)
На этом правиле хорошо видны простейшие космические корабли.
6. Персидский ковёр
Продолжим идею невыживающих клеток. B234/S
Генерация со стартом с заполненного 2×2 блока
![Вид полностью соответствует наименованию Вид полностью соответствует наименованию](https://habrastorage.org/getpro/habr/upload_files/2b2/f1e/131/2b2f1e131b535d993e6e41ae9a874922.gif)
Генерация со случайным распределением
![Уже что-то не то, верно? Уже что-то не то, верно?](https://habrastorage.org/getpro/habr/upload_files/8f8/cdb/a93/8f8cdba9308406ed5be9f963845f0389.gif)
Есть ещё несколько интересных неименованных разновидностей «ковров»:
B234678/S8
![](https://habrastorage.org/getpro/habr/upload_files/ab7/409/ee4/ab7409ee41ee63caedc301bbc83a6d74.gif)
B2345678/S0238
![](https://habrastorage.org/getpro/habr/upload_files/a50/a59/bf6/a50a59bf6b76d5e35b9cb6b027629f75.gif)
B234567/S124567
![](https://habrastorage.org/getpro/habr/upload_files/464/ad0/212/464ad021220f7aafebf6bbe6a89794e2.gif)
B235678/S1234567
![](https://habrastorage.org/getpro/habr/upload_files/ca3/065/31a/ca306531a9c2b49aeeaf748dfb6dfcb3.gif)
7. Кораллы
И закончим со спойлерами. B3/S45678
![Случайное распределение 40% Случайное распределение 40%](https://habrastorage.org/getpro/habr/upload_files/f55/069/5fa/f550695fae443580d5aed80b65a33f77.gif)
Очень медленно, но всё же растущее правило с большим количеством осцилляторов.
![Различные виды осцилляторов на данном правиле Различные виды осцилляторов на данном правиле](https://habrastorage.org/getpro/habr/upload_files/75b/c4f/214/75bc4f2141326ee5430b53707925cad4.gif)
8. Коагуляция
B378/S235678
Несмотря на явную динамичность правила, агрегация клеток происходит очень медленно, с постоянными обратными оттоками на "берегах"
![Случайное распределение 40% Случайное распределение 40%](https://habrastorage.org/getpro/habr/upload_files/323/de9/180/323de9180c1a4f7953335d81803a4622.gif)
9. Большинство
B45678/S5678
Приближаемся к завершению, а смотрели только на разрастающиеся конфигурации. Стоит это исправить.
Простое правило, собирающее клетки в группы. Все группы представляют собой осцилляторы в том или ином виде, а натюрморты невозможны в принципе.
![Интересно, что между некоторыми группами сохраняется сообщение "бегущими" линиями. Интересно, что между некоторыми группами сохраняется сообщение "бегущими" линиями.](https://habrastorage.org/getpro/habr/upload_files/ad0/3f2/b98/ad03f2b982b64e1be08015cc74762717.gif)
10. Отжиг
B4678/S35678
Ещё одно правило с уменьшающимся видом, которое приходит к финальному состоянию только на самых малых натюрмортах и осцилляторах.
![Случайное распределение 40% Случайное распределение 40%](https://habrastorage.org/getpro/habr/upload_files/0b8/84d/6ae/0b884d6ae74f39169b3e543fa9b07cbc.gif)
Бонус: ещё немного maze-like вариаций (без мерцаний, спойлер не из-за этого)
Удивительно, как им удаётся в итоге всё равно прийти к более или менее стабильному виду.
![B2/S124 B2/S124](https://habrastorage.org/getpro/habr/upload_files/409/d7a/3bd/409d7a3bd0b7d3e83ca929f19b88b4bb.gif)
![B2/S123 B2/S123](https://habrastorage.org/getpro/habr/upload_files/743/0a3/053/7430a3053cc35723da7a9baa4cc8ada2.gif)
![B3/S012358 B3/S012358](https://habrastorage.org/getpro/habr/upload_files/60a/42f/50b/60a42f50bd9ceb0e1ab15ef0a7030bab.gif)
![B25/S23457 B25/S23457](https://habrastorage.org/getpro/habr/upload_files/9c4/bbd/7de/9c4bbd7de5a328ebb5b08563efa189b0.gif)
![B278/S0124567 B278/S0124567](https://habrastorage.org/getpro/habr/upload_files/24f/02d/5c5/24f02d5c516cbcf3aaa713a979547a90.gif)
![B26/S012357 B26/S012357](https://habrastorage.org/getpro/habr/upload_files/a87/203/33d/a8720333df6c544b52b912e1740369e3.gif)
![B2378/S1234
Столько мышей у нас не было. Или же это конвейер. B2378/S1234
Столько мышей у нас не было. Или же это конвейер.](https://habrastorage.org/getpro/habr/upload_files/e92/2cb/4da/e922cb4da87ebd312b40386d5b8c57b1.gif)
![B23/S234
Силовые поля? B23/S234
Силовые поля?](https://habrastorage.org/getpro/habr/upload_files/07c/c21/a5d/07cc21a5d73f264183e8462830922041.gif)
А тут уже мерцание
![B24567/S B24567/S](https://habrastorage.org/getpro/habr/upload_files/ba9/c45/5f3/ba9c455f33907afea1f08ae8b645907f.gif)
Следующая часть: поколенческие клеточные автоматы
Читайте также
Комментарии (22)
khrapko
00.00.0000 00:00+5На первом курсе инстика была у нас Машина МИР-2 по моему. Вот на ней игрались с клеточными автоматами. Но быстро убили печатную машинку. Больше нас туда не пускали.
Terimoun
00.00.0000 00:00+1Мне одному поплохело в процессе чтения из-за этих картинок?
Medeyko
00.00.0000 00:00+27Вероятно, не только Вам, но большинство людей должны воспринимать их без неприятных ощущений.
Возможно, Вам стоит проявлять осторожность, когда сталкиваетесь с мельтешащими объектами.
То, что автор скрыл мигающие картинки спойлерами, вызывает уважение к его обстоятельности.
halfhope
00.00.0000 00:00Вспомнилась статья про простую систему из нескольких простых правил, которая на более высоком уровне может эмулировать саму себя. Близкая тема, но найти статью не могу.
Nikita22007
00.00.0000 00:00+2https://www.youtube.com/v/xP5-iIeKXE8
Клеточный автомат "Жизнь" тьюринг-полный. В нём можно реализовать любой другой клеточный автомат
DarkMitya
00.00.0000 00:00Похоже это и есть "мультик" из игры "Ну погоди", про волка который ловил яйца.
kraidiky
00.00.0000 00:00+5Среди паттернов жизни отсутствует мой любимый - световая волна:
Двигается со скоростью света (единственная в своём роде), но схлопывается при этом с краёв. Может исчезать без остатков или оставляя некоторые конструкции в зависимости от выбора варианта оформления края.
Linder666
Так вот как эти узоры создаются! Оказывается персидские/узбекские/армянские мастера просто играют в клеточные автоматы)))
engine9
Это докомпьютерный пиксель арт с симметриями :)
P.S.: Кто желает поиграться с КА на своей ЭВМ, рекомендую бесплатную программу Golly. Многочасовое залипалово обеспечено.
Terimoun
Интересно, а как они пользовались клеточными автоматами до изобретения компьютера? ????
Gadd
Мы с братом как-то в детстве узнали при "Жизнь" Конвея, если правильно помню - из Техники Молодёжи. Брат расчертил поле, нарубил гильзой кучу кругляшков из обложки общей тетради. Новые клетки - одна сторона фишки, не новые - другая, на "умирающие" клали сверху ещё одну, опять же, если я правильно помню.
Вот так и играли.
Tarson
У Мартина Гарднера в одном из томов по занимательной математике Жизнь была подробно разобрана. Было дело тоже играл в детстве. Но когда вручную, ошибиться очень легко. Поэтому дальше простейших фигур не удалось пройти. А планерное ружье так вообще за гранью...
CTheo
В детстве исчертил тетрадку в клетку, результат не сошелся с результатом из журнала, оказалось на 3-м шаге ошибся в 1 клетке.
Didimus
В юном технике (или в левше ) предлагали вручную пойти комбинацию из 1000+ ходов
MAXH0
Что такое "клеточный автомат". Это когда клетка генерируется на основании значений соседних по простому правилу. Если цвета подбираются на основании "после цвета X вязать цвет Y, если рядом цвет Z" то это вполне клеточный автомат. Просто без эволюции.
Chillingwilli
Осталось только узнать тайну изготовления финки НКВД
ZekaVasch
Нужно взять простой советский...