Вызов Кода — Самый Длинный Бесконечный Цикл В 5 Состояниях

  • Автор темы HTFextethy29
  • Обновлено
  • 22, Oct 2024
  • #1

Заявление о вызове

Целью этого задания является построение 5-го штата. Бесконечная машина Тьюринга это занимает больше всего времени, чтобы остановиться. Поскольку машины Тьюринга с бесконечным временем могут работать бесконечное время, ваш результат будет «трансфинитным порядковым номером».

Это постановка задачи, но если вы не понимаете, что все это значит, или хотите углубиться в детали, остальная часть этой задачи — это некоторые определения и примеры, которые помогут вам. Если вам что-то непонятно или не объяснено, оставляйте комментарии.

Машины Тьюринга

Для ясности мы определим машины Тьюринга, используемые для решения этой задачи. Это будет довольно формально. Если вы знакомы с машинами Тьюринга, это одноленточный, двоичный Машина Тьюринга без явного состояния остановки и с возможностью нет смены двигаться. Но для абсолютной ясности вот как мы определим классическую машину Тьюринга и ее исполнение:

Машина Тьюринга состоит из \$3\$-кортежа, содержащего следующее:

  • \$Q\$: Конечный непустой набор состояний.
  • \$q_s : Q\$: Начальное состояние.
  • \$\delta : Q\times \{0,1\} \nrightarrow Q\times \{0,1\}\times\{1, 0, -1\}\$: частичная функция перехода, которая отображает состояние и двоичный символ, к состоянию, двоичному символу и направлению (влево, вправо или отсутствие движения).

Во время выполнения конкретной машины Тьюринга у машины есть состояние который представляет собой \$3\$-кортеж следующего:

  • \$\xi_\alpha : \mathbb{Z}\rightarrow \{0,1\}\$: лента представлен функцией преобразования целого числа в двоичный символ.
  • \$k_\alpha :\mathbb{Z}\$: Расположение считывающей головки.
  • \$q_\alpha : Q\$: Текущее состояние.

Для машины Тьюринга переход Функция принимает состояние машины на шаге \$\alpha\$ и сообщает нам состояние машины на шаге \$\alpha + 1\$. Это делается с помощью функции перехода \$\delta\$. Вызываем функцию \$\delta\$ с текущим состоянием и символом под заголовком чтения:

\$

\delta\left(q_\alpha, \xi_\alpha\left(k_\alpha\right)\right) \$ Если это не дает результата, то считаем, что машина имеет

  • остановлен
  • на шаге \$\alpha\$, и условие остаётся прежним. Если это дает результат \$\left(q_\delta, s_\delta, m_\delta\right)\$, то новое состояние в \$\alpha+1\$ будет следующим:
  • \$\xi_{\alpha+1}(k) = \begin{cases}s_\delta & k = k_\alpha \\ \xi_\alpha(k) & k \neq k_\alpha\end{cases}\ $ (То есть лента заменяет символ на считывающей головке символом, заданным \$\delta\$)

\$k_{\alpha+1} = k_\alpha+m_\delta\$ (то есть считывающая головка движется влево вправо или не движется вообще)

  • \$q_{\alpha+1} = q_\delta\$ (то есть новое состояние — это состояние, заданное \$\delta\$)
  • Дополнительно мы определяем состояние машины в момент времени \$0\$.
  • \$\xi_0(k)=0\$ (в начале ленты все нули)

\$k_0=0\$ (считывающая головка начинается с нуля)

\$q_0=q_s\$ (Начать в исходном состоянии)

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

Бесконечные ординалы В этом разделе я представлю концепцию трансфинитных ординалов в несколько неформальном контексте. Если вы хотите найти более формальное определение, это объяснение основано на определении ординалов фон Неймана..

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

  • бесконечные ординалы
  • Для этого мы воспользуемся специальной функцией \$g\$. Функция \$g\$ принимает набор чисел и возвращает нам наименьшее число, большее, чем все числа в этом наборе. Для конечного набора натуральных чисел это максимум плюс 1. Однако эта функция не определена только для натуральных чисел. Например, что такое \$g(\mathbb{N})\$ или наименьшее число, большее всех натуральных чисел. Чтобы создать наши ординалы, мы говорим

