что такое бит реверсная перестановка

что такое бит реверсная перестановка. 220px Hammersley set 2D.svg. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-220px Hammersley set 2D.svg. картинка что такое бит реверсная перестановка. картинка 220px Hammersley set 2D.svg. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте.

СОДЕРЖАНИЕ

Пример

Обобщения

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

Приложения

Перестановка с инверсией битов также использовалась для разработки нижних границ в распределенных вычислениях.

Алгоритмы

В основном из-за важности алгоритмов быстрого преобразования Фурье были разработаны многочисленные эффективные алгоритмы для применения перестановки с обращением битов к последовательности.

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

Источник

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

что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте.Как-то я экспериментировал с клеточными автоматами. С одномерными и двумерными. Придумывал на каком исходном состоянии применить какое-то правило. Когда, в качестве исходного состояния двумерного клеточного автомата я начал использовать бит-реверсивную перестановку диагональной линии, то после применения автомата получались своеобразные узоры. Время от времени среди узоров появлялись явно выраженные характерные паттерны. Я выделил эти паттерны и немного с ними поэкспериментировал. С тем, что мне удалось выяснить, я делюсь в этой статье.

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

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

Надеюсь, что статья развлечет вас, хотя я буду писать четко и по делу.

Предварительное знакомство с клеточными автоматами

Если вы не знакомы с клеточными автоматами (КА) или только слышали о них, то предлагаю ознакомиться с вводными статьями:

Тоффоли Т., Марголус Н., Обзор клеточных автоматов (pdf) на The Game of Life Романа Парпалака — хорошее введение в КА.

Евгений Золотов, Мир в клеточку (pdf) на Компьютерра.

Более практические статьи:

OCo, Клеточные автоматы (pdf) на Программы, фракталы и всякая всячина от OCo — краткое введение в клеточные автоматы и примеры реализации различных клеточных автоматов.

Татьяна Бибикова, Гидродинамика сперматозоида морского ежа (pdf) — рассказ о научной работе.

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

Elementary Cellular Automaton на WolframMathWorld — описан подход нумерации правил КА и приведены иллюстрации поведения всех правил при некотором стартовом состоянии.

Elementary cellular automaton на Wikipedia — примерно тоже, что и предыдущее. Но приведены иллюстрации применения некоторых правил при случайном стартовом состоянии.
Rafael Espericueta, Cellular Automata Dynamics (pdf) — иллюстрированная книга про нульмерные, одномерные и двумерные КА.
Additive Cellular Automaton на WolframMathWorld — про аддитивные КА.

Mirek Wojtowicz, 1D and 2D Cellular Automata explorer — на сайте есть коллекция правил КА.

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

У клеточного автомата есть состояние и правило, по которому происходит переход от предыдущего состояния к следующему.

Состоянием двумерного КА является двумерный массив клеток. В нашем случае, этот массив имеет одинаковую длину и ширину N. Каждая клетка может принимать значения 0 или 1. Будем изображать клетки со значением 0 черным цветом, а клетки со значением 1 белым цветом.

Положение клетки в массиве состояния КА описывается координатами [i,j], где i, j принимают значения от 0 до N-1, причем, i — это номер столбца, а j — это номер строки.

Правило — это процедура, которая на основе значения клетки и значения соседних восьми клеток вычисляет значение клетки для следующего состояния. Совокупность клеток, которые могут участвовать в вычислении правила будем называть окрестностью. Так выглядит окрестность клетки [i,j]:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте.
Процедура вычисления правила применяется параллельно и одинаково для всех клеток состояния КА, у которых определены все соседние клетки (в типичной реализации — последовательно с использованием двух массивов состояния.) Однократное применение правила ко всем клеткам будем называть одной итерацией.

На границах состояния КА не все соседние клетки определены. Существуют различные способы определить недостающие клетки. И каждый способ дает отличающийся результат. В нашем случае, недостающие соседние клетки будут взяты с противоположных краев состояния. Таким образом, у нашего массива как бы «склеены» левый край с правым, а верхний край с нижним. Такая «склейка» эмулирует поверхность тора, или еще ее называют тороидальной решеткой.
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Пожалуй, самым известным примером двумерного КА является игра «Жизнь».

