Universe Life
Життя
Всесвіту Чисел

Universe Life - дослідження клітинних автоматів


Українська


Русский


English

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

Существует достаточно много семейств клеточных автоматов (СА семейств). Программа Universe Life поддерживает компексное модифицированое семейство “Weighted Life”, которое позволяет запрограммировать некоторые другие СА семейства - "Generation", "Life", "Vote". Кроме того, модификация “Weighted Life” привела к появлению нового СА семейства с новыми возможностями.

Life

Самое первое СА семейство, которое поддерживает закон игры "Жизнь" (он еще называется закон Conway`s Life). На нем базируется много других семейств клеточных автоматов. Законы семейства Life отличаются один от другого лишь значениями "Выживания" и "Рождения". То есть если для Жизни" строка "Выживания" имеет значение 2 и 3, а строка "Рождения имеет значение 3, то другие законы Life могут иметь строки с иным набором значений.

Законы игры "Жизнь"

Игра "Жизнь" была создана Джоном Конвеем в 1970 году и моделирует развитие "математических живых организмов" - клеток на некоторой плоскости, которая разделена на клеточки. Каждая клеточка может быть в двух состояниях: "живом" или "мертвом". На развитие каждой клетки плоскости влияют 8 соседних клеток по таким правилам (которые еще называются "генетическими правилами Конвея"):

  1. Если в клетки есть больше 3-х или меньше 2-х "соседей" (то есть "живых" клеток), то клетка "умирает" (от тесноты или от одиночества).
  2. Если количество "соседей" находится в пределах 2-3 включительно, то клетка продолжает жить. (Значения 2 и 3 называются значениями "Выживания". А совокупность этих значений называется строкой "Выживания")
  3. Если пустая клеточка имеет ровно 3 живые соседние клетки то в ней "рождается" новая клетка. (А значение 3 называется значением "Рождения")
  4. Процессы "рождения" и "смерти" происходят одновременно.

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

Соседними называются те 8 клеток, которые соприкасаются сторонами и углами к клетке, судьба которой определяется, так как показано на рисунке:


Область соседних клеток


Коды соседних клеток

Каждая соседняя клетка имеет свой код, центральная клетка имеет код ME, это именно та клетка, для которой подсчитывается количество живых соседей. Коды соседних клеток используются при кодировке правил.

Важно!
Если на каком-то шаге для какой-то клетки наступили условия смерти, то в этом шаге клетка ЕЩЕ ЖИВАЯ и учитывается при подсчете живых соседей для других клеток. Так же, если для какой-то клетки наступили условия рождения, то в этом шаге этой клетки Еще не СУЩЕСТВУЕТ. Это означает, что в пределах шага клетки просто обозначаются как те, что должны родиться, и те что должны умереть, и только в следующем шаге это происходит.

Пример.
Рассмотрим развитие самой простой конфигурации клеток из правил Conway`s Life: "мигалку" - три клетки, выстроенные в ряд. Проанализируем эти клетки.
  • Первая клетка имеет лишь одну живую соседнюю клетку.
  • Вторая клетка (средняя) имеет две живые соседние клетки.
  • Третья клетка как и первая - имеет лишь одну живую соседнюю клетку.
Согласно правил Conway`s Life, из этих трех клеток выживет лишь вторая клетка, а первая и третья умрут (отмечены серыми крестами).
Теперь посмотрим есть ли в каком-то месте игрового поля условия для рождения новых живых клеток. По правилам Conway`s Life таким условием является 3 живые соседние клетки. Этому условию удовлетворяют два места (обозначены красной точкой).
Следовательно на следующем шаге развития на игровом поле умрет две клетки, и родятся две клетки. А так как в результате вышла конфигурация, аналогичная по виду, лишь повернута на 90 градусов, то на следующем шаге все повторится и конфигурация опять вернется в начальное состояние.


1-й шаг


2-й шаг


Мигалка


Мигалка


Generation

Достаточно интересное семейство правил, похоже по условиям "рождения" и "выживания" на "Life". Отличие от "Life" заключается в том, что ведется так называемая "история" клеток. Каждая клетка имеет "возраст" от 1 до 256. При рождении клетка получает возраст "1" и сохраняет его до тех пор, пока для нее не наступят условия "смерти". После этого клетка "стареет" - каждого поколения ее век увеличивается на 1. Клетка исчезает из поля лишь тогда, когда ее возраст достигнет определенного законом значения. При подсчете количества живых клеток учитываются лишь те клетки, которые имеют возраст 1. Это все достаточно сильно изменяет правила этого семейства.

Пример.
Опять рассмотрим "Мигалку". Только изменим Главный закон на закон Frogs из семейства "Generation". При этом законе клетка живет, когда имеет одного или два живых соседа, и рождается, когда имеет три, или четыре живых соседа. Возраст "истории" равен трем.
Проанализируем, что произойдет с "Мигалкой".
  • На первом шаге ни одна из клеток не умрет, так как ни для одной из клеток не наступают условия смерти. Однако родятся две клетки (место рождения показано красной точкой).
  • На втором шаге условия смерти наступят для всех клеток, так как каждая из клеток имеет три и больше живых соседа. Кроме того, родятся 4 новые клетки.
  • На третьем шаге те клетки, для которых наступили условия смерти на втором шаге, - "постареют" на единицу (показаны синим цветом). А для клеток, что родились на втором шаге, наступят условия смерти, потому что они не имеют ни одного живого соседа с возрастом 1. В местах, отмеченных зеленой точкой, также не родятся клетки, потому что хоть в тех местах количество живых соседних клеток и равно трем, но не все из тех клеток имеют возраст 1.
  • На четвертом шаге те клетки, для которых наступили условия смерти на втором шаге, опять "постареют" на единицу и так как теперь их возраст равен трем - исчезнут из экрана. Те клетки, что родились на втором шаге, постареют на 1 (показаны синим цветом).
  • На пятом шаге все клетки исчезнут из экрана.


1-й шаг


2-й шаг


3-й шаг


4-й шаг


5-й шаг


Мигалка

Однако этот пример не является характерным для правил семейства "Generation". Характерной особенностью большинства законов этого семейства является то, что в нем очень много подвижных конфигураций. В некоторых правилах достаточно двух поставленных в ряд точек, чтобы на поле началось движение большого количества разнообразных конфигураций. Эта особенность объясняется тем, что при подсчете количества живых клеток учитываются клетки с возрастом ровным 1. А следовательно клетки, что имеют больший возраст мешают развитию. И когда эти клетки находятся лишь из одной стороны конфигурации, то новые клетки будут рождаться только с другой стороны. Это и приводит к движению конфигурации.

Вот, например, самый простой космический корабль правила Brian's Brain: блок клеток 2х2. Но с одной стороны клетки имеют возраст 2, а из второго 1. Это правило не имеет значений "Выживание", а лишь одно значение для "Рождения" - 2. Это означает, что состояние смерти на поле наступает для всех клеток. Но такое низкое значение для рождения дает большое количество новорожденных клеток. Проанализируем этот космический корабль.

  • На первом шаге для двух живых клеток наступят условия смерти, еще двое синих (с возрастом 2) постареют на единицу, и родятся две клетки (место рождения показано красной точкой). Но родиться клетки смогут лишь с одной стороны - с того, где нет синих клеток.
  • Второй шаг аналогичный предыдущему: для тех живых клеток, что родились в первом шаге наступят условия смерти, опять родятся две клетки из правой стороны, две клетки, для которых наступили условия смерти в первом шаге, - постареют на единицу, а те две клетки, что в первом шаге постарели, вообще исчезнут из экрана, потому что их возраст станет равен 3 (длительность "истории" для данного правила)
  • и все повторяется. Корабль двигается.


1-й шаг


2-й шаг


Движение

Может ли хоть какой-то закон из семейства "Life" похвастаться таким простым космическим кораблем? Только законы с "историей" клетки в состоянии сделать подобное.



Weighted Life

В этом семействе основным отличием является изменение способа подсчета количества живых клеток. Если в семействах "Life" и "Generation" для решения судьбы клетки использовалась сумма всех живых соседних клеток, то в этом семействе используется сумма не клеток, а их весовых коефициентов, значение которых может быть от -255 до 255.
Рассмотрим это на примере закона Navaho1. При этом законе панель весовых коефициентов (см. справку к программе) выглядит так, как показано ниже:

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



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


1-й пример


2-й пример

  • 1-й пример. У центральной клетки есть 3 живых соседа: NE, WW, SS. Сумма их коефициентов равна 4 + 5 + 1 = 10. Кроме того, нужно учитывать и саму центральную клетку, то есть 10 + 7 = 17. Именно эта сумма и будет использоваться для решения судьбы клетки.
  • 2-й пример. Также три живых соседа, однако нет центральной клетки. Сумма весовых коефициентов равна 1 + 4 + 1 = 6.

В семействе Weighted Life может также использоваться "история" клеток. Это и делает семейство Weighted Life комплексным. Если выключить "историю" и задать весовые коефициенты уровни 1 для всех клеток кроме центральной - то это выйдет то же самое семейство Life. Если при этом включить "историю", то выйдет семейство Generation.


Vote”

Несколько видоизмененная версия семейства "Life". отличие заключается в том, что набор значений "Выживания" должен быть такой же как и набор значений "Рождения". Кроме того, при подсчете количества живых соседних клеток учитывается также и та клетка, судьба которой решается, то есть центральная клетка.


Хостинг от uCoz