\$0\$ существует и является порядковым номером.

Если \$X\$ — набор ординалов, то \$g(X)\$ существует и является ординалом.

\$

\begin{eqnarray} \omega\times 2 &=& \omega+\omega &=& g(\{\omega + x : x\in \mathbb{N}\})\\\omega^2 &=& \omega\times\omega &=& g(\{\omega \times x + y : x\in \mathbb{N}, y\in \mathbb{N}\})\\

\omega^3 &=& \omega\times\omega\times\omega &=& g(\{\omega^2\times x+\omega\times y + z : x\in \mathbb{N}, y\ в \mathbb{N}, z\in \mathbb{N}\})\\

\omega^\omega &=& & & g(\{\omega^x\times y + z : x\in \mathbb{N}, y\in \mathbb{N}, z < \omega^x\} )\\

\end{eqnarray} \$ Если порядковый номер не является преемником другого порядкового номера, то есть не существует следующего меньшего порядкового номера, мы называем этот порядковый номер

предел порядкового номера

. Например, \$\omega\$, \$\omega\times3\$ и \$\omega^{\omega\times 2}+\omega^6\times 4\$ — все это предельные порядковые номера. \$3\$, \$\omega\times 5 + 12\$ и \$\omega^{\omega^\omega}+1\$ — нет. Некоторые авторы далее уточняют, что 0 не является предельным порядковым номером; мы будем подробно говорить об 0, когда будем говорить о предельных порядковых числах, чтобы избежать путаницы.

  • Бесконечные машины Тьюринга

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

  • Машины Тьюринга с бесконечным временем расширяют классические машины Тьюринга, чтобы иметь определенный ненулевой статус.
  • ограничивать ординалы
  • также. Это порядковые номера, определенные выше, которые не являются преемниками какого-либо предыдущего порядкового номера. Это дополнение делает состояние машины определяемым также и в трансфинитное время.

\$\$

Формальное определение

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

вызов кода — самый длинный бесконечный цикл в 5 состояниях

\$q_l : Q\$: Предельное состояние

И мы определяем состояние машины при некотором предельном ординале \$\lambda\$ как \$\xi_\lambda(k) = \limsup_{n\rightarrow \lambda} \xi_n(k)\$ \$k_n = 0\$

вызов кода — самый длинный бесконечный цикл в 5 состояниях

\$q_n = q_l\$

Пример

вызов кода — самый длинный бесконечный цикл в 5 состояниях

Здесь у нас есть диаграмма долго работающего автомата с двумя состояниями:

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

Для начала мы проследим за машиной через ее нормальное выполнение. Он начинается с \$q_1\$, и мы видим, что оттуда он

всегда

переходит к \$q_2\$, переворачивая ячейку под головкой чтения-записи. Так вот получается

ячейка включена.

Затем, поскольку ячейка включена, она вернется к \$q_1\$, отключив ячейку и переместившись вправо. Это ставит нас в то же самое состояние, что и в начале, за исключением того, что головка чтения-записи продвинулась на 1.

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

Теперь, когда мы определили поведение машины на всех конечных шагах, мы можем выяснить состояние на шаге \$\omega\$.

HTFextethy29


Рег
25 Oct, 2024

Тем
78

Постов
208

Баллов
638
  • 26, Oct 2024
  • #2

5 состояний, \$\omega^{\omega\cdot2}+\omega\cdot2+1\$

Состояние Лента Следующий штат Писать Двигаться
Инициализировать 0 Лсик 1 Левый
Инициализировать 1 Ртест 0 Левый
Лсик 0 Рсик 1 Нет
Лсик 1 Лсик 1 Левый
Ртест 0 Остановиться - -
Ртест 1 Рсик 0 Верно
Рсик 0 Lочистить 1 Нет
Рсик 1 Рсик 0 Верно
Lочистить - Lочистить 0 Левый

Визуализация

 
       |
