Двумерные клеточные автоматы двоичные коды Вольфрама

Aug 17 2020

Этот вопрос похож на вопрос Как работают правила двумерных клеточных автоматов? Однако ответ там не дал мне того, что я ищу. В частности, я хочу иметь возможность отображать эти двухмерные формы клеточных автоматов:https://www.wolframscience.com/nks/p173--cellular-automata/Я не могу найти нигде ссылку, которая объясняла бы, как переключаться между действительным числом и правилом роста. В 1d ситуация хорошо задокументирована, например здесь:https://mathworld.wolfram.com/ElementaryCellularAutomaton.htmlно в 2d нигде нет точного отображения битов. Я действительно хотел бы создать программу, чтобы я мог, например, ввести число 465, и она нарисует узор 465 из книги Wolfram. Другой ответ на обмен стеками, на который я ссылался выше, предоставляет возможное двоичное сопоставление, однако указанный там метод не дает тех же чисел, что и в справочнике Wolfram. Двоичное значение 465 - 111010001, что мне совсем не помогает. Эта конкретная форма основана на добавлении ячейки, когда в настоящее время занят ровно один сосед, поэтому не следует ли ожидать, что у нас будет 4 единицы подряд, по одной для каждого из четырех соседей? И чтобы сделать это еще более запутанным, последние две цифры, похоже, поменяны местами из описания, приведенного на самой странице Wolfram ... Из другого ответа на переполнение стека кажется очевидным, что существует не только одно возможное двоичное сопоставление, а множество, однако учитывая, что уже существует руководство с изображениями, на которые ссылаются номера правил, я действительно хотел бы иметь возможность использовать эти конкретные номера правил. Благодарю.

Ответы

1 IlmariKaronen Aug 18 2020 at 00:15

Описание, приведенное на странице, на которую вы ссылаетесь, является правильным:

«В каждом случае последовательность из двух основных цифр для кодового номера определяет правило следующим образом. Последняя цифра указывает, какого цвета должна быть центральная ячейка, если все ее соседи были белыми на предыдущем шаге, и она тоже была белой. до последней цифры указывает, что произойдет, если все соседи белые, но сама центральная ячейка черная. И каждая предыдущая цифра затем указывает, что должно произойти, если все больше соседей будут черными. (Сравните стр. 60.) "

Что вам может не хватать, так это то, что если номер правила нечетный, пустая решетка нестабильна, поскольку белые клетки, окруженные другими белыми клетками, спонтанно станут черными. В частности, любые правила, число которых сравнимо с 1 по модулю 4 (т.е. чья двоичная форма заканчивается на 01), например 465, являются «стробирующими» , то есть пустая решетка будет чередоваться между полностью белым и полностью черным в каждом последующем поколении.

В частности, это означает, что правило 465 не может соответствовать «добавлению ячейки, когда в настоящее время занят ровно один сосед». (Предположительно, это правило 686 или 1010101110 в двоичном формате.)

Вместо этого, как вы правильно заметили, 465 равно 111010001 в двоичном формате. Записывается в пяти группах по два бита в каждой, что дает 01 11 01 00 01. В каждой из этих групп самый правый бит в группе$k$ (пронумерованные справа налево от 0 до 4) равно 1, если белая ячейка с $k$ черные соседи станут черными в следующем поколении, и крайний левый бит равен 1, если черные ячейки с $k$ черные соседи останутся черными.

Это означает, что в соответствии с этим правилом белая ячейка станет черной, если у нее есть 0, 2, 3 или 4 черных соседа (поскольку крайний правый бит равен 1 в группах 0, 2, 3 и 4, считая справа) и черный ячейка останется черной, если у нее ровно 3 черных соседа (поскольку крайний левый бит равен 1 только в группе 3).

И действительно, моделирование этого правила для 22 поколений, начиная с одного черного пикселя на белом фоне, дает изображение, совпадающее с изображением на связанной странице.


Пс. Оказывается, правило 465 является «стробирующим эквивалентом» правила симметрии состояния 558 = 01000101110 2 , которое отличается от правила 686 ровно на один бит и может быть описано как «добавить ячейку, когда занят ровно один сосед, удалить ячейка, когда ровно один сосед пуст ».

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