У двумерного аддитивного клеточного автомата (АКА) процедура вычисления правила вычисляет сумму по модулю 2 (тоже, что и XOR) значений определенных клеток из девяти клеток из окрестности вычисляемой клетки. В нашем случае, значение клетки в сумму входит не более одного раза.

Например, правило 15. Согласно двоичному представлению 15=0000011112, оно раскладывается на слагаемые 0000000012, 0000000102, 0000001002, 0000010002 или 1, 2, 4 и 8. Отсюда, правило 15 значит, что каждая клетка нового состояния является суммой клеток с1, с2, с4 и с8 предыдущего состояния. Другие соседние клетки не участвуют в вычислении правила. Таким образом, процедура вычисления правила будет выражением с1[t]=с1[t-1]+с2[t-1]+с4[t-1]+с8[t-1] (mod 2), где с1[t] — клетка нового состояния, а с1[t-1], с2[t-1], с4[t-1], с8[t-1] — клетки предыдущего состояния, причем координаты клеток с1[t] и с1[t-1] совпадает, а клетки с2[t-1], с4[t-1], с8[t-1] являются соседними клетками клетки с1[t-1] в соответствии с диаграммой.

Идея такой нумерации правил АКА взята из [Khan1997].

В приложении вы можете интерактивно задавать правило, как по номеру, так и отмечая флажки с клетками окрестности. При изменении одного представления другое представление будет изменятся автоматически.

Весь материал статьи основан на использовании правила 15. Также, будет пара экспериментов с применением правила 511.

Предварительное опознание проявления перестановки диагональной линии

Возьмем пустое состояние АКА 64×64 клетки, и нарисуем диагональную линию:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Применим бит-реверсивную перестановку строк. Или столбцов. Без разницы. Что такое реверс битов и бит-реверсивная перестановка я уже писал. [BRH2012] В приложении это делается кнопкой BRP(y) или выбрав Pattern «Permuted Diagonal Line». Получим состояние:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..

Теперь будем итеративно применять к этому состоянию правило 15 (кнопка «Apply rule».) После 30 итераций получим состояние:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Мой глаз уже наметан, и я легко узнаю искомые паттерны. Из этого состояния можно выделить нечто имеющее размер 8×8 состоящее из виртуальных черных и белых клеток, повторяющееся четыре раза с различными способами прорисовки. Выделим это в явном виде:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Казалось бы, какой-то набор клеток. Ведь, каждая итерация дает определенный рисунок. Почему я выделил именно эту итерацию и этот рисунок?

Давайте возьмем АКА 128×128 клеток. И проделаем тоже самое. Остановимся на итерации 62. Видим состояние:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..

Видим виртуальные клетки, которые задают паттерн размером 16×16. Выделим его:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..

Чтобы окончательно убедиться, возьмем АКА 256×256 клеток. Вот состояние на итерации 60:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Видим виртуальные клетки, задающие знакомый паттерн 8×8 клеток. Отличается лишь способ прорисовки виртуальных клеток. На следующих итерациях паттерн повторяется в том или ином способе прорисовки. Например, итерация 62:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Наконец-то, итерация 126:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Узнаваемая картина, не правда ли? Также, обратите внимание на динамический муар при плавном движении этого рисунка на вашем LCD-мониторе. Но это тема для другой статьи. Выделим из виртуальных клеток паттерн 32×32:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..

Мне этого было достаточно, чтобы меня охватил интерес к этому объекту и глубже его исследовать. Назовем этот объект проявлением перестановки диагональной линии или ППДЛ.

Я решил разобраться как генерировать такие паттерны в чистом виде не делая множество итераций АКА и не распознавая виртуальные клетки.

Генерация проявления перестановки диагональной линии

