Узоры и мощения
May 10

Элементарные клеточные автоматы. 2. Преобразования инверсии и отражения

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

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

Кажется, что в простых преобразованиях нет ничего сложно: инвертировал битовую запись правила или отразил ее слева-направо и готово. Но не тут-то было — такие очевидные решения работать не будут. Преобразования правил элементарных клеточных атоматов нужно выполнять по другому.

Давайте рассмотрим как следует преобразовать правила ЭКА и, заодно, потренируемся работать с битами.

Инверсия

Обычная инверсия изменяет биты правила автомата на противоположные: 0 ↔ 1. По идее это должно привести к инверсии генерируемого автоматом узора. Проверим, так ли это.


Возьмем автомат 118:

118 = 0111 0110

Инвертируем его биты, получив автомат 137:

137 = 1000 1001

Правило инвертировано, а узор нет. Попробуем еще раз.


Возьмем автомат 125:

125 = 0111 1101

И снова инвертируем его биты, получив автомат 130:

130 = 1000 0010

Опять получился совсем другой узор.

Как же быть?


Для инверсии правила элементарного КА следует инвертировать не готовое правило, а тройки битов, которые его порождают. Вот так:

0: 000 → 111

1: 001 → 110

2: 010 → 101

3: 011 → 100

4: 100 → 011

5: 101 → 010

6: 110 → 001

7: 111 → 000

То есть первый шаг инверсии будет заключаться в зеркальной перестановке битов относительно центра правила. Однако этого мало: после зеркальной перестановки биты следует инвертировать.

Для инверсии элементарного клеточного автомата необходимо поменять местами следущие биты: 0 ↔ 7, 1 ↔ 6, 2 ↔ 5, 3 ↔ 4, затем инвертировать полученное число.

Проверим.


Возьмем автомат 118 и зеркально поменяем местами его биты:

118 = 0111 0110 ↔ 0110 1110 = 110

затем инвертируем полученное число:

110 = 0110 1110 ↔ 1001 0001 = 145

Правило сработало: 118 инверсия 145.


Проверим еще раз на автомате 125:

125 = 0111 1101 ↔ 1011 1110 = 190 ↔ 0100 0001 = 65

Получилось то, что было нужно: 125 инверсия 65.



Отражение

Возьмем автомат 54 и построим его эволюцию:

54 = 0011 0110

Теперь отразим битовую запись 54, получив автомат 108 =

0110 1100

Однако после такого отражения построенная текстура совсем не походит на исходную. Почему? Потому что нужно отражать генерирующие тройки битов.

0: 000 → 000

1: 001 → 100

2: 010 → 010

3: 011 → 110

4: 100 → 001

5: 101 → 101

6: 110 → 011

7: 111 → 111

При таком отражении симметричные тройки останутся теми же, а несимметричные обменяются местами: 6 ↔ 3, 4 ↔ 1.

Для зеркального отражения элементарного клеточного автомата необходимо поменять местами следущие биты его правила: 6 ↔ 3, 4 ↔ 1.

В этом случае автомат 54 = 0011 0110 превратится в самого себя: 54 ↔ 54. Правило выполнено, но пример неудачый.


Возьмем не менее приятный автомат 193 =

1100 0001

Отразим его, переставив биты согласно правилу. Получим атомат 137 =

1000 1001

Видно, что сгенерированная текстура зеркально отразилась: 193 ↔ 137.


Еще пример — автомат 75 =

0100 1011

После перестановки битов превращается в автомат 89 =

0101 1001

Как видим, правило отражения работает правильно.



Инверсия + отражение

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

Уникальные элементарные клеточные автоматы

Среди 256 элементарных клеточных автоматов, некоторые автоматы эквивалентны друг другу, так как генерируют одинаковые текстуры, отличающиеся только инверсией или отражением.

Тогда возникает закономерный вопрос: сколько всего существует уникальных элементарных клеточных автоматов, из которых можно построить все остальные автоматы?

Не вдаваясь детали, скажу, что их ровно 88 штук — в три раза меньше общего количества ЭКА.

Из 256 элементарных клеточных автоматов только 88 являются уникальными, остальные эквивалентны друг другу с точностью до симметрии или отражения.

На сей позитивной ноте позвольте с вами откланяться.