Лабораторная работа № 5. МАШИНА ТЬЮРИНГА И РЕКУРСИВНЫЕ ФУНКЦИИ Машина Тьюринга Машина Тьюринга – абстрактное устройство, состоящее из бесконечной в обе стороны ленты, считывающей и печатающей головки, способной перемещаться вправо и влево, и управляющего устройства. Лента разбита на ячейки. В ячейках могут быть записаны символы некоторого конечного алфавита Команда расшифровывается так: если машина находится в состоянии q и считанный с ленты символ a, то машина переходит в состояние q’, печатает в текущей клетке символ a’ и затем выполняет одно из трех действий D. Изначально машина находится в состоянии q1. Если машина пришла в состояние q0, то она останавливается. Машина называется применимой к некоторой записи на ленте, если при работе над этой записью после конечного числа шагов она останавливается. Если она никогда не остановится, то машина называется неприменимой к этой записи. Машину Тьюринга удобно применять при вычислении функций вида Число n будем записывать с помощью последовательности из n +1 единицы, а набор (n1, n2,… nk) в виде Пример 1. Найти результат применения машины Тьюринга к записям на ленте: Решение. В последнем случае машина никогда не остановится, и будет работать вечно. Таким образом, она неприменима ко второй записи на ленте. Пример 2. Построить машину Тьюринга, правильно вычисляющую функцию f (x, y) = x +y . Решение. В начальном состоянии на ленте имеем: После работы машины Тьюринга на ленте должно быть: Программа такой машины, например, такая: Машина, построенная таким образом, вначале, двигаясь вправо, заменяет нуль, разделяющий массивы единиц, единицей; затем, пройдя массив единиц, начинает движение влево, заменяя две последние единицы нулями. Пример 3. Найти функцию, получаемую из g(x)= x, h(x, y,z)= zy + z с помощью операции примитивной рекурсии. Решение. Задание 1. Найти результат применения машины Тьюринга к записи на ленте. 1) q11→q11R q10→q21L q21→q21L q20→q00R. K:01111 10 q1 2) q11→q11R q10→q21L q21→q21L q1 q20→q00R. 6) q11→q11R K:01101 0 q1 q10→q20R q21→q31R 3) q11→q11R q20→q20R q10→q21L q31→q31 R q21→q21L q30→q00. q20→q00R. K:1 1001101 K:0 1 0000110 q1 q1 7) q11→q11R 4) q11→q11R q10→q20R q10→q21L q21→q31R q21→q21L q20→q20R q20→q00R. q31→q31 R K:01 11010 q30→q00. q1 K:1 00001 q1 5) q11→q11R q10→q20R 8) q11→q11R q21→q31R q10→q20R q20→q20R q21→q31R q31→q31R q20→q20R q30→q00. q31→q31 R K:1 11001 q30→q00. K:1 10011 q30→q00. q1 K:110101 q1 9) q11→q21R q10→q10R 12) q21→q10R q11→q21R q10→q10R q20→q30L q21→q10R q31→q21L q20→q30L q30→q00. q31→q21L K:1 11101 q30→q00. q1 K:110011 q1 10) q11→q21R q10→q10R 13) q21→q10R q10→q20R q20→q30L q21→q21R q31→q21L q20→q01. q30→q00. K:01110 q11→q01 q1 K:1 1111 q1 14) 11) q11→q21R q10→q20R q10→q10R q21→q21R q21→q10R q20→q01. q20→q30L K:011010 q31→q21L q1 q11→q01 15) q11→q01 18) q11→q11R q10→q20R q10→q20L q21→q21R q21→q21L q20→q01. q20→q00. K:0111110 K:110101 q1 q1 16) q11→q01 19) q11→q11R q10→q20R q10→q20L q21→q21R q21→q21L q20→q01. q20→q00. K:0110110 K:111101 q1 q1 17) q11→q11R 20) q11→q11R q10→q20L q10→q20L q21→q21L q21→q21L q20→q00. q20→q00. K:110011 K:11111 q1 q1 2. Построить машину Тьюринга, правильно вычисляющую функцию. 2 4x (x) = 2x-1 f ( x, y ) x 2 y f ( x, y ) x y , x y x3 (x) = 2 f ( x) 2 x f ( x, y ) 2 x 1 f ( x, y ) 3 x 2 f ( x, y ) x y 1. (x) = 2. 3. 4. 5. 6. 7. 8. 9. x2 3 x 3 f ( x) 2 1, x чётное f ( x) 0, x нечётное x 2 f ( x) 3 3 f ( x) x f ( x, y ) x 1 10. f ( x) 11. 12. 13. 14. 15. 2 16. f ( x) x 3 17. f ( x, y ) 2 x y 3 18. f ( x) 5 x 19. f ( x) 2 20. f ( x) 2 1 x x y 3.Найти функцию (x,y), получаемые из g ( x), h( x, y, z ) с помощью операции примитивной рекурсии. ОПРЕДЕЛЕНИЕ. Говорят, что (n+1)- местная функция φ получена из n-местной функции f и (n+2)-местной функции g с помощью оператора примитивной рекурсии, если для любых х1,…,хn, усправедливы равенства: φ (x1,…,xn) φ(x1…xn, y+1)= g(x1…xn,y)) Здесь важно отметить то, что независимо от числа аргументов в φ , рекурсия ведется только по одной переменной У ; остальные n переменных х1,…,хn, на момент применения схемы примитивной рекурсии зафиксированы и играют роль параметров. Кроме того , схема примитивной рекурсии выражает каждое значение определяемой функции φ не только через данные функции f и g , но и через так называемые предыдущие значения определяемой функции φ прежде чем получить значение φ(х1,…,хn, k),придется проделать k+1 вычисление по указанной схеме- для У=0,1,…,k. 1. g ( x) x, h( x, y, z ) x 2 z 2. g ( x) x, h( x, y, z ) zy z 3. g ( x) x, h( x, y, z ) x y z 4. g ( x) 2, h( x, y, z ) z 5. 6. 7. 8. 9. y 1 g ( x) 2 x, h( x, y, z ) xy 2 z g ( x) x 1, h( x, y, z ) x 2 yz g ( x) 3, h( x, y, z ) 2 xy z g ( x) x 2, h( x, y, z ) x xy 2 z g ( x) 1, h( x, y, z ) xyz z 10. g ( x) 3x, h( x, y, z ) x z y