Возьмем ППДЛ в чистом виде 32×32 клетки. Применим к нему правило 15 (с самого начала я экспериментировал только с правилом 225, что приводило к возникновению лишних поправок при генерации ППДЛ.) Получим состояние:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Если немного повозиться с этим состоянием, то можно прийти к тому, что в каждой четверти изображена бит-реверсивная перестановка диагональной линии. Проверим это нажатием кнопки 4BRP(y). Получим: что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Также, можно не переставлять каждую четверть отдельно, а переставить строки состояния целиком. Тогда получится две диагональные линии. Казалась бы, нет никакой разницы какой подход выбрать. Но, при переходе к произвольному модулю/основанию, с первым вариантом генерация получается проще. (С самого начала, в своих экспериментах, я пользовался вторым способом. А к первому способу я окончательно пришел в прямо при написания статьи.)

И так, нам известно состояние АКА после применения правила 15. И такое состояние легко сгенерировать для заданного размера.

Осталось обратить вспять это состояние. Распишем правило 15 еще раз:
с1[t]=с1[t-1]+с2[t-1]+с4[t-1]+с8[t-1] (mod 2), где с1[t] — известная клетка состояния, содержащего перестановки диагональных линий в каждой четверти, а с1[t-1], с2[t-1], c4[t-1], с8[t-1] — неизвестные клетки ППДЛ. Если посмотреть на обнаруженные ППДЛ различных размеров, то нетрудно заметить, что клетки первой строки и первого столбца содержат только нули. Таким образом, будем считать, что значение первых клеток ППДЛ мы уже знаем. Отталкиваясь от этих значений, становится возможным найти остальные значения клеток ППДЛ.

Например, возьмем АКА 8×8 клеток. Состояние t с перестановками диагональных линий в каждой четверти изобразим в виде таблицы:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте.
Изобразим в виде таблицы искомое состояние ППДЛ t-1 с известными первой строкой и первым столбцом:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте.
Три известные клетки в левом верхнем углу будут соответствовать слагаемым правила 15: с1[t-1], с2[t-1], с8[t-1]. Неизвестной клетке [1,1] соответствует слагаемое с4[t-1]:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..

Другие слагаемые в правиле 15 не задействованы.

Решим уравнение для с4[t-1]. Получим:
с4[t-1] = с1[t]+с1[t-1]+с2[t-1]+с8[t-1] (mod 2) (при сложении по модулю 2 знак минус не имеет значения.) Согласно таблицам, с4[t-1] = 1 + 0 + 0 + 0 = 1 (mod 2). Получим состояние:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте.
Аналогичным образом, вычисляется клетка [1, 2] или клетка [2, 1] с учетом смещения:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
И т.д. Клетка за клеткой, строка за строкой, мы получим состояние:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте.

Также, ППДЛ можно генерировать с помощью блочно-рекурсивного построения матриц. Если это кому-то интересно, то может попробовать сделать это самостоятельно.

Некоторые свойства проявления перестановки диагональной линии

Свойство 1
Свойство 2

Клетки первой строки и первого столбца равны нулю.

Свойство 3

Четные клетки на строке N/2 и столбце N/2 равны единице, а нечетные равны нулю. Другими словами, они равны соответствующей координате клетки, взятой по модулю 2.

Свойство 4

Если к ППДЛ применить правило 15, то мы получим состояние, которое содержит перестановки диагональной линии в каждой четверти.

Свойство 5

Подготовим ППДЛ 64×64 клетки:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
И будем применять правило 511. На итерации 16 мы получим:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Это тот же паттерн, только смещен на 32 клетки по диагонали.

Аналогичная картина происходит с ППДЛ других размеров.

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

Следует заметить, что это не уникальное свойство данного паттерна. Можно придумать и другие состояния АКА, которые имеют такое же свойство.

Если дальше применять правил 511, то на итерации 32 вернется исходное изображение. Исходное изображение восстанавливается при любой комбинации клеток состояния АКА, но не при любом размере состояния. Это свойство правила 511 предлагают применять в криптографии. [Chatz2012] Из этого источника я и узнал о возможности использовать правило 511 в своих экспериментах.

Исследуя другие области, я столкнулся с тем, что если есть объекты, в которых применяются вычисления с модулем 2, то их можно расширить на произвольный модуль >= 2.

