TGViewer
Segmentation Fault Segmentation Fault @sadsegment · 6 subscribers
Post #5 30
Сегодня хочу рассказать про штуку под названием КЛЕТОЧНЫЙ АВТОМАТ (англ. cellular automata / automation).

Это алгоритм / механизм для симуляции «рождения» и «смерти» клеток в матрице. Изначально придуман Джоном Конвеем в 1970 для «Игры в жизнь» (Game of Life), смысл которой в том, чтобы задать популяцию «живых» клеток и наблюдать за тем, как она меняется со временем (а если загуглить «game of life», гугл выдаст симуляцию этой игры на странице поиска).

Кстати! Не бойтесь слова «матрица». В данном случае оно лишь означает клеточное 2D поле, в котором хранятся нули и единицы. Как лист бумаги для морского боя.


В игру Конвея можно поиграть здесь. Правила следующие:

— Есть изначальная матрица клеток, часть из которых «живые» (1) или «мертвые» (0). Можно задать ее случайно, можно использовать готовый паттерн (их целая куча — глайдеры, статичные фигуры, пушки и т.д.).

— В некоторых версиях автомата можно указать «шанс инициализации» — он задает, с какой вероятностью каждая отдельная клетка будет «живой» в первом поколении.

— Каждый новый «шаг» симуляции определяет, какие клетки будут «мертвыми» или «живыми». За это отвечают две величины — порог рождения (birth limit) — то, сколько «живых» соседей (минимум) должно быть у «мертвой» клетки, чтобы она «ожила», и порог смерти (death limit) — то, сколько «живых» соседей (минимум) должно быть у «живой» клетки, чтобы она не «умерла».

Пример: у «мертвой» клетки 4 «живых» соседа. Порог рождения — 3. Значит, на следующем шаге она станет «живой».

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


А зачем вообще нужен клеточный автомат?

Как минимум, он способен предсказывать развитие реальных популяций. А в программировании его можно использовать для… *барабанная дробь*

Генерации пещер. Да, серьезно.

Представьте, что у вас есть игра по типу Minecraft, в которой случайным образом нужно создавать пещеры (не говорю, что в реальном Minecraft это так работает, там все гораздо сложнее). Если правильно сбалансировать birth limit, death limit и шанс инициализации, то за 20-30 шагов симуляции на случайно созданном поле можно получить большое пространство из «мертвых» клеток — то есть, пещеру.

В этой статье как раз хорошо объяснено.

Год назад я в команде создавал свою версию Game of Life на языке Си. Сейчас делаю приложение, где есть генерация пещер с помощью клеточного автомата, так что этот алгоритм мне уже как родной :)

#Algorithms
Wikipedia Игра «Жизнь» клеточный автомат, моделирующий жизнь
  • 💋 2
More from @sadsegment
  1. Apr 8, 2026Почему Гугл использует очевидно плохую модель перевода с языка на язык через «посредника»…
  2. Apr 2, 2025Кто-то вспомнил про Игру в Жизнь, смотря Minecraft 👁️👁️
  3. Mar 26, 2025Segmentation Fault pinned a video
  4. Mar 26, 2025А вот так выглядит пещерная генерация, которую я вставил в приложение
  5. Mar 26, 2025В заключение, один из самых известных паттернов — глайдер
  6. Mar 20, 2025Segmentation Fault pinned «Что это за место? — Блог, энциклопедия, чердоки разума разработ…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →