Изменения
→Общие закономерности
= Базовые определения =
{{Определение
|definition=
'''Клеточный автомат'''<ref>Список заданий по ДМ 2к 2020 весна. URL: http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B9_%D0%BF%D0%BE_%D0%94%D0%9C_2%D0%BA_2020_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0Список_заданий_по_ДМ_2к_2020_весна</ref> представляет собой двусторонне бесконечную ленту, каждая ячейка которой может находиться в некотором состоянии.<br><br>
Множество состояний $Q$, обозначим состояние ячейки $i$ как $s[i]$.<br>
Изначально все ячейки находятся в состоянии $B \in Q$, кроме ячеек с номерами от $1$ до $n$. Ячейка с номером $i$, где $1 \le i \le n$ находится в состоянии $x_i$, где $x$ - входное слово (будем считать, что $\Sigma \subset Q$, $B \notin \Sigma$). <br><br>
|id=moore_neighborhood
|definition=
'''Окрестность Мура'''<ref>Окрестность Мура. URL: https://ru.wikipedia.org/wiki/%D0%9E%D0%BA%D1%80%D0%B5%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%9C%D1%83%D1%80%D0%B0Окрестность_Мура</ref> ячейки {{---}} совокупность ячеек в сетке (двумерном паркете, трёхмерном Евклидовом пространстве, разбитом на равновеликие кубы), имеющих общую вершину с данной ячейкой.<br>
Окрестность Мура порядка <tex>r</tex> в двумерном случае представляет собой квадрат со стороной <tex>2r + 1</tex><ref>Weisstein, Eric W. Moore Neighborhood. URL: https://mathworld.wolfram.com/MooreNeighborhood.html</ref>.
}}
|id=neiman_neighborhood
|definition=
'''Окрестность фон Неймана'''<ref>Окрестность фон Неймана. URL: https://ru.wikipedia.org/wiki/%D0%9E%D0%BA%D1%80%D0%B5%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D1%84%D0%BE%D0%BD_%D0%9D%D0%B5%D0%B9%D0%BC%D0%B0%D0%BD%D0%B0Окрестность_фон_Неймана</ref> ячейки {{---}} совокупность ячеек в сетке (двумерном паркете, трёхмерном Евклидовом пространстве, разбитом на равновеликие кубы), имеющих общую сторону (грань) с данной ячейкой.}} {{Определение|id=edem_def|definition='''Райский сад'''<ref name="edem">Сад Эдема (конфигурация клеточного автомата). URL: https://ru.wikipedia.org/wiki/%D0%A1%D0%B0%D0%B4_%D0%AD%D0%B4%D0%B5%D0%BC%D0%B0_(%D0%BA%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%BA%D0%BB%D0%B5%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B0)</ref> {{---}} конфигурация КА, которая не может появиться в результате «эволюции», потому что не имеет предшественников.}}{{Теорема|id=edem_theorem|about=сада Эдема|statement=Клеточный автомат в евклидовой вселенной является локально инъективным тогда и только тогда, когда он сюръективен.Другими словами, теорема утверждает, что сады Эдема существуют только в тех автоматах, в которых существуют близнецы.Данная теорема была выдвинута и доказана Эдвардом Муром<ref>Moore, E. F. (1962), Machine models of self-reproduction, Proc. Symp. Applied Mathematics Т. 14: 17–33</ref>.
}}
{{Определение
|definition=
'''Классы Вольфрама'''<ref>Wolfram, Stephen, A New Kind of Science. Wolfram Media, Inc., May 14, 2002. ISBN 1-57955-008-8</ref> {{---}} система классификации классификация клеточных автоматов, основанная на их поведении.
}}
<gallery mode="packed-hover" widths=3000px heights=400px>Image:Wolfram_classes.jpg|400px|300px|''Классы, предложенные С. Вольфрамом<ref name="skakov">Скаков П.С. Классификация поведения одномерных клеточных автоматов. СПб., 2007 — URL: http://is.ifmo.ru/diploma-theses/_skakov_master.pdf</ref>:''# После некоторого количества шагов система стабилизируется {{---}} все клетки поля переходят в одинаковое состояние;# Состояния могут быть различными, однако клетки в данном случае образуют наборы статичных или периодических простых структур;# Образуются сложные структуры, характер взаимодействия которых во многих случаях выглядит хаотическим;# Сложные структуры, очень сложное, порой непредсказуемое (хаотичное) взаимодействие.</gallery>
== Классификация Эпштейна ==
В свою очередь он предложил систему классификации двухмерных двоичных клеточных автоматов, призванную выделять кандидатов в универсальные клеточные автоматы.
<gallery mode="packed-hover" widths=500px heights=250px>Image:Eppstein_classes.jpg|250px|500px|''Классы, предложенные Д. Эпштейном<ref name="skakov" />:''# Автомат предусматривает расширение объектов поля: в клетке не "зарождается жизнь" при наличии одного "живого" соседа;# Автомат не предусматривает расширения объектов поля: в клетке не "зарождается жизнь" при наличии двух</трех "живых" соседей;# Автомат не предусматривает расширения уменьшения объектов поля: клетка не "умирает" от "перенаселения" или "одиночества";# Автоматы, предусматривающие как расширение, так и уменьшение объектов поля.<brgallery>
Однако, данная классификация так же имела серьезные проблемы, и, в конечном счете, не удовлетворяла своему назначению.
Более подробные описания данных классификаций, а также других наиболее распространенных, можно найти в работе П.С. Скакова<ref name="skakov" />. В ней, в том числе, были выделены основные достоинства и недостатки различных классификаций, и предложена новая, являющаяся уточнением и модификацией существующих и решающая многие их проблемы.
}}
В соответствии с определением, код может быть вычислен следующим образом:
# Определить все возможные конфигурации состояний окрестности данной ячейки;
# Интерпретируя каждую конфигурацию как число, как описано выше, отсортировать их по убыванию;
# Для каждой конфигурации определить состояние, которое будет иметь данная ячейка в соответствии с этим правилом правилами переходов на следующей итерации;
# Интерпретируя полученный список состояний как <tex>S</tex>-арное число, преобразовать это число в десятичное. Полученное десятичное число является кодом Вольфрама.
<br>
Далее в статье будут приведены наиболее известные правила.<br>
=== Правило 30 ===
'''Правило 30''' {{---}} [[Линейный клеточный автомат, эквивалентность МТ|ЛКА]] с двумя состояниями (0 и 1).
}}
[[Файл:Rule30.png|thumb|300px|right|Эволюция клеточного автомата по Правилу 30]]
<br>
Для Правила 30 в таблице даны правила перехода центральной клетки триады в следующее состояние:<br>
{| class="wikitable" align="center" style="text-align:center"
Шаг работы автомата состоит в одновременной замене значения в любой ячейке на сумму по модулю 2 её двух соседей.
}}
[[Файл:Rule90.png|thumb|300px|right|Эволюция клеточного автомата по Правилу 90]]
<br>
Правила перехода для Правила 90:
{| class="wikitable" style="text-align: center"
Шаг работы автомата состоит в одновременной замене значения в любой ячейке на сумму по модулю 2 её двух соседей.
}}
[[Файл:Rule110.png|thumb|300px|right|Эволюция клеточного автомата по Правилу 110]]
<br>
Правила перехода для Правила 110:
{| class="wikitable" style="text-align: center"
|}
Так как <tex>1101110_2 = {110}_{10}</tex>, данное правило называется Правилом 110.
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
=== Правило 184 ===
'''Правило 184''' {{---}} [[Линейный клеточный автомат, эквивалентность МТ|ЛКА]] с двумя состояниями (0 и 1).<br>
}}
[[Файл:Rule184.png|thumb|300px|right|Эволюция клеточного автомата по Правилу 184]]
<br>
Правила перехода для Правила 184:
{| class="wikitable" style="text-align:center;"
= Клеточные автоматы на двумерной решетке =
== Игра «Жизнь» ==
Некоторые из приведенных далее определений были взяты с этого<ref>Игра "Жизнь". URL: https://ru.wikipedia.org/wiki/%D0%98%D0%B3%D1%80%D0%B0_%C2%AB%D0%96%D0%B8%D0%B7%D0%BD%D1%8C%C2%BBИгра_«Жизнь»</ref> сайта, а также со смежных с нем страниц.
{{Определение
|definition=
'''«Жизнь»''' {{---}} клеточный автомат, представляющий из себя бесконечное клетчатое поле, каждая клетка может быть белой или черной. Состояние, в которое перейдет клетка на следующем шаге, зависит от состояний ее соседей в [[#moore_neighborhood | окрестности Мура]].
}}
=== Состояния и правила переходов ===Каждая клетка поля может быть либо белого, либо черного цвета. Белые клетки называются «живыми», черные {{| class="wikitable"|---}} «мертвыми».! scope="col"| Название состояния! scope="col"| Цвет! scope= Правила ==="col"| Переходит в cостояние|-| «Живая клетка»На каждом шаге автомата ко всем клеткам применяются следующие правила:| Белый* В черная клетка| «мертвая клетка», имеющая если имеет ровно три белые соседние клетки, становится белой («зарождается жизнь»);* Если у белой клетки есть две или три белые соседние клетки, то эта клетка сохраняет свой цвет;* Если у белой клетки соседей белого цвета меньше двух или больше трёхтрех соседей в состоянии «живая клетка».|-| «Мертвая клетка»| Черный| «живая клетка», клетка становится черной («умирает от одиночества» или «от перенаселённости»)если имеет ровно трех соседей в состоянии «живая клетка».|}
=== Основные элементы ===
В данном разделе используются термины из «Словаря Жизни»<ref>«Словарь Жизни». URL:http://beluch.ru/life/lifelex/lexr_o.htm</ref>.
==== Устойчивые фигуры ====
==== Долгожители ====
{{Определение
|definition=
'''Ружье''' {{---}} класс конфигураций, у которых основная часть циклически повторяется, как у осцилляторов, а также периодически создаёт космические корабли, которые удаляются от ружья. Данная конфигурация имеет два периода: '''период создания космических кораблей''' и '''период повторения состояний ружья'''.
}}
==== Паровозы ====
{{Определение
|definition=
'''Грабли''' {{---}} паровозы, оставляющие за собой след исключительно из космических кораблей.<br>
}}
==== Пожиратели ====
* ДДН {{---}} грабли, вырабатывающий паровозы;
* ДДД {{---}} грабли, вырабатывающий грабли.
== Wireworld ==
Клеточный автомат '''Wireworld'''<ref>Трофимов Д., Наумов Л. Реализация клеточного автомата WireWorld с помощью инструментального средства CAME&L и его зональная оптимизация, 2007. URL: http://is.ifmo.ru/works/wireworld/</ref> представляет собой синхронный автомат с двумерной решеткой из квадратов, каждая клетка которой может находиться в одном из четырех состояний.
}}
=== Состояния и правила переходов ===
{| class="wikitable"
|-
! scope="col"| Название состояния
! scope="col"| Цвет
! scope="col"| ЗначениеПереходит в состояние
|-
| Пустая клетка
| Черный
| Клетка, не занятая проводником
|-
| Проводник
| Желтый
| По проводнику могут распространяться электроны«голова электрона», если имеет ровно одного или двух [[#moore_neighborhood | соседей]] в состоянии «голова электрона»
|-
| Голова электрона
| Красный
| Проводник, занятый электроном: вместе с «хвостом «хвост электрона» задает направление движения электрона.
|-
| Хвост электрона
| Синий
| Проводник, занятый электроном: вместе с «головой электрона» задает направление движения электрона.«проводник»
|}
=== Общие закономерности ===
Движение "электрона" в "цепи" происходит со следующими закономерностями:
* При прохождении электроном разветвления "цепи", в каждое из новых направлений уходит по "электрону";
* При одновременном столкновении двух трёх и более "электронов", они исчезают.
* При толщине "провода" больше $2$, "электроны" начинают двигаться хаотично.
=== Основные элементы ===
==== Тактовый генератор ====
Данный элемент представляет собой «петлю» из клеток проводникаиспользуется для получения электронов, так как при каждом прохождении разветвления электроном, к которой подсоединен провод – выход движущимся по петле генератора, и изначально содержит один образуется новый электрон. С периодом, равным длине петли, этот электрон достигает точки соединения петли с выходом, и дальше разветвляется на два электрона, один из которых идет по выходу, второй – дальше по петле. Таким образом, этот элемент можно использовать для получения в проводе бесконечного количества Частота появления электронов, следующих один за другим на расстоянии, регулируемом регулируется длиной петли.<br>
<gallery mode="packed-hover">
==== Диод ====
<br>
<gallery mode="packed-hover">
==== Логические элементы OR, XOR и NAND ====
<gallery mode="packed" widths=75px heights=200px>
Image:XOR_wireworld.jpg|''XOR''
Image:NAND_wireworld.jpg|''NAND''
</gallery>
= Самовоспроизводящиеся клеточные автоматы =
В ходе работы над математическими и логическими проблемами самовоспроизведения, Дж. фон Нейман поставил пять основных вопросов, которые подробно описаны в книге "Физика процессов эволюции"<ref name="physics">Эбелинг Вернер, Энгель Андреас, Файстель Райнер. Физика процессов эволюции. Пер. с нем. Ю. А. Данилова. — М.: Эдиториал УРСС, 2001. - 328 с.</ref>:<br>«
# Логическая универсальность.
## При каких условиях определенный класс автоматов логически универсален?
## Может ли при конструировании автомата автоматом происходить усложнение типа автомата?
## Может ли такая эволюция происходить в направлении от менее эффективного к более эффективному автомату? (при надлежащем определении понятия эффективности)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::».
В то время, как Тьюринг показалдоказал, что предложенный им класс автоматов логически универсален, т. е. автоматы [[Машина Тьюринга могут выполнить произвольный логический процесс (произвольное вычисление), если их снабдить конечным, но сколь угодно продолжаемым запоминающим механизмом (памятью). Тьюринг показал также, что существует универсальная |машина Тьюринга]] является логически универсальной, способная выполнять любые вычисления, тем самым дав утвердительный ответ на первый вопрос.<br>Дж. фон Нейман доказал существование автомата, удовлетворяющего всем пяти свойствам, построив двепостроил автомат<ref name="mitin">Г. Г. Малинецкий, Н. А. Митин, С. А. Науменко, “Нанобиология и синергетика. Проблемы и идеи (Часть 2)”, Препринты ИПМ им. М. В. Келдыша, 2005, 081. URL: http://spkurdyumov.ru/uploads/2013/09/miittin.pdf</ref> модели, одна удовлетворяющий всем пяти свойствам. Одна из которых таких моделей будет описана далее.
== Автомат фон Неймана ==
|id=neiman_auto
|definition=
'''Автомат фон Неймана''' (клеточная модель самовоспроизведения<refname="neuman_automata">Нейман Дж. фон. Теория самовоспроизводящихся автоматов. М.: Мир, 1971</ref>) {{---}} двумерный клеточный автоматобъект, представляющий собой поле, в каждой клетке поля которого находится конечный автомат с 29 состояниями, каждая клетка имеет 4 соседей, информация приходит с задержкой по крайней мере на 1 единицу времени.
}}
<br>
::: <tex>
u =
\begin{equation*}
\begin{cases}
0 &\text{—$\;$ обычное состояние,}\\ 1 &\text{—$\;$ специальное состояние;}\\ \end{cases}\end{equation*}</tex><br>::: <tex>\alpha = \begin{equation*} \begin{cases} 0 &\text{—$\;$ вправо,}\\ 1 &\text{—$\;$ вверх,}\\ 2 &\text{—$\;$ влево,}\\ 3 &\text{—$\;$ вниз;}\\
\end{cases}
\end{equation*}
</tex><br>
::: <tex> \alpha = 0, \dots, 3 </tex> {{---}} выходное направление (вправо, вверх, влево, вниз);
::: <tex>
\varepsilon =
\begin{equation*}
\begin{cases}
0 &\text{—$\;$ состояние покояпокой,}\\ 1 &\text{—$\;$ возбужденное состояниевозбуждение;}\\
\end{cases}
\end{equation*}
</tex><br>
::: <tex>
\varepsilon =
\begin{equation*}
\begin{cases}
0 &\text{—$\;$ состояние покояпокой,}\\ 1 &\text{—$\;$ возбужденное состояниевозбуждение;}\\
\end{cases}
\end{equation*}
\begin{equation*}
\begin{cases}
0 &\text{—$\;$ состояние покоя покой на следующем такте,}\\ 1 &\text{—$\;$ возбужденное состояние возбуждение на следующем такте;}\\
\end{cases}
\end{equation*}
</tex><br>
# Пусть Клетка в состоянии $n_{\vartheta}^{t - 1} = T_{u\alpha\varepsilon}$перейдет в состояние:## $n_{\vartheta}^{t} = U \Leftrightarrow \forall \{$, если среди ее соседей найдется ${\vartheta}'\; | : \; \vartheta - {\vartheta}' = v^{{\alpha}'} \; \wedge \; u \neq u'\} \;\; n_{\vartheta'}^{t - 1} = $ в состоянии $T_{u'{\alpha}'{\vartheta}'}$;## $n_{\vartheta}^{t} = T_{u{\alpha}1} \Leftrightarrow$ не выполнено , если пункт $1.1$ не выполнен, и выполнено одно среди ее соседей найдется клетка, удовлетворяющая одному из следующихусловий:### $\forall\{{\vartheta}'\; | : \; \vartheta - {\vartheta}' = v^{{\alpha}'} \neq -v^\alpha\} \;\; n_{{\vartheta}'}^{t - 1} = $ в состоянии $T_{u{\alpha}'1}$;### $\forall\{{\vartheta}'\; | : \; \vartheta - {\vartheta}' = v^{\beta} \neq -v^\alpha, \; \beta = 0,\dots, 3\} \;\; n_{\vartheta}^{t - 1} = $ в состоянии $C_1$;## $n_{\vartheta}^{t} = T_{u{\alpha}0}$, иначево всех остальных случаях.# Пусть Клетка в состоянии $n_{\vartheta}^{t - 1} = C_{\varepsilon\varepsilon'}$перейдет в состояние:## $n_{\vartheta}^{t} = U \Leftrightarrow \forall \{$, если среди ее соседей найдется ${\vartheta}'\; | : \; \vartheta - {\vartheta}' = v^{{\alpha}'}\} \;\; n_{\vartheta'}^{t - 1} = $ в состоянии $T_{1{\alpha}'1}$;## $n_{\vartheta}^{t} = C_{\varepsilon'1} \Leftrightarrow$ не выполнено , если пункт $2.1$ не выполнен, и выполнены следующие условия:### среди ее соседей найдется клетка $\forall\{{\vartheta}'\; | : \; \vartheta - {\vartheta}' = v^{{\alpha}'} \} \;\; n_{{\vartheta}'}^{t - 1} = $ в состоянии $T_{0{\alpha}'1}$;### Для всех , а все остальные такие клетки не будут находиться в состоянии $\{{\vartheta}'\; | \; \vartheta - {\vartheta}' = v^{{\alpha}'} \} \;\; n_{{\vartheta}'}^{t - 1} = T_{0{\alpha}'0}$;
## $n_{\vartheta}^{t} = C_{\varepsilon'0}$, иначе.
# Пусть Клетка в состоянии $n_{\vartheta}^{t - 1} = U$перейдет в состояние:## $n_{\vartheta}^{t} = S_0 \Leftrightarrow \forall \{$, если среди ее соседей найдется ${\vartheta}'\; | : \; \vartheta - {\vartheta}' = v^{{\alpha}'}\} \;\; n_{\vartheta'}^{t - 1} = $ в состоянии $T_{u{\alpha}'1}$;## $n_{\vartheta}^{t} = U$, иначево всех остальных случаях.# Пусть Клетка в состоянии $n_{\vartheta}^{t - 1} = S_\Sigma, \; \Sigma=0,\dots,000$перейдет в состояние:## $n_{\vartheta}^{t} = S_{\Sigma1} \Leftrightarrow \forall \{$, если среди ее соседей найдется ${\vartheta}'\; | : \; \vartheta - {\vartheta}' = v^{{\alpha}'}\} \;\; n_{\vartheta'}^{t - 1} = $ в состоянии $T_{u{\alpha}'1}$;## $n_{\vartheta}^{t} = S_{\Sigma0}$, иначе во всех остальных случаях.
=== Принцип работы ===
== Автомат Лэнгтона ==
{{Определение
|definition=
'''Автомат Лэнгтона''' {{---}} двумерный клеточный самовоспроизводящийся автомат, представляющий собой сигнальную ленту, заключенную между двумя стенками.<br>
В автомате Лэнгтона клетка может находиться в одном из восьми возможных состояний. Состояние клетки в следующий момент времени определяется состоянием в текущий момент состоянием четырех соседей.<br>Сигнальная лента несет информацию, необходимую для создания копии автомата.
}}
=== Состояния ===
==== Сигнальные состояния ====Состояния $3-7$ относят к классу сигнальных:* $0,\;1,\;23$ {{---}} служебные состоянияиспользуется при повороте;* $3,\;4,\;5,\;$ и $6,\;7$ {{---}} сигнальные состоянияиспользуются для самовоспроизведения.
=== Принцип работы ===
<gallery mode="packed" widths=75px heights=200px>Image:langton_start.jpg|''Начальная конфигурация' TODO'Image: ADD PICTURESlangton_copy.jpg|''Порожденная копия после 151 такта''<br/gallery>Когда конца ленты достигает сигнал $70$, то длина ленты увеличивается на $1$. Когда в конец ленты приходят два сигнала $40$, то лента делает поворот налево. Копия исходного состояния получается через $151$ такт времени после запуска автомата.
* Увеличение длины ленты на $1$ достигается путем передачи на ее конец сигнала $70$;* Поворот ленты влево достигается путем передачи на ее конец сигнала $40$;* Воспроизведение исходной конфигурации происходит через $151$ такт времени после запуска автомата. = Тюрьмиты Тьюрмиты =
{{Определение
|definition=
'''Тьюрмит''' <ref name="mitin" /> {{---}} это движущаяся по плоскости, размеченной клетками, машина Тьюринга, которая хранит свое внутреннее состояние, и, в зависимости от него и от цвета клетки, на которой она стоит, изменяет свое состояние, перекрашивает клетку в другой цвет и делает поворот влево или вправо.
}}
[[Файл:Turmite_Langton_ant.png|thumb|300px|right|Результат работы [https://ru.wikipedia.org/wiki/Муравей_Лэнгтона муравья Лэнгтона] после 27731 итераций]]
Каждая строка программы записывается в следующем виде:
<pre><текущее состояние> <цвет клетки под тьюрмитом> <новый цвет клетки> <смена направления> <новое состояние></pre>
<br>
= См.также =
* [[Линейный ограниченный автомат]]
* [https://ru.wikipedia.org/wiki/Автомат_фон_Неймана Автомат фон Неймана]
* [https://ru.wikipedia.org/wiki/%D0%9C%D1%83%D1%80%D0%B0%D0%B2%D0%B5%D0%B9_%D0%9B%D1%8D%D0%BD%D0%B3%D1%82%D0%BE%D0%BD%D0%B0 Муравей_Лэнгтона Муравей Лэнгтона]* Лобанов А.И. Модели клеточных автоматов<ref>Лобанов А.И. Модели клеточных автоматов // Компьютерные исследования и моделирование, 2010, т. 2, № 3, с. 273-293. URL: http://vst.ics.org.ru/uploads/crmissues/kim_2010_2_3/crm10304.pdf</ref>
= Литература =