Проявление перестановки диагональной линии с произвольным модулем/основанием

Сначала, расширим процедуру вычисления правила. Теперь, вычисления правила будет вычислять сумму выбранных клеток окрестности взятую по модулю M>=2. Т.е., после того как мы вычислим сумму значений выбранных клеток, в качестве итогового значения клетки будем брать остаток от деления на число M. Благодаря вычислению по модулю M, клетки состояния АКА будут принимать целочисленные значения от 0 до M-1.

Клетки со значением 0 так и будем изображать черным цветом, клетки со значением M-1 будем изображать белым цветом, а промежуточные значения клеток будем изображать промежуточными оттенками серого цвета.

Кое-что об АКА с модулем >= 2 есть в [CAD1997].

Поэкспериментируем с правилом 15. Модуль и основание должны совпадать. Раз. Два.
Во втором случае на итерации 62 проявилось что-то отдаленно похожее:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Есть виртуальные клетки, но все это не то.

Потом я попробовал правило 511. Возьмем перестановку диагональной линии с модулем/основанием 3 и размером 243×243. На итерации 26 получим:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Четко видны виртуальные клетки 5×5 (правильней 6×6), и узнаваемый паттерн:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Возьмем перестановку диагональной линии с модулем/основанием 3 и размером 729×729. На итерации 80 получим виртуальный паттерн размером 18×18.

Аналогичные результаты можно получить, если взять перестановку диагональной линии с модулем/основанием 4. Но для этого придется вычислять правило с окрестностью размером 4×4, что не реализовано в приложении. Могу лишь показать готовые результаты. На итерации 42 получим виртуальный паттерн размером 8×8.

Попытаемся найти способ генерирования ППДЛ как мы это делали раньше.

Возьмем ППДЛ 18×18 клеток с модулем/основанием 3:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Применим правило 15 и получим ужасную кашу:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Начнем с начала. Применим правило 511:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Уже лучше. Но все равно много лишнего. И не охота обращать состояние вспять по правилу 511.

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

Например, правило 15-10. В него входят слагаемые c1, c2, c4, c8. Но слагаемые c2 и c8 входят со знаком минус. Получим функцию с1[t]=с1[t-1]-с2[t-1]+с4[t-1]-с8[t-1] (mod M)

Правило 15-5 дает состояние:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
А правило 15-10 дает состояние:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Остановимся на правиле 15-10. Поскольку в левой верхней четверти клетки содержат единицы (серые клетки.) Тогда как после правила 15-5 — двойки (белые клетки.) А единица ближе к началу числовой оси.

Применим цифро-реверсивную перестановку строк в каждой четверти последнего состояния кнопкой 4DRP(y) и получим:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Состояние можно разделить на четверти, и в каждой из них диагональная линия с соответствующим значением.

И так, нам стало известно состояние, которое нужно получить после применения правила 15-10. Осталось обратить вспять это состояние. Распишем правило 15-10:
с1[t]=с1[t-1]-с2[t-1]+с4[t-1]-с8[t-1] (mod M), где с1[t] — известная клетка состояния, содержащего перестановки диагональных линий в каждой четверти с соответствующим значением, а с1[t-1], с2[t-1], c4[t-1], с8[t-1] — неизвестные клетки ППДЛ, M — модуль (на данный момент он равен 3.) Зафиксируем значения с1[t-1], с2[t-1], с8[t-1] как это мы делали ранее. Решим уравнение для с4[t-1]. Получим:
с4[t-1] = с1[t]-с1[t-1]+с2[t-1]+с8[t-1] (mod M). Вычислив все неизвестные клетки мы получим искомый паттерн.

Таким образом, получение паттернов с модулем/основанием M >= 2 происходит аналогично. Нужно взять состояние, четверть которого имеет размер, в виде степени основания. В каждой четверти нарисовать диагональные линии с цифро-реверсивной перестановкой. В левой верхней и правой нижней четверти клетки принимают значение 1. А две другие четверти принимают значение M-1. Затем обратить вспять полученное состояние по правилу 15-10. Исходный код.

