Опубликован: 26.09.2006 | Доступ: свободный | Студентов: 1800 / 485 | Оценка: 4.25 / 4.12 | Длительность: 17:09:00
ISBN: 978-5-9556-0066-6
Специальности: Программист, Математик
Лекция 11:

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

Вычислимость и разрешимость

Упорядоченный набор из n слов в алфавите A называется n -местным набором над A. Множество всех n -местных наборов над A обозначим через (A^\ast)^n. Любое подмножество R множества (A^\ast)^n называется n -местным словарным отношением.

Любое, возможно частичное, отображение f: (A^\ast)^n \to A^\ast называется n -местной словарной функцией. Область определения функции f обозначается через {\rm Def}(f).

Результатом работы программы T на входном псевдослове x называется псевдослово T(x), которое появляется на ленте в момент остановки программы; если программа работает бесконечно, то результат не определен.

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

Словарное n -местное отношение R называется полуразрешимым, если существует n -программа T, которая останавливается в точности на всех псевдословах, имеющих вид

\eq*{
X \ast u_n \ast  u_{n-1} \ast  \ldots \ast  u_1 \ovs{\ast }{\downarrow},
}
где (u_1, u_2 \dts u_n) \in R.

Словарное n -местное отношение R называется разрешимым, если R и \ol{R} полуразрешимы (под \ol{R} здесь понимается множество (A^\ast)^n\backslash R).

Словарная n -местная функция f:(A^\ast)^n \to
A^\ast называется вычислимой по Тьюрингу, если существует программа T такая, что

\eq*{
T(\ast u_1 \ast u_2 \ast \ldots \ast u_n \ovs{\ast}{\downarrow})
= \ast u_1 \ast u_2 \ast \ldots \ast u_n \ast v\ovs{\ast}{\downarrow},
}
где (u_1, u_2\dts u_n) \in {\rm Def}(f) и v = f(u_1,
u_2\dts u_n), в противном случае результат не определен.

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

Вычисление числовых функций

Чтобы вычислять значения числовых функций с помощью тьюринговых программ, необходимо выбрать способ кодирования на ленте аргументов и значений функции. Мы рассматриваем функции из N^n в N, где N — множество натуральных чисел, включая 0, а n \ge 1.

Значения функции и ее аргументов будем записывать в бинарном, унарном или каком-либо ином коде, для чего нам потребуется, соответственно, алфавит A = \{1\}, A = \{0, 1\} и т.д. Значения аргументов перед вычислением должны быть представлены на ленте в виде псевдослова

\eq*{
\ast x_n \ast x_{n-1}\ast \ldots \ast x_1 \ovs{\ast}{\downarrow},
}
где x_i — код i -го аргумента (i = 1,
2\dts n).

После вычисления содержимое ленты должно иметь вид

\eq*{
\ast x_n \ast x_{n-1}\ast \ldots \ast x_1 \ast y \ovs{\ast}{\downarrow},
}
где y — код значения функции при заданных значениях аргумента.

Упражнения

  1. Составить программу, перерабатывающую псевдослово \ast u \ovs{\ast}{\downarrow} в псевдослово \ast u \ast v \ovs{\ast}{\downarrow}, где u — бинарный, а v — унарный код некоторого числа из N.
  2. Составить программу сложения и умножения чисел в унарном и бинарном кодах.
  3. Составить программу для удвоения числа в бинарном и унарном кодах.
  4. Составить программу деления нацело натуральных чисел в унарном коде.
Антон Сиротинкин
Антон Сиротинкин

на стр 6, лекции 3, Очевидно "Ck <= модуль(Gk(е))*b(k+1)" (1) - , подскажите что значит "модуль" и почему это очевидно...