Pull to refresh

10 удивительно зрелищных простейших клеточных автоматов

Level of difficulty Easy
Reading time 5 min
Views 21K
Programming *Algorithms *Reading room Design Popular science
Review

Самое простое представление двумерного клеточного автомата основано на двух характеристиках: клетки имеют всего 2 состояния; правила изменения состояния зависят только от количества живых соседей из окрестности Мура первого порядка (8 окружающих).

Такая категория КА называется «Life-like», по названию самого известного автомата с такими характеристиками – «Conway's Game of Life». Игра «Жизнь» Конвея работает на правиле B3/S23, т.е. для рождения клетки требуется ровно 3 живых соседа, для выживания – 2 или 3. Во всех других случаях клетка умирает (или же остаётся пустой).

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

Сегодня взглянем на самых интересных представителей.

👾
Total votes 157: ↑157 and ↓0 +157
Comments 22

10 зрелищных клеточных автоматов с поколениями

Level of difficulty Easy
Reading time 4 min
Views 4.6K
Programming *Algorithms *Reading room Design Popular science
Review

На прошлой неделе мы посмотрели на 10 правил простейших клеточных автоматов, где меняли только количество соседей необходимых для рождения и выживания клетки.

Сегодня мы немного дополним характеристики «life‑like» модели и добавим ещё одну часть к правилам — поколения.

👾
Total votes 65: ↑65 and ↓0 +65
Comments 1

Пятничные клеточные автоматы: 10 удивительных правил с нотацией Хенселя

Level of difficulty Easy
Reading time 7 min
Views 4.8K
Programming *Algorithms *Reading room Design Popular science
Review

Продолжим знакомиться с вариациями клеточных автоматов. Ранее мы рассмотрели базовую «life-like» конфигурацию и добавили к ней поколения.

Сегодня сделаем ещё один шаг – расширим правила учёта соседей так, что влиять на рождение и выживание клеток будет не только количество живых соседей, но и их расположение.

👾
Total votes 57: ↑57 and ↓0 +57
Comments 10

Пятничные клеточные автоматы: 10 правил «больших, чем жизнь»

Level of difficulty Easy
Reading time 4 min
Views 2.7K
Programming *Algorithms *Mathematics *Reading room Popular science
Review

Неделю назад мы сделали шаг в сторону нетоталистичных конфигураций клеточных автоматов, где считали не только количество, но и расположение живых соседей. Сегодня шагнём в другую сторону – увеличим радиус поиска соседей.

Самое популярное подобное расширение конфигурации известно как Larger than Life, или просто LtL. Его мы и рассмотрим.

👾
Total votes 37: ↑37 and ↓0 +37
Comments 3

Поиграем в жизнь

Reading time 4 min
Views 24K
Games and game consoles
Представьте себе листок бумаги в клетку. Подозреваю, что уже на этом этапе некоторые хабралюди догадались, о чем пойдет речь. Что ж, моё почтение им. Остальные же продолжают представлять себе листок бумаги в клетку. Во всех подробностях. В мельчайших деталях.

А теперь представьте, что на этом простом листочке мы создадим простой, но оттого не менее впечатляющий симулятор жизни. Ни больше, ни меньше. Конечно, он будет очень упрощенный, но ведь чтобы понять что-то сложное надо начать с простого, не так ли? Этот симулятор можно применить ко множеству наук и с каждой из них он будет иметь множество достаточно интересных точек соприкосновения. От социологии до астрономии, от биологии до электротехники.

Ладно, хватит завлекалок. Пора удариться в математику.


Включить мозги
Total votes 154: ↑135 and ↓19 +116
Comments 109

В игре «Жизнь» создали самый сложный организм, способный размножаться

Reading time 1 min
Views 5.2K
Game design *Games and game consoles
На Хабре уже обсуждалась уникальная двухмерная математическая вселенная Game of Life — пространство для создания клеточных автоматов.

Так вот, месяц назад там произошла настоящая революция. Никому не известный канадский программист Эндрю Уэйд (Andrew Wade) опубликовал на игровом форуме исходники организма Gemini, способного размножаться и перемещаться, уничтожая предыдущие копии (видео).
Читать дальше →
Total votes 166: ↑156 and ↓10 +146
Comments 131

Игра «Жизнь». Опять. На этот раз в 3D