Единственное что смущает, что паттерн был выявлен с помощью правила 511-0. Чтобы удостовериться в правильности догадок проверим правило 15-10 на перестановленной диагональной линии. На итерации 52 получим:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Картина идентична полученной ранее с помощью правила 511-0 с точностью до смещения.

Эксперименты с другими размерами состояния АКА с применением правила 15-10 дают паттерны с виртуальными клетками, которые совпадают с ППДЛ, которое генерируется приведенным алгоритмом.

Мне также, удалось реализовать генерацию ППДЛ с основанием/модулем 3 с помощью блочно-рекурсивное построение матриц. Исследуя блочную структуру ППДЛ, я заметил, что структура блоков становиться все сложнее с увеличением модуля/основания. Также становится заметным элемент похожий на матрицу дискретного преобразования Фурье (т.е. матрица в виде таблицы умножения по модулю.) Но я не хочу перегружать эту статью подробным исследованием в этом направлении. Может кому-то будет интересней изучить это самостоятельно.

* * *
Пересмотрим свойства ППДЛ.

Некоторые свойства проявления перестановки диагональной линии с модулем/основанием >= 2

Свойство 1
Свойство 2

Клетки первой строки и первого столбца равны нулю. Это свойство без изменений.

Свойство 3

Клетки на строке N/2 и столбце N/2 равны соответствующей координате клетки, взятой по модулю M. К этому свойству добавился еще один параметр M.

Свойство 6

Если к ППДЛ применить правило 15-10, то мы получим состояние, которое содержит перестановки диагональной линии в каждой четверти. Перестановки в левой верхней четверти и в правой нижней четверти принимают значение 1, а перестановки в двух других четвертях принимают значение M-1. Это свойство стало параметрическим. Кроме того, процедура вычисления правила содержит знаки минус при слагаемых.

Свойство 5

Я подбирал правило АКА для этого свойства и пока нашел правило 511-510.
Если модуль/основание равны трем, то свойство выполняется и появляется промежуточный паттерн:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Но это свойство не всегда выполняется, если модуль/основание больше трех.

Свойство 6

С правилом 15-0 это свойство не рассматривалось, т.к. оно не наблюдалось. С использованием правила 15-10 стало возможным получить ППДЛ без модуля вообще (в построении перестановок диагональных линий модуль M может приравниваться 0.) В приложении можно задать модуль соответствующий максимальному значению клетки без модуля. Получим ППДЛ в такой форме:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..

Альтернативно применение правила 15-0 и 15-10

Если нарисовать произвольный контур или совокупность точек и обратить состояние по правилу 15-10 при достаточно большом модуле, то получится некоторый градиентный рисунок. Например, диагональная линия (нажмите Reverse rule.)

Используя постепенное перемещение контуров и обращение правила 15-10 создал различные абстрактные анимации и выложил их на YouTube. В описании под каждым видео прилагается ссылка на исходные код.

Интересный результат получится если обратить перестановку диагональной линии по правилу 15-0, причем, начальные значения клеток первой строки и первого столбца равны соответствующей координате клетки:

.
При создании этого видео также применяется правило АКА побитово и другие манипуляции.

Рассмотрим, что получается при обращении по правилу 15-0 без модуля:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Вид неказистый. Заметно чередование клеток. Учтем это.

Предлагаю последовательно прорисовать (там два файла) все значение, которые принимают клетки полученного состояния. Для наглядности, при увеличении значения, предыдущие значение будет постепенно угасать. Клетки с четными и нечетными координатами будут изображены различными цветами:
что такое бит реверсная перестановка. image loader. что такое бит реверсная перестановка фото. что такое бит реверсная перестановка-image loader. картинка что такое бит реверсная перестановка. картинка image loader. Перестановки, которые обобщают перестановку с обращением битов путем обращения смежных блоков битов в двоичных представлениях их индексов, могут использоваться для чередования двух последовательностей данных одинаковой длины на месте..
Хорошо виден контур, который проявляется в видео.

Описание функций веб-приложения

