Теория алгоритмов. Учебное пособие для специальности 050201.65 – «Математика с дополнительной специальностью «Информатика», направление подготовки 050
.pdfНазовём множество M, M N0, (рекурсивно, или эффективно, или
алгоритмически) перечислимым, если оно пусто или существует алгоритм,
перечисляющий его элементы.
Пример. Рассмотрим множество M 0,1,4,9,16,25,36,... квадратов целых неотрицательных чисел.
Множество M перечислимо. Алгоритм, перечисляющий элементы M ,
можно задать так. Алгоритм последовательно обращается к числам 0, 1, 2, 3, …
как к аргументам и возводит их в квадрат. Квадраты чисел принадлежат M .
Иными словами, множество M строится как множество значений функции
f (x0) x2.
Множество M – разрешимо. Разрешающий алгоритм последовательно обращается к каждому целому неотрицательному числу и выясняет, является ли оно квадратом целого неотрицательного числа.
Таким образом, множество M квадратов целых неотрицательных чисел является множеством перечислимым и разрешимым.
В общем случае доказано: любое разрешимое множество является перечислимым. Обратное утверждение неверно: существуют перечислимые множества, не являющиеся разрешимыми. Пример такого множества рассмотрен в п. 2.6.
11
ГЛАВА 2. МАШИНЫ ТЬЮРИНГА
2.1. Алан Тьюринг
Алан Матисон Тьюринг (Alan Mathison Turing, 19121954 гг.) может быть причислен к плеяде величайших математиков и философов, составляющих гордость человечества, таких как Р. Декарт, Г. В. Лейбниц, Б.
Рассел, Д. Гильберт, Л. Витгенштейн. Тьюринг признан одним из основателей информатики и теории искусственного интеллекта, его считают первым теоретиком современного программирования.
А. Тьюринг родился 23 июня 1912 г. в лондонской больнице Уоррингтон Лодж. На стене здания, в котором некогда располагалась больница, в настоящее
время установлена мемориальная доска с надписью: «Здесь родился Алан
Тьюринг, взломщик кодов и пионер информатики». Отец Тьюринга состоял на государственной службе в Индии. Он не хотел рисковать и растить детей в далёких провинциях, которыми управлял. После рождения Алана отец решил оставить семью в Англии, чтобы не подвергать её возможному риску. В детстве Алан и его старший брат Джон довольно редко видели своих родителей – их отец до 1926 г.
служил в Индии. Дети оставались в Англии и получали строгое английское воспитание, соответствующее представителям «высшего среднего класса».
Тьюринг рано начал интересоваться наукой: химией, физикой
и математикой. В 16 лет он с увлечением изучал теорию относительности Эйнштейна. В 17 лет начал изучать квантовую механику. В 1931 г. Тьюринг стал студентом знаменитого Гарвардского университета. Он стал известным, будучи ещё студентом. Полученные им результаты относились к основаниям математики.
Ещё в 1928 г. Д. Гильберт сформулировал несколько проблем, решение которых должно было произвести потрясение в математике. Программа Гильберта состояла в нахождении (или в доказательстве существования) общей
12
алгоритмической процедуры, способной отвечать на вопросы, центральными из
которых были следующие.
1.Является ли математика полной, т.е. может ли любое математическое утверждение быть доказано или опровергнуто средствами самой математики?
2.Является ли математика непротиворечивой, т.е. запрещено ли средствами математики доказать неверное утверждение?
3.Является ли математика разрешимой, т.е. существует ли общая процедура, способная доказать или опровергнуть любое математическое
утверждение?
Гильберт был уверен, что ответ на каждый вопрос утвердительный.
Первый удар по программе Гильберта нанёс молодой Курт Гёдель.
Он показал, что в математике существуют утверждения, которые нельзя ни доказать, ни опровергнуть. Таковы утверждения вида «это утверждение недоказуемо». Существование такого рода утверждений означает неполноту
математики. Гёдель показал, что математика не может быть одновременно непротиворечивой и полной. Алан Тьюринг «добил» программу Гильберта,
доказав неразрешимость математики. Тьюринг создал абстрактную
вычислительную машину, названную Чёрчем «машиной Тьюринга».
Эта воображаемая машина оперировала с числами 0 и 1 и представляла собой двоичный компьютер. Тьюрингу удалось чётко определить понятие алгоритма. Вместе с тем он показал существование задач, которые не решаются на машине Тьюринга, что доказывало неразрешимость математики.
Тьюринг стремительно ворвался на математический олимп. В 1936 г.
Алонзо Чёрч пригласил его в заветный Принстон (США), куда из немецкого Гёттингена переместился центр мировой математики и физики. Здесь работали такие выдающиеся учёные, как Джон фон Нейман, Герман Вейль, Курант,
Эйнштейн. В Принстоне Тьюринг написал несколько работ, в том числе статью по лямбда-исчислению (в развитие идей Клини).
13
В 1938 г. Тьюринг возвращается в Англию, где вскоре военно-морское ведомство поставило перед ним задачу разгадать секрет «Энигмы» –
специального устройства для шифровки радиограмм в немецком военно-морском флоте и в «люфтваффе». Британская разведка раздобыла это устройство,
но расшифровать перехваченные радиограммы немцев не удавалось. Тьюрингу была предоставлена свобода действий. Он пригласил в свой отдел Британской школы кодов и шифров нескольких друзей-шахматистов. Двадцатисемилетнего Тьюринга и его коллег охватил настоящий спортивный азарт. Немцы считали
«Энигму» неприступной. Но Тьюринг уже через полгода разработал устройство,
названное «Бомбой», которое позволяло читать практически все сообщения
«люфтваффе». Через год был взломан более сложный вариант «Энигмы»,
использовавшийся нацистскими подводниками. Это во многом определило успех британского флота.
Заслуги Алана Тьюринга были по достоинству оценены: после разгрома Германии он получил орден, был включён в группу разработчиков британской электронно-вычислительной машины. В 1951 г. в Манчестере начал работать один из первых в мире компьютеров. Тьюринг занимался разработкой программного обеспечения для него.
Именем Тьюринга названа высшая награда в области программирования,
которая до настоящего времени служит эквивалентом Нобелевской премии.
2.2.Устройство машины Тьюринга
Всостав машины Тьюринга входят следующие элементы.
1.Лента, разбитая на ячейки, бесконечная влево и вправо. В каждой ячейке может быть записан один символ алфавита. В каждый момент времени на ленте лишь в конечном числе ячеек будут записаны символы.
2.Внешний алфавит A, который содержит конечное число символов
A a0,a1,...,an . Символы можно записывать по одному в каждую ячейку.
Среди символов алфавита обязательно содержится нулевой символ: a0 0.
14
Условимся считать, что в пустой ячейке записан нуль. Чаще всего внешний алфавит содержит два символа: «0» и «1».
Абстрактная схема машины Тьюринга
3. Управляющее устройство, которое может находиться в одном из конечного числа внутренних состояний Q q0,q2,...,qm . Элементы множества Q называют также внутренним алфавитом. Число элементов во множестве Q характеризует объём внутренней памяти машины. Во множестве внутренних состояний выделяются два специальных состояния: q1 – начальное состояние и qo – заключительное состояние (или стоп-состояние).
4. Считывающая (пишущая) головка является самым активным элементом машины Тьюринга. Считывающая головка, находясь в некотором внутреннем состоянии qi:
1)обозревает содержимое ячейки;
2)воспринимает содержимое ячейки;
3)изменяет содержимое обозреваемой ячейки;
4) выполняет одно из множества T L,R,E механических движений:
-сдвиг влево (L),
-сдвиг вправо (R),
-остаётся на месте (E);
5)переходит в новое внутреннее состояние qj .
В каждый момент времени t считывающая головка работает лишь с одной ячейкой. Схематично это выглядит так:
15
|
|
|
|
|
|
обозреваемая ячейка |
|
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
← лента |
|
|
… |
1 |
0 |
1 |
1 |
… |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
▲ ← считывающая головка |
|
||||||
Машина работает дискретно, тактами. За один такт работы выполняется |
||||||||||
одна команда вида: |
|
|
||||||||
|
|
|
|
|
|
akqi ahZqj , |
2.2.1 |
|||
где ak ,ah принадлежат A; qi,qj |
принадлежат Q; |
Z принадлежит T . |
||||||||
Команда 2.2.1. читается так: |
|
|
||||||||
машина Тьюринга, обозревая символ ak в состоянии |
qi, |
|||||||||
1)заменяет обозреваемый символ на ah ;
2)выполняет механическое движение Z ;
3)переходит в состояние qj.
Для каждой пары ak ,qi,k 0,1,...,n ,i 0,1,...,m , имеется точно одна команда вида 2.2.1. Множество таких команд образует программу, машину M .
Программа обычно задается таблицей с двумя входами: во входном столбце перечисляются символы алфавита A, во входной строке – внутренние состояния:
M |
q1 |
… |
qi |
… |
qm |
a0 |
|
|
|
|
|
|
|
|
|
|
|
… |
|
|
|
|
|
|
|
|
|
|
|
ak |
|
|
ahqj |
|
|
… |
|
|
|
|
|
|
|
|
|
|
|
an |
|
|
|
|
|
Назовём конфигурацией тройку символов ( ,ak ,qi), где – записанное на ленте слово, ak – обозреваемый считывающей головкой символ, qi –
внутреннее состояние.
16
Работа машины Тьюринга заключается в изменении конфигураций.
Обозначим через Kt конфигурацию в момент времени
t (...ak 2,ak 1,ak ,ak 1,ak 2,...) – наблюдаемое на ленте слово в момент
времени t, |
ak – символ, обозреваемый в состоянии qi: |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
… |
ak 2 |
|
ak 1 |
ak |
ak 1 |
|
ak 2 |
|
… |
|
|
|
|
|
|
|
▲ |
|
|
|
|
|
|
|
|
|
|
|
|
qi |
|
|
|
|
|
|
В результате выполнения команды |
2.2.1 |
конфигурация Kt заменяется |
||||||||||
конфигурацией Kt 1. |
|
|
|
|
|
|
|
|
|
|||
Если |
Z L, то |
Kt 1 t 1ak 1qj. |
|
|
|
|
||||||
На ленте это выглядит так:
слово t 1
… |
ak 2 |
ak 1 |
ah |
ak 1 |
ak 2 |
… |
|
|
▲ |
|
|
|
|
|
|
qj |
|
|
|
|
Если Z R, то Kt 1 t 1ak 1qj.
На ленте это выглядит так:
слово t 1
… |
ak 2 |
ak 1 |
ah |
ak 1 |
ak 2 |
… |
|
|
|
|
▲ |
|
|
|
|
|
|
qj |
|
|
Если Z E, то Kt 1 t 1ahqj .
17
На ленте это выглядит так:
слово t 1
|
… |
ak 2 |
ak 1 |
ah |
|
ak 1 |
ak 2 |
… |
|
|
|
|
|
|
▲ |
|
|
|
|
|
|
|
|
|
|
qj |
|
|
|
|
|
|
Выполненную работу машины запишем в виде: |
Kt Kt 1. |
|||||||||
Начальная конфигурация |
K0 |
имеет вид: |
K0 0akq1. Каждая |
|||||||
конфигурация однозначно определяет следующую. Тогда начальная
конфигурация K0 порождает последовательность конфигураций. |
|
|||||
|
K0 K1 K2 |
... Kt 1 Kt |
|
2.2.2 |
||
Если последовательность (2.2.2) конечна, т.е. обрывается заключительной |
||||||
конфигурацией |
вида |
tasq0, |
то говорят, |
что |
машина |
применима |
к конфигурации |
K0, |
иначе – машина не применима к K0. Если машина |
||||
применима к |
конфигурации |
K0 0akq1 |
и Kt |
tasq0 |
является |
|
заключительной конфигурацией, то слово t объявляется результатом работы машины над словом 0 .
Таким образом, машине Тьюринга соответствует частичная словарная функция, которая каждому конечному слову , записанному в алфавите A,
сопоставляет слово , являющееся результатом применения машины к слову .
2.3. Вычислимые по Тьюрингу функции
Дадим строгое определение вычислимых по Тьюрингу функций.
Выбираем алфавит, например, A {0, 1}. Слова в этом алфавите обозначают числа, записанные в унарной системе счисления, т.е. с помощью символа «1»,
символ «0» служит разделяющим знаком и, как говорилось выше, является
18
содержимым пустой ячейки. Целое неотрицательное число n в этом алфавите запишем в виде массива из n 1 единиц, чтобы запись нуля не была пустой.
Говорят, что машина Тьюринга |
M стандартно воспринимает целое |
|||
натуральное число x, |
если на ленте записан массив |
из x 1 |
единиц, |
|
а считывающая головка |
обозревает |
крайнюю правую |
единицу |
массива |
и находится в состоянии |
qj : |
|
|
|
(x + 1) символов
левая зона |
0 |
0 |
1 |
1 |
… |
1 |
0 |
правая зона |
|
|
|
|
|
|
|
|
|
|
|
▲
qj
Говорят, что машина Тьюринга M вычисляет функцию f (x), если для любого x, где x принадлежит N0, выполняются условия:
1.Если f (x) определена при x x0 и f (x0) y0, то машина M ,
начав работу со стандартного восприятия |
x0 в состоянии |
q1, через конечное |
||
число тактов остановится и будет стандартно воспринимать |
y0. |
|||
2. |
Если f (x) не определена при |
x x0, то машина M , начав работу |
||
со стандартного восприятия |
x0 в состоянии q1, будет работать бесконечно. |
|||
Если функция f (x) |
вычислима на машине Тьюринга, то назовем её |
|||
вычислимой по Тьюрингу. Аналогично вводится понятие вычислимой функции f (x1,x2,..., xn) от n переменных.
Говорят, что машина Тьюринга M стандартно воспринимает кортеж (x1,x2,..., xn) целых неотрицательных чисел, если конфигурация на ленте такова:
19
|
|
(x 1) |
… (x 1) |
|
(x |
n |
1) |
||||||||
1 |
|
|
2 |
|
|
|
|
|
|
|
|||||
|
|
единиц |
|
единиц |
|
единиц |
|||||||||
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
левая зона |
0 |
1 |
… |
1 |
0 |
1 |
… |
1 |
0 |
1 |
… |
1 |
правая зона |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
▲ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
qj |
|
Говорят, машина M вычисляет функцию f (x1,x2,..., xn), если для
любого кортежа (x1,x2,..., xn) выполняются условия:
1.Если функция f (x1,x2,..., xn) определена на кортеже (c1,c2,...,cn)
иравна b, то машина Тьюринга M , начав работу со стандартного восприятия кортежа (c1,c2,...,cn), через конечное число шагов остановится, стандартно
обозревая b. |
|
|
|
|
|
|
|
|
2. Если |
функция |
f (x1,x2,..., xn) |
не |
определена |
на |
кортеже |
||
(c1,c2,...,cn), |
то |
машина, начав |
работу |
со |
стандартного |
восприятия |
||
кортежа (c1,c2,...,cn) |
в состоянии |
q1, никогда не остановится (машина |
||||||
«зависает»). |
|
|
|
|
|
|
|
|
Если функция |
f (x1,x2,..., xn) |
вычислима |
на подходящей |
машине |
||||
Тьюринга, то назовем её вычислимой по Тьюрингу.
Приведем несколько примеров:
1. Рассмотрим машину M1 со следующей программой:
M1 q1
01Eq0
11Rq1
20