Reading time 5 min
Views 42K
C++ *Algorithms *Concurrent computing *
Sandbox
За последнюю неделю Хабр пополнился сразу несколькими статьями об игре «Жизнь». Что ж, тогда и я поделюсь своими наработками по этой теме.

Предисловие


Минувшим летом мне довелось побывать на летней школе по параллельному программированию, проводимой НГУ. В рамках школы каждый студент должен был подготовить какой-либо проект по одной из тематик, озвученных на лекциях. Меня заинтересовали клеточные автоматы. У меня первая ассоциация при фразе «клеточный автомат» это именно «Жизнь».
Я понимал, что никому не будет интересно наблюдать за черными клеточками, живущими на экране. Да и слишком просто это для такого проекта. Нужно было придумать что-то принципиально новое. Я решил расширить диапазон своих мыслей и выйти за пределы двухмерного пространства. В прямом смысле. Я подумал, а почему бы не сделать эту игру трехмерной? Ведь это гораздо интереснее!
Подробности под катом
Total votes 58: ↑47 and ↓11 +36
Comments 19

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

Reading time 4 min
Views 24K
Algorithms *Mathematics *
Представьте, что мир — это концертный зал, а ваш только что запущенный стартап — это шоу, которое секунду назад завершилось, и публика вот-вот начнёт рукоплескать вам стоя, либо отделается вялыми хлопками в разных углах зала. Почему по-настоящему гениальные спектакли искушённая публика иногда встречает сдержанно и даже холодно, а некоторые посредственные — криками «Браво»? Как сделать так, чтобы ваш стартап оценили по достоинству, и даже лучше? Как заставить мир аплодировать вам стоя?

image

Профессор Мичиганского Университета Scott E. Page, известный по курсу Model Thinking на Coursera, в соавторстве с John H. Miller в 2004 году предложили изящную модель «Standing Ovations», которая с помощью клеточного автомата описывает, будет ли зал аплодировать стоя, в зависимости от некоторых факторов. В этой статье я сначала опишу модель максимально упрощённо, а затем, под катом, перейду к небольшим математическим и околоматематическим выкладкам, к построению клеточного автомата, а в конце — к выводам применительно к стартапу и другим сферам жизни.

На секунду представьте себя в зрительном зале в волнительный момент опускания занавеса. Что может заставить вас встать и начать аплодировать? Во-первых, разумеется, вам должен понравиться спектакль. Во-вторых, вы, скорее всего, будете чувствовать себя неловко, если окажетесь единственным человеком в зале, аплодирующим стоя (равно как и если все вокруг встанут, а вы будете сидеть). Значит, необходимо, чтобы некоторая часть аудитории уже решила встать. В-третьих, если вы пришли на спектакль с друзьями или семьёй, и кто-то из них встал, то вы, вероятно, захотите его поддержать и встанете тоже. В-четвёртых, вам виден не весь зал. В зависимости от места, которое вы занимаете, вам могут быть видны только первые ряды партера, половина зала или, если вы сидите в первом ряду, то вообще никто кроме ваших соседей. Следовательно, в первую очередь на ваше решение влияет только та часть зала, которая вам видна.

Таким образом, можно выделить четыре фактора, влияющих на то, встанете ли вы:
  1. Ваше впечатление от шоу;
  2. Доля аудитории, которая уже решила встать;
  3. Поведение ваших соседей по ряду;
  4. Поведение «звёзд», сидящих в первых рядах;

А теперь немного теории автоматов
Total votes 69: ↑59 and ↓10 +49
Comments 9

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

Reading time 8 min
Views 18K
Programming *Dart *
Реализация классического клеточного автомата — конуээвской «Жизни» — это такая же задачка для начинающего программиста, как для радиотехника — спаять простейший радиоприемник. Для тех кто не знает, что такое «Жизнь», прочитайте эту статью: Википедия: Жизнь (игра).

Напомню правила: действие происходит на клеточном поле. Каждая клетка имеет 8 соседей — клетки, примыкающие к ней сторонами или углами. В начале игры некоторые клетки заполнены, образуя начальный организм, остальные — пусты. Эволюция происходит так: в следующем поколении очищаются все заполненные клетки, имеющие менее 2 или более 3 соседей и заполняются пустые, имеющие ровно 3 соседа.

После того, как поиграешь с интересными конфигурациями, становится немного скучно. В самом деле, за 40 лет все, что можно описано, разжевано на сотнях страниц различных статей и книг. Найти что-то новое и интересное сложно. Тогда возникает желание поменять правила — а вдруг новые организмы будут вести себя совершенно по-иному?