Приложение опубликовано на GitHub. Оно полностью реализовано на JavaScript с использованием React. Это мой первый проект на JavaScript. Его работа проверялась в Internet Explorer 11, FireFox 30.0 и эпизодически в Chrome 35.0. В Internet Explorer отсутствует редактор числовых полей, не работает скрытие элементов выпадающего списка. В IE и Chrome действуют заблокированные кнопки.

Благодаря React, очень удобно разрабатывать приложение. В особенности, это касается динамического изменения элементов пользовательского интерфейса.

Кратко пройдусь по всем элементам приложения.

Base — основание для некоторых элементов приложения и вычислений. Число от 2 до 4096.

Modulus — модуль для некоторых вычислений. Число от 2 до 4096.

Scale — масштаб отображения состояния АКА. Размер и масштаб в совокупности ограничены 4096 пикселями, чтобы случайно не возникло жутких висов браузера.

Pattern — шаблоны начальных состояний АКА. О них будет написано ниже.

Apply rule — применить правило АКА и отобразить следующее состояние. Результат вычислений следующего состояния зависит от модуля, правила, знака правила и от текущего состояния.

Reverse rule — вычислить предыдущее состояния АКА приняв клетки первой строки и первого столбца искомого состояния равными нулю. Вычисление искомого состояние зависят от модуля, от правил и знаков с индексами 1, 2, 4, 8 и от текущего состояния. Причем правило с индексом 4 обязательно должно присутствовать. Интересные результаты получаются при выборе шаблона «Manifestation of PDL» и правила 15-10.

BRP(y)/DRP(y) — бит-реверсивная (цифро-реверсивная) перестановка строк. Все остальное аналогично. Добиться перестановки столбцов можно добиться последовательным нажатием DRP(x,y) и DRP(y).

Rule # — задает какие слагаемые участвуют в процедуре вычисления правила АКА как по номеру, так и с помощью флажков, которые соответствуют клеткам окрестности. Число от 0 до 511.

Sign # — задает знаки соответствующих слагаемых процедуры вычисления правила. Число от 0 до 511. При значении 0 все слагаемые положительны. Если какой-то флажок отмечен, то соответствующее слагаемое берется со знаком минус. Когда модуль равен 2, то знаки не имеют значения.

Подсказка Rule/Sign — активно реагирует на изменения правила. Ноль означает, что соответствующее слагаемое не участвует в правиле. Плюс — положительное слагаемое. Минус — отрицательное слагаемое.
Rule bits layout — шпаргалка по индексам правила, которые в сумме составляют номер правила.

Make image — создает копию текущего состояния АКА в виде картинки, которую можно сохранить на диск по клику по ней правой кнопкой мыши. Также удобно использовать, если нужна копия состояния АКА для визуального сравнения со следующими итерациями.

Шаблоны из списка «Pattern»

(unknown) — устанавливается после любых изменений.

Empty — все клетки состояния АКА устанавливаются в 0.

Diagonal Line — диагональная линия. Значение устанавливаемых клеток равно 1.

Exclusive Or — генерация паттерна побитового XOR координат клеток. Итоговое значение клетки берется по модулю (modulus.) Клетки принимают значения от 0 до modulus-1. Эксперименты можно начать с одинаковым модулем и размером состояния АКА.

Modular Multiplication — генерация паттерна умножения координат клеток. Итоговое значение клетки берется по модулю (modulus.) Клетки принимают значения от 0 до modulus-1. Эксперименты можно начать с одинаковым модулем и размером состояния АКА. Этот паттерн встречается в дискретном преобразовании Фурье.

Random — генерация случайного состояния АКА. Клетки принимают случайные значения от 0 до modulus-1.

Источники

[BRH2012] grep, Голографические свойства бит-реверсивной перестановки, 2012.

[Khan1997] A.R. Khan, et.al., VLSI architecture of a cellular automata machine, 1997.

[Chatz2012] Savvas A. Chatzichristofis, et.al., Encryption Using the Recursive Attributes of the eXclusive-OR Filter on Cellular Automata, 2012.

[CAD1997] Rafael Espericueta, Cellular Automata Dynamics, 1997.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *