Машини Тьюринга
Машини Тьюринга
Машина Тьюринга, що була описана А.Тьюрингом у 1936 р., являє собою теоретичну модель обчислювальної машини. Машину Тьюринга (МТ) слід розглядати як одну з можливих формалізацій поняття . Її робота може бути описана таким чином.Розглянемо стрічку, розділену на окремі комірки; ця стрічка є потенційно нескінченною в обидва боки. В кожній комірці може бути записаний певний символ з деякого заданого алфавіту A. Машина Тьюринга в будь-який момент часу може перебувати в певному стані (множина станів S є скінченною) і вказувати на певну комірку.
Схема машини Тьюринга
Машина Тьюринга в залежності від поточного символа, на який вона вказує, може записати на його місце будь-який інший символ (він може співпадати зі старим), зсунутися на один символ вліво або вправо, змінити свій вміст чи зупинитися (часто вважається, що машина зупиняється автоматично, якщо немає жодної інструкції, яку вона могла б виконати). Робота машини Тьюринга визначається її .
Програма машини Тьюринга являє собою послідовність інструкцій, кожна з яких має вигляд
aisj > akslI,
де ai, akє A; sl, smS, I є {R, L, H}.
Цей запис читається так: якщо машина перебуває в стані sl і зчитує символ ai, вона повинна записати в поточну позицію символ ak, перейти до стану sm і зсунутися вправо (відповідає літері R), вліво (відповідає літері L) або зупинитися (відповідає літері H).
Вважається, що на початку роботи машина перебуває на лівому кінці стрічки в початковому стані s0. Вона виконує операції, що визначаються її програмою. Якщо вона в деякий момент зупиняється, результатом роботи алгоритму вважається послідовність символів, яка записана на стрічці в момент зупинки.
Приклад.
Наведемо програму для машини Тьюринга, яка обчислює функцію x+y, де x,y - натуральні числа. Необхідно домовитися про представлення цих чисел. Стандартним для машини Тьюринга є представлення натурального числа n послідовністю з n+1 одиниць.
Ідея вирішення могла б полягати у тому, щоб замінити крайній зліва та крайній справа символи "1" на "0", а роздільник "0" - на "1". Якби були доступні відповідні команди, це можна було б зробити просто і швидко, але ми обмежені жорсткими рамками машини Тьюринга. За таких умов схема алгоритму полягає в такому: рухатися вправо до виявлення першої одиниці (початок першого числа); як тільки вона буде виявлена, замінити її на нуль і перейти в інший стан s1. Потім рухатися вправо, поки 0, який розділяє два числа, не буде замінений на 1; при цьому знову змінити стан. Далі рухатися вправо до появи першого нуля (кінця другого доданку). Після цього зсунутися вліво, замінити останню 1 на 0 та зупинитися.
Програма може мати вигляд:
0s0 > 0 s0R
1s0 > 0 s1R
1s1 > 1 s1R
0s1 > 1 s2R
1s2 > 1 s2R
0s2 > 0 s3L
1s3 > 0 s4H.
Наведений приклад показує, що машина Тьюринга є дуже незручною для програмування. Ці незручності пов'язані з тим, що:
немає довільного доступу до пам'яті; якщо, наприклад, машина вказує на першу комірку, а потрібно перейти до десятої, машина повинна послідовно переглянути другу, третю і т.д. комірку;
неструктурованість записів на стрічці; заздалегідь невідомо, де закінчується одне число і починається інше;
дуже обмежений набір команд; відсутні, наприклад, основні арифметичні операції.
Універсальну машину Тьюринга можна неформально визначити як машину, яка може сприймати програму для обчислення будь-якої функції, яку в принципі можна обчислити за допомогою спеціалізованої машини M1 і надалі працювати як машина M1. Можна довести, що таку машину можна побудувати.
Клас функцій, обчислюваних за Тьюрингом
Можна довести, що машини Тьюринга здатні обчислювати лише функції з певного класу, а саме - функції, які дістали назву рекурсивних функцій. Функція, яка не є рекурсивною, не може бути обчислена за допомогою машини Тьюринга.
У класичній теорії розглядаються функції з цілими невід'ємними аргументами та цілими невід'ємними значеннями. Інші типи функцій конструюються на їх основі.
Визначення.
Рекурсивною функцією називається функція, яка може бути отримана з базових функцій за допомогою скінченної кількості застосувань підстановок, рекурсій та м-операторів.
До базових функцій відносяться три функції:
нуль-функція Z(x)=0 при будь-якому x;
додавання одиниці: N(x) = x+1;
проектуючі функції: Ui(x1,…, xn)= xi для всіх x1,…, xn.
Функція f(x1,…, xn) отримана з функцій g, h1,…, hm, за допомогою підстановки, якщо f(x1,…, xn) = g (h1(x1,…, xn ), …, h1(x1,…, xn ) ).
Функція f(x1,…, xn ,y) отримана за допомогою рекурсії, якщо:
f(x1,…, xn, y+1) =h (x1,…, xn , y, f(x1,…, xn, y));
f(x1,…, xn, 0) = g (x1,…, xn ) при n ? 0;
f(y+1) =h (y, f(y)); f(0) = k , k - ціле невід'ємне число при n= 0.
Функція f(x1,…, xn) отримана за допомогою м-оператора, якщо її значення дорівнює мінімальному значенню y, при якому g(x1,…, xn, y)=0.
Частково рекурсивною називається функція, яка конструюється за допомогою скінченного числа підстановок, рекурсій та м-операторів, але визначена не при всіх значеннях аргументів.
Якщо деяка функція може бути сконструйована з базових функцій за допомогою скінченного числа тільки підстановок та рекурсій, вона називається примітивно рекурсивною.
Теза Чорча. Алгоритмічно нерозв'язні проблеми
Теза Чорча.
Клас частково рекурсивних функцій співпадає з класом частково обчислюваних функцій.
Теза Чорча часто формулюється в еквівалентній формі, а саме: будь-який алгоритм в інтуїтивному розумінні цього слова може бути реалізований за допомогою деякої машини Тьюринга. Іншими словами, за