Здесь вы можете сразу посмотреть демо.
Читать дальше →
Total votes 44: ↑38 and ↓6 +32
Comments 9

Клеточные автоматы с помощью комонад

Reading time 5 min
Views 14K
Haskell *Functional Programming *
Sandbox
Одним вечером я наткнулся на статью о реализации одномерного клеточного автомата с помощью комонад, однако материал неполон и немного устарел, в связи с чем решил написать русскоязычную адаптацию (заодно рассмотрев двумерные клеточные автоматы на примере Game of Life):

life_anim
Читать дальше →
Total votes 33: ↑31 and ↓2 +29
Comments 5

Эксперименты с бит-реверсными паттернами в двумерных аддитивных клеточных автоматах

Reading time 17 min
Views 14K
Abnormal programming *Algorithms *Mathematics *
Как-то я экспериментировал с клеточными автоматами. С одномерными и двумерными. Придумывал на каком исходном состоянии применить какое-то правило. Когда, в качестве исходного состояния двумерного клеточного автомата я начал использовать бит-реверсивную перестановку диагональной линии, то после применения автомата получались своеобразные узоры. Время от времени среди узоров появлялись явно выраженные характерные паттерны. Я выделил эти паттерны и немного с ними поэкспериментировал. С тем, что мне удалось выяснить, я делюсь в этой статье.

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

Disclaimer: Статья носит чисто информационно-развлекательный характер, поскольку мне не известны приложения предлагаемой информации. Также, мне интересно упорядочить обрывочные сведения, которые мне удалось выяснить. И, возможно, обнаружить в них шероховатости. Возможно, мне придут в голову новые эксперименты.

Надеюсь, что статья развлечет вас, хотя я буду писать четко и по делу.
Осторожно! Чтение может привести к квантовому реверсу сознания...
Total votes 49: ↑44 and ↓5 +39
Comments 11

Интересные примеры клеточных автоматов

Reading time 4 min
Views 29K
Mathematics *
Интересные примеры клеточных автоматов.

На хабре много статей по клеточным автоматам (http://habrahabr.ru/post/168291/, http://habrahabr.ru/post/227003/), особенно по игре “Жизнь” (http://habrahabr.ru/post/67790/, http://habrahabr.ru/post/154509/, http://habrahabr.ru/post/237629/). Я хочу рассказать что-то новенькое — про другие клеточные автоматы, привести неожиданные и интересные, по моему мнению, примеры. Мы посмотрим на структуру, которая постепенно копирует свою исходную конфигурацию; и на структуру, которая рисует круг.

Осторожно, большие gif-ки
Читать дальше →
Total votes 53: ↑52 and ↓1 +51
Comments 3

Простейшие клеточные автоматы и их практическое применение

Reading time 6 min
Views 97K
JavaScript *Programming *Algorithms *Canvas *Mathematics *
Этот мир просто охренеть какой сложный, каждый день поражаюсь.

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

И знаете, что удивительно? Этот подход замечательно работает. Ну, почти всегда. По крайней мере, ничего лучше мы до сих пор не придумали.

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

image

Да, я о клеточных автоматах, а именно — об их подмножестве, простейших клеточных автоматах (Elementary cellular automaton). В этой статье я поведаю, что это такое, какие они бывают, какими свойствами обладают, а также отвечу на главный, на мой взгляд, и совершенно правильный вопрос, который часто несправедливо игнорируется в подобных статьях. Звучит он так: А это всё вообще зачем?

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

Я искренне надеюсь, что после прочтения статьи вы сами захотите поиграться с ними, и на этот случай у меня припасен собранный из JS и палок генератор.
Хватит воды, давай к сути
Total votes 89: ↑88 and ↓1 +87
Comments 15

Логика сознания. Часть 1. Волны в клеточном автомате

Reading time 7 min
Views 64K
Programming *Algorithms *Machine learning *
Начнем разговор о мозге с несколько отвлеченной темы. Поговорим о клеточных автоматах. Клеточный автомат – это дискретная модель, которая описывает регулярную решетку ячеек, возможные состояния ячеек и правила изменений этих состояний. Каждая из ячеек может принимать конечное множество состояний, например, 0 и 1. Для каждой из ячеек определяется окрестность, задающая ее соседей. Состояние соседей и собственное состояние ячейки определяют ее следующее состояние.
Наиболее известный клеточный автомат – это игра «Жизнь». Поле в игре «Жизнь» состоит из ячеек. Каждая ячейка имеет восемь соседей. Задается начальная комбинация. Затем начинается смена поколений. Если у занятой ячейки два или три занятых (живых) соседа, то ячейка продолжает жить. Если соседей меньше 2 или больше 3, то ячейка умирает. Когда у пустой ячейки оказывается ровно 3 соседа в ней зарождается жизнь. Задав произвольную начальную комбинацию можно пронаблюдать ее эволюцию.
Читать дальше →
Total votes 31: ↑30 and ↓1 +29
Comments 65

Вариация на тему моделирования жизни. Часть 1

Reading time 5 min
Views 8K
Algorithms *Mathematics *
Sandbox
🔥 Technotext 2020

Жизнь Джона Конвея


Полагаем, всем программистам хорошо известен клеточный автомат жизнь (или эволюция), придуманный английским математиком Джоном Конвеем в 1970 году. Возможно, некоторые даже корпели над самописной программой, моделирующей клеточный автомат Конвея.
Читать дальше →
Total votes 22: ↑22 and ↓0 +22
Comments 12

Вариация на тему моделирования жизни. Часть 2

Reading time 5 min
Views 2.3K
Algorithms *Mathematics *

Жизнь продолжается


Продолжим эксперименты с клеточным автоматом, начатые в предыдущей статье (Вариация на тему моделирования жизни. Часть 1).
Вкратце напомним основные положения. Модель представляет собой бесконечное (замкнутое) поле, состоящее из клеток. В каждой клетке может располагаться только один простейший организм, который условно назовём растением. Изначально поле может содержать в каждой клетке некоторое количество ресурса, необходимое для питания растений.

Наделим растение со следующими параметрами: a) начальная масса (в единицах), b) питание ресурсом (в единицах), c) продолжительность жизни (в тактах), d) количество спор для размножения.
Читать дальше →
Total votes 4: ↑4 and ↓0 +4
Comments 15