...00000000...

▲ Init
...00010000...

▲ Ltest
...00110000...

▲ Rseek
...00100000...

▲ Rseek
...00101000...

▲ Lclear
...00100000...

▲ Lclear
...00100000...

▲ Lclear
...00000000...

▲ Lclear
.
.
.
# Omega

|
...00000000...

▲ Init
.
.
.
# Omega*2

|
...00000000...

▲ Init
.
.
.
# Omega*Omega

|
...00111000...

▲ Init
...00101000...

▲ Rseek
...00100000...

▲ Rseek
...00100100...

▲ Lclear
...00100000...

▲ Lclear
...00100000...

▲ Lclear
...00100000...

▲ Lclear
...00000000...

▲ Lclear
.
.
.
# Omega*Omega + Omega

|
...00000000...

▲ Init
.
.
.
# Omega*Omega*2

|
...00111000...

▲ Init
.
.
.
# Omega*Omega*3

|
...00111000...

▲ Init
.
.
.
# Omega*Omega*Omega

|
...00111100...

▲ Init
...00101100...

▲ Rseek
...00100100...

▲ Rseek
...00100000...

▲ Rseek
...00100010...

▲ Lclear
...00100000...

▲ Lclear
...00100000...

▲ Lclear
...00100000...

▲ Lclear
...00100000...

▲ Lclear
...00000000...

▲ Lclear
.
.
.
# Omega^Omega

|
...00111111...

▲ Init
...00101111...

▲ Rseek
...00100111...

▲ Rseek
...00100011...

▲ Rseek
...00100001...

▲ Rseek
.
.
.
# Omega^Omega + Omega

|
...00100000...

▲ Init
...00100000...

▲ Ltest
HALT
 

4 состояния, \$\omega^\omega+\omega+1\$

Состояние Лента Следующий штат Писать Двигаться
Инициализировать 0 Lтест 1 Левый
Инициализировать 1 Рсик 0 Левый
Lтест 0 Рсик 1 Верно
Lтест 1 Остановиться - -
Рсик 0 Lочистить 1 Нет
Рсик 1 Рсик 0 Верно
Lочистить - Lочистить 0 Левый

Визуализация

# 0 | ...00000000... ▲ Init ...00010000... ▲ Lseek ...00110000... ▲ Rseek ...00010000... ▲ Rseek ...00000000... ▲ Rseek ...00001000... ▲ Lclear ...00000000... ▲ Lclear . . . # omega | ...00000000... ▲ Init . . . # omega*2 | ...00000000... ▲ Init . . . # omega^2 | ...00111000... ▲ Init ...00101000... ▲ Rtest ...00100000... ▲ Rseek ...00100100... ▲ Lclear ...00100000... ▲ Lclear ...00100000... ▲ Lclear ...00100000... ▲ Lclear ...00000000... ▲ Lclear . . . # omega^3 | ...00111100... ▲ Init . . . # omega^4 | ...00111110... ▲ Init . . . # omega^omega | ...00111111... ▲ Init ...00101111... ▲ Rtest ...00100111... ▲ Rseek . . . # omega^omega+omega | ...00100000... ▲ Init ...00110000... ▲ Lseek ...00110000... ▲ Lseek ...01110000... ▲ Rseek ...00110000... ▲ Rseek ...00010000... ▲ Rseek ...00000000... ▲ Rseek ...00001000... ▲ Lclear ...00000000... ▲ Lclear . . . # omega^omega*omega == omega^(omega+1) | ...001111111... ▲ Init ...001101111... ▲ Rtest . . . # omega^(omega+1) + omega | ...001100000... ▲ Init . . . # omega^(omega*2) | ...111111111... ▲ Init . . . # omega^(omega*2) + omega | ...111100000... ▲ Init ...111110000... ▲ Lseek ...111110000... ▲ Lseek . . . # omega^(omega*2)+ omega*2 | ...111110000... ▲ Init ...111100000... ▲ Rtest HALT
 

Garik447


Рег
13 Apr, 2020

Тем
72

Постов
195

Баллов
585
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно