
- •Оглавление
- •1 Интуитивное понятие алгоритма. Необходимость его уточнения. 7
- •1.4 Вычислительные алгоритмы 16
- •1.1 Свойства, характерные для интуитивного понятия алгоритма
- •1.2 История развития понятия алгоритма
- •1.3 Алгоритмические модели и их представление
- •1.4 Вычислительные алгоритмы
- •1.5 Алгоритмы для исполнителей
- •1.6 Символьные алгоритмы
- •2 Машины тьюринга (одноленточные детерминированные)
- •2.1 Неформальное описание машины Тьюринга
- •2.2 Формальное определение машины Тьюринга
- •2.3 Операции над машинами Тьюринга
- •2.4 Варианты машины Тьюринга
- •2.5 Вычислимость по Тьюрингу и разрешимость
- •3 Проблема самоприменимости
- •3.1. Нумерация алгоритмов
- •3.2 Нумерация наборов чисел
- •3.3 Нумерация слов и словарные функции
- •3.4 Нумерация машин Тьюринга
- •Заключение
- •Список использованных источников
- •Контрольные вопросы
- •Глоссарий
- •Если аргумент и значения принадлежат к натуральным числам
3 Проблема самоприменимости
Согласно определению машины Тьюринга это тройка T = <A, Q, П>, в которой A - алфавит, Q – внутренние состояния машины, Q - программа, которая и отличает одну машину от другой. В общем случае (для всех машин) программа может выглядеть, например, так:
П: qi aj qr as St , = 1, 2, …, k, где S1 - R, S2 - L, S3 - C. (*)
При этом можно считать, что существуют некоторые общие алфавиты A0 и Q0, в которых записываются символы a и q для всех машин Тьюринга. Тогда символы qia, aja , qra, asa, Sta являются символами алфавитов A0 и Q0.
Такой подход позволяет все машины Тьюринга пронумеровать, то есть каждой машине присвоить некоторый номер (код), присущий только этой машине, по которому можно было бы отличать ее от других машин. Здесь рассмотрим один из способов нумерации.
Геделева нумерация машин Тьюринга. Пусть p1, p2, p3, … - последовательность простых чисел, расположенная в порядке возрастания, например, 2, 3, 5, 7, 11, 13, …
Номером машины Тьюринга с программой (*) называется число
n(T)
=
.
Пример
Машина,
реализующая функцию S(x)
= x
+ 1,
имеет программу в алфавите {0,
}.
Номер этой программы с учетом того, что
a0
= 0,
a1
=
|
будет число:
.
n(T) = 21 31 51 71 111 131 170 190 231 293.
Очевидно, что не все натуральные числа являются номерами машин Тьюринга. С другой стороны, если n – номер некоторой машины, в общих алфавитах, то ее программу можно однозначно восстановить по этому номеру.
Машина T, применимая к слову n(T) (то есть к коду своего собственного номера), называется самоприменимой.
Можно построить как самоприменимые машины, так и несамоприменимые машины. Например, машина из выданного примера – самоприменима. Машина T, у которой в правых частях программы (в теле таблицы) отсутствует символ останова, неприменима ни к какому слову, а, следовательно, и к слову n(T).
Проблема самоприменимости состоит в следующем: указать алгоритм, который по любой машине Тьюринга устанавливал бы, самоприменима она или нет.
Согласно Тезису Тьюринга, такой алгоритм следует искать в виде машины Тьюринга. Эта машина должна быть применима к кодам номеров всех машин Тьюринга, и в зависимости от результата переработки кодов проверяемых машин, имела бы различные заключительные конфигурации.
Пусть, например, данная машина T применяется к коду n(T*). Если машина T* самоприменима, то заключительная конфигурация машины T имеет вид a' q0| B', а в случае, если машина T* несамоприменима, то заключительная конфигурация машины T имеет вид a" q00 B". Здесь a', B', a", B" – слова.
Теорема Проблема самоприменимости алгоритмически неразрешима, то есть не существует машины Тьюринга, решающей эту проблему в указанном выше смысле.
Из теоремы следует, что не существует общего алгоритма решающего проблему самоприменимости. В конкретных же частных случаях такие алгоритмы могут существовать.
Воспользуемся результатами этой теоремы для доказательства неразрешимости проблемы применимости к начальному слову.
Проблема применимости к начальному слову состоит в следующем: создать алгоритм, который по машине T и слову X устанавливал бы, применима машина T к слову X или нет (иначе проблема останова).
В терминах машин Тьюринга, аналогично формулировке проблемы самоприменимости, эта проблема формулируется так: можно ли построить машину, которая была бы применима ко всем словам вида n(T)0X, где T произвольная машина, X – произвольное слово, и в случае, если машина T применима к слову X, приводила бы к заключительной конфигурации a' q0|B', а в случае, если машина T не применима к слову Х, приводила бы к заключительной конфигурации a"q0 0 B". Здесь a' , B' и a", B" – произвольные слова.
Теорема Проблема применимости к начальному слову алгоритмически неразрешима, то есть не существует машины Тьюринга, решающей эту проблему в указанном выше смысле.
Как было вышесформулировано для проблемы самоприменимости первым предварительным шагом является нумерация. Поэтому ниже этот вопрос последовательно рассматривается и решается для алгоритмов и его трех основных типов алгоритмических моделей.