Conways Game of life на Python

Reading time 3 min
Views 20K
Python *
Sandbox

Это мой первый пост, где я хочу рассказать про самый известный клеточный автомат "Игра жизнь", а также напишем её на Python с использованием графики Pygame.

Conways Game of life ( по русски 'Игра жизнь' ) - клеточный автомат, придуманный Джоном Конвеем в далеком 1970 году.

Правила очень просты, вся игра происходит в 2D пространстве (плоскости) на которой могут быть 2 типа клеток "Живые" - 0 и "Пустые" -1. Основные правила жизни клетки таковы Birth3 Survive23, что значит клетка рождается при трёх соседях и выживает при двух или трёх, иначе умирает.

Читать далее
Total votes 12: ↑6 and ↓6 0
Comments 11

Формат JPEG XL будет полным по Тьюрингу без ограничения 1024*1024 пикселей

Reading time 4 min
Views 14K
ITSumma corporate blog Information Security *Image processing *IT Standards *Mathematics *

В формате JPEG XL это изображение занимает 59 байт

Оказывается, полным по Тьюрингу может быть не только язык программирования, но и графический формат. В частности, таким потенциально является формат JPEG XL, если отменить в нём ограничение на максимальный размер группы обрабатываемых пикселей.
Читать дальше →
Total votes 48: ↑46 and ↓2 +44
Comments 67

Муравей Лэнгтона — загадочный клеточный автомат

Reading time 4 min
Views 15K
Programming *Algorithms *Mathematics *Popular science

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

Невесёлая жизнь у муравья Лэнгтона, но, как мы увидим, он не готов мириться с такой возмутительной ситуацией и всеми силами старается сбежать.

Читать далее
Total votes 60: ↑59 and ↓1 +58
Comments 23

Моделирование лесных пожаров: теория, клеточный автомат на Python

Level of difficulty Medium
Reading time 10 min
Views 4.3K
Python *Algorithms *Reading room Popular science Ecology
Review
Translation

Математические модели распространения огня являются важной частью борьбы с пожарами. Модели могут помочь определить, где может начаться пожар, как быстро он будет распространяться (и в каком направлении), и сколько тепла он будет выделять. Эти важные подсказки могут спасти жизни и существенно сократить финансовые потери.

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

👾
Total votes 23: ↑23 and ↓0 +23
Comments 14
1