1. ВВЕДЕНИЕ
Конечные автоматы представляют из себя абстрактные математические модели дискретных устройств, имеющих один вход и один выход и в каждый момент времени находящихся в некотором состоянии из множества возможных (см., например, [1], [2]). Они используются в задачах моделирования многих естественных и технологических процессов. Так, в работе [3] был предложен клеточный автомат, развивающийся по очень простым правилам, но моделирующий поведение различных сложных систем. Частным случаем конечных автоматов являются клеточные автоматы, которые используются как инструмент моделирования процессов в различных областях знания, таких как градостроительная наука ([4], [5]), задачи моделирования транспортных потоков [6], физика жидких кристаллов [7] и др. (см., например, [8], [9], [10]).
Клеточный автомат полностью определяется своим начальным состоянием и правилом эволюционирования, которое может быть задано десятичным числом, называемым кодом Вольфрама, впервые введенным в работах [11], [12].
В компьютерных технологиях клеточные автоматы рассматриваются в связи с низкоуровневыми и архитектурными вопросами, такими как аппаратная генерация случайных чисел [13], создание новой вычислительной архитектуры, основанной на квантовых точках [14], вычисления на GPU [15].
Многие вопросы, связанные со свойствами инъективности, сюръективности, обратимости клеточных автоматов, приводят к рассмотрению линейной теории (см., например, [16], [17], [18]).
В данной работе мы вводим понятие линейности для клеточного автомата на одномерной конечной (или бесконечной) решетке со значениями в некотором конечном поле, что позволяет построить матричное представление для таких систем в виде трехдиагональных теплицевых матриц. Для решения данной задачи строится взаимно-однозначное соответствие между кодами Вольфрама и операторами Жегалкина. Следует отметить, что многочлены Жегалкина хорошо известны в дискретной математике и являются удобным средством представления функций булевой логики [19].
2. КЛЕТОЧНЫЕ АВТОМАТЫ И КОДЫ ВОЛЬФРАМА
В работе [11] был введен класс элементарных клеточных автоматов. Рассмотрим бесконечную последовательность из пронумерованных клеток
которую будем называть начальным состоянием клеточного автомата (здесь верхний индекс <<0>> соответствует начальному состоянию клеточного автомата). Зададим правила преобразования состояния за один шаг (такт времени). Верхний индекс соответствует номеру шага (такта). Окрестностью i-й клетки на k-м шаге назовем множество состоящее из самой клетки и двух ее ближайших соседей. Множество всех типов окрестностей имеет мощность 23. Правилом клеточного автомата назовем трехместную булеву функцию
определяющую состояние клетки si на k-м шаге в зависимости от состояния ее окрестности на (k – 1)-м шаге. Очевидно, что для задания такой функции нужно определить ее значения на 23 = 8 наборах аргументов
. (1)
На векторном языке речь идет о задании восьмимерного бинарного вектора
где аргументы r0,…,r7 соответствуют наборам (1), а в клетку записывается значение rj, . Компонента rj вектора r соответствует двоичному представлению числа j, записанного слева направо (рис. 1).
Рис. 1. Правило клеточного автомата с кодом Вольфрама W=254.
Определение 1. Элементарным клеточным автоматом назовем пару .
В данной статье мы ограничимся рассмотрением клеточных автоматов, для которых правило преобразования предыдущего состояния одно и то же на каждом такте. Этим свойством не обладают, например, клеточные автоматы, моделирующие поведение фотонных топологических изоляторов [20]. Множество правил для класса элементарных клеточных автоматов состоит из 223=256 элементов. Правило r можно закодировать десятичным числом, равным
которое мы будем называть кодом Вольфрама. Упорядочим правила клеточного автомата в соответствии с возрастанием кодов Вольфрама.
Правило клеточного автомата r = (0,1,1,1,1,1,1,1) с кодом Вольфрама W=254 изображено на рис. 1, где темные клетки — нули, а светлые — единицы. В каждой Т-образной фигуре, соответствующей определенному виду окрестности, верхний ряд клеток — , , , нижняя клетка — .
Действие клеточного автомата с кодом Вольфрама W=30 и с начальным состоянием s0= , где , при i ≠52 изображено на рис. 2.
Рис. 2. Первые 50 тактов клеточного автомата с кодом Вольфрама W=30 с одноточечным начальным состоянием.
Иногда в случае работы с конечной последовательностью
ее замыкают, положив и . Тем самым, избавившись от особенностей на границе, мы можем применять правила преобразования ко всем клеткам последовательности s0.
Для иллюстрации построения взаимно-однозначного соответствия между операторами Жегалкина и кодами Вольфрама рассмотрим наиболее простой нетривиальный пример одномерных клеточных автоматов с проколотой окрестностью , состоящей только из правого и левого соседей клетки. В этом случае правила задаются четырехмерными бинарными векторами, а общее количество правил в этом случае составляет 24 = 16. На рис. 3 представлены все правила клеточного автомата, для которого состояние клетки зависит от состояний только правого и левого соседей. При этом индекс i в записи правила wi является кодом Вольфрама соответствующего клеточного автомата.
Рис. 3. Все правила клеточного автомата, для которого состояние клетки зависит только от состояний соседних клеток.
Код Вольфрама фактически является числовым способом представления правила, управляющего поведением клеточного автомата, и вычисляется с помощью программно реализованного алгоритма. Увеличение размерности пространства или расширение окрестности клеточного автомата приводят к росту числа знаков, необходимых для записи кода Вольфрама определенного правила, так же, как и числа самих правил. Данное обстоятельство влечет необходимость разработки алгоритмов вычисления кодов Вольфрама, проверки правил на их соответствие заданным условиям и т.п.
Примером клеточных автоматов с большими кодами Вольфрама являются трехцветные клеточные автоматы, рассмотренные в статье [20]. В данной работе на языке таких автоматов дается описание игры Руднера, являющейся упрощенной моделью топологического изолятора. Количество правил в рассматриваемом классе клеточных автоматов существенно превосходит 10100. Рассмотрим правила 1–4, где
правило 1 = 871896424859609582029110705858
6077169685819630062952928588471702570724518
4955461514567350134642761960475397463135221;
правило 2 = 871896424859609582029110705858
6077169686562900693751685664642053530708374
8847009511688466704807114187492178155124653;
правило 3 = 871896424859609582029110705858
6077169686575887924022212825477616423051103
2271591445048493784239863824054082719415381;
правило 4 = 871896424859609582029110705858
6077169686575887949397362871618148203681507
8820525046538331816246773325439025350595533.
Эти правила включаются в определенной последовательности для клеток, в зависимости от четности, которая определяется шахматной раскраской, в соответствии с табл. 1.
Таблица 1. Четырехтактный клеточный автомат, моделирующий игру Руднера
Параменты | Такт 1 | Такт 2 | Такт 3 | Такт 4 |
Четная клетка | Пр. 1 | Пр. 2 | Пр. 3 | Пр. 4 |
Нечетная клетка | Пр. 3 | Пр. 4 | Пр. 1 | Пр. 2 |
Отметим, что предложенный клеточный автомат может быть реализован с помощью нарушенного полного внутреннего отражения в массиве, составленном из стеклянных призм [21], и описан на языке математических бильярдов (см., например, [22]).
Проиллюстрируем, как предложенная в [20] модель может быть использована при моделировании транспортного потока. Для этого реализуем транспортную сеть в виде трехцветного клеточного автомата, представленного на рис. 4, где светлые клетки изображают край проезжей части, на которой расположены машины. Клеточный автомат работает на основе периодического четырехтактного правила, описанного в табл. 1. Клетки машин перемещаются по проезжей части. Для того чтобы машины не исчезали, элемент транспортной сети превращен в двумерный тор с помощью стандартной процедуры подклеивания противоположных сторон.
Рис. 4. Элемент транспортной сети, смоделированной с помощью клеточного автомата.
На каждом такте наличие машины в клетке приводит к инкрементированию значения, приписанного данной клетке (начальное значение равно 0), а тепловая карта показывает, в каких клетках чаще всего находилась машина. Через 200 тактов работы клеточного автомата получим график распределения машин на элементе транспортной сети, изображенный на рис. 5.
Рис. 5. Результат моделирования загруженности транспортной сети.
Отметим, что данный трехцветный клеточный автомат на элементе транспортной сети ведет себя согласовано с моделью Нагеля—Шрекенберга (см., например, [6, 2.2.4]).
3. ОПЕРАТОРЫ ЖЕГАЛКИНА
Исследуя подобные системы, мы применяем алгебраические методы в теории клеточных автоматов, переходя при этом на эквивалентный язык операторов Жегалкина.
Определение 2. Многочленом Жегалкина d от n переменных над полем /2 назовем выражение
где — мультииндекс длины n, .
Количество мономов в многочлене Жегалкина равно 2n. Роль произведения здесь играет конъюнкция, а в качестве суммы выступает сложение по модулю 2.
Пример 1. В случае трех переменных многочлен Жегалкина имеет вид
(2)
Пример 2. Выпишем все шестнадцать многочленов Жегалкина d(x1,x2) от двух переменных.
Каждый многочлен Жегалкина задает преобразование бинарного вектора по правилам, схожим с теми, что определены для класса элементарных клеточных автоматов.
Пусть — векторное пространство над полем /2.
Определение 3. Оператором Жегалкина с мультипликатором назовем отображение действующее по правилу
На рис. 6 проиллюстрированы действия операторов Жегалкина с мультипликаторами двух переменных. Нумерация рисунков совпадает с нумерацией из примера 2.
Рис. 6. Действия операторов Жегалкина с мультипликаторами двух переменных.
Определение 4. Оператор gd назовем линейным, если
для всех
4. ОПИСАНИЕ АЛГОРИТМА
Для нахождения линейных операторов Жегалкина были разработаны и программно реализованы алгоритмы, описание которых приводится ниже. Программная реализация алгоритмов на языке Python доступна по адресу https://github.com/vrkulikov/cellural_automata.
Приведем краткое описание алгоритмов. Алгоритм 7 преобразует десятичное число в двоичный код. Алгоритм 8 по коду Вольфрама, т.е. десятичному номеру правила клеточного автомата, строит многочлен Жегалкина. Алгоритм 9 вычисляет значение многочлена Жегалкина на векторе x. Алгоритм 10 реализует перебор всех построенных многочленов Жегалкина на трехклеточных шаблонах и выбор тех из них, которые индуцируют линейный оператор Жегалкина согласно определению 4.
Рис. 7. Линейные операторы Жегалкина с мультипликаторами трех переменных.
Приведенные алгоритмы позволяют получить полный список линейных операторов Жегалкина с мультипликаторами трех переменных, а именно, справедлив следующий результат: оператор gd является линейным в точности для следующего набора мультипликаторов
Действия линейных операторов Жегалкина проиллюстрированы на рис. 11.
Легко видеть, что действие оператора gd на вектор v V может быть представлено трехдиагональной теплицевой матрицей
где a1,a2,a4 — произвольные коэффициенты многочлена Жегалкина (2), а коэффициенты a0 и a3,a5,a6,a7 и равны нулю.
Сопоставим теперь каждому коду Вольфрама многочлен Жегалкина. Пусть r = (r0,r1,…,r7) — одно из 256 правил клеточного автомата. Рассмотрим многочлен Жегалкина d(x1,x2,x3) с произвольными коэффициентами a = (a0,a1,…,a7). Последовательно подставляя в d вместо переменных (x1,x2,x3) наборы значений (0,0,0),(1,0,0),(0,1,0),…,(1,1,1), получим систему линейных уравнений
(3)
с обратимой нижнетреугольной матрицей коэффициентов
определитель которой равен 1. Решая систему (3) для заданных правых частей (rj), j =0,…,7, найдем коэффициенты многочлена Жегалкина d.
5. ЗАКЛЮЧЕНИЕ
Для одномерных клеточных автоматов на эквивалентном языке операторов Жегалкина найдены линейные правила. Соответствие операторов Жегалкина и кодов Вольфрама может быть установлено в случае клеточных автоматов большей размерности, а также над конечным полем большего порядка. Для этого важно, чтобы сработал метод Гаусса решения системы линейных уравнений (3). Однако вопрос линейности в этих случае требует отдельного изучения.
БЛАГОДАРНОСТИ
Работа поддержана Красноярским математическим центром, финансируемым Минобрнауки РФ (Соглашение 075-02-2023-936).