- •ТЕОРИЯ АЛГОРИТМОВ
- •Введение
- •Таким образом, получили убывающую последовательность натуральных чисел
- •I.1. Примитивно рекурсивные функции. Базис элементарных функций. Операции подстановки и примитивной рекурсии. Основные свойства
- •I.2. Примитивно рекурсивные функции относительно совокупности функций. Основные свойства.
- •I.3. Производные операции над функциями
- •I.4. Операции конечного суммирования и конечного произведения
- •Действительно
- •Очевидно, что
- •I.5. Предикат, логическая функция. Логические операции с предикатами.
- •I.6. Операции навешивания кванторов. Операции навешивания кванторов относительно двуместных предикатов
- •I.7. Примитивно рекурсивный предикат
- •I.8. Операция навешивания ограниченного квантора над предикатами
- •I.9. Кусочное задание функции
- •I.10. Операция ограниченной минимизации
- •I.11. Частично рекурсивные функции
- •Тогда
- •Контрольные вопросы
- •Практические задания
- •II.Уточнение понятия алгоритма через абстрактную математическую машину Тьюринга
- •II.1 Определение машины Тьюринга
- •II.2 Применение машин Тьюринга к словам
- •II.3 Вычислимые по Тьюрингу функции
- •II.5 Композиция машин Тьюринга
- •II.6 Тезис Тьюринга (основная гипотеза теории алгоритмов)
- •II.7 Машины Тьюринга и современные электронно-вычислительные машины
- •II.8 Вычислимость по Тьюрингу примитивно рекурсивных функций
- •II.9 Вычислимость по Тьюрингу частично рекурсивных функций
- •Контрольные вопросы
- •Практические задания
- •III.1. Уточнение понятие алгоритма через машину с неограниченными регистрами
- •Практические задания
- •IV. Марковские подстановки
- •IV.1. Нормальные алгоритмы Маркова
- •IV.2. Нормально вычислимые функции и принцип нормализации Маркова
- •IV.3. Совпадение класса всех нормально вычислимых функций с классом всех функций, вычислимых по Тьюрингу
- •СПИСОК ЛИТЕРАТУРЫ
II.7 Машины Тьюринга и современные электронно-вычислительные машины
Изучение машин Тьюринга и практика составления программ для них закладывают фундамент алгоритмического мышления, сущность которого состоит в том, что нужно уметь разделять тот или иной процесс вычисления или какой-либо другой деятельности на простые составляющие шаги. В машине Тьюринга расчленение (анализ) вычислительного процесса на простейшие операции доведено до предельной возможности: распознавание единичного рассмотренного вхождения символа, перемещение точки наблюдения данного ряда символов в соседнюю точку и изменение имеющейся в памяти информации. Конечно, такое мелкое дробление вычислительного процесса, реализуемого в машине Тьюринга, значительно его удлиняет. Но вместе с тем логическая структура процесса, расчлененного, образно выражаясь, до атомарного состояния, значительно упрощается и предстает в некотором стандартном виде, весьма удобном для теоретических исследований. (Именно такое расчленение на простейшие составляющие вычислительного процесса на машине Тьюринга дает еще один косвенный аргумент в пользу тезиса Тьюринга, обсуждавшегося в предыдущем пункте: всякая функция, вычисляемая с помощью какого-либо алгоритма, может быть вычислена на машине Тьюринга, потому что каждый шаг данного алгоритма можно расчленить на еще более мелкие операции, которые реализуются в машине Тьюринга.) Таким образом, понятие машины Тьюринга есть теоретический инструмент анализа алгоритмического процесса, а значит, анализа существа алгоритмического мышления.
В современных ЭВМ алгоритмический процесс расчленен не на столь мелкие составляющие, как в машинах Тьюринга. Наоборот, создатели ЭВМ стремятся к известному укрупнению выполняемых машиной процедур (на этом пути, конечно, есть свои ограничения). Так, для выполнения операции
60
сложения на машине Тьюринга составляется целая программа, а в современной ЭВМ такая операция является простейшей.
Далее, машина Тьюринга обладает бесконечной внешней памятью (неограниченная в обе стороны лента, разбитая на ячейки). Но ни в одной реально существующей машине бесконечной памяти быть не может. Это говорит о том, что машины Тьюринга отображают потенциальную возможность неограниченного увеличения объема памяти современных ЭВМ.
Наконец, можно провести более подробный сравнительный анализ работы современной ЭВМ и машины Тьюринга. В большинстве ЭВМ принята трехадресная система команд, обусловленная необходимостью выполнения бинарных операций, в которых участвует содержимое сразу трех ячеек памяти. Например, число из ячейки а умножается на число из ячейки Ь, и результат отправляется в ячейку с. Существуют ЭВМ двухадресные и одноадресные. Так, одноадресная ЭВМ работает следующим образом: вызывается (в сумматор) число из ячейки а; в сумматоре происходит, например, умножение этого числа на число из ячейки Ь', результат отправляется из сумматора в ячейку с. Машину Тьюринга можно считать одноадресной машиной, в которой система одноадресных команд упрощена еще больше: на каждом шаге работы машины команда предписывает замену лишь единственного знака, хранящегося в обозреваемой ячейке, а адрес обозреваемой ячейки при переходе к следующему такту может меняться лишь на единицу (обозрение соседней справа или слева ячейки ленты) или не меняться вовсе. Это удлиняет процесс, но в то же время резко унифицирует его, делает стандартным.
Подводя итоги, можно сказать, что современные ЭВМ есть некие реальные физические модели машин Тьюринга, огрубленные с точки зрения теории, но созданные в целях реализации конкретных вычислительных процессов. В свою очередь, понятие машины
61
Тьюринга и теория таких машин есть теоретический фундамент и обоснование современных ЭВМ.
II.8 Вычислимость по Тьюрингу примитивно рекурсивных функций
Понятие суперпозиции функций и сложной функции хорошо известно, но сейчас нас этот оператор интересует с точки зрения его взаимоотношений с процессом вычислимости функций с помощью машин Тьюринга.
Теорема 1. Если функции f(x1,x2,…,xn), g1 (x1,x2,…,xm), …, gn (x1,x2,…,xm)
правильно вычислимы по Тьюрингу, то правильно вычислима и сложная функция (суперпозиция функций):
φ(x1,x2,…,xn)=f( g1 (x1,x2,…,xm),…, gn (x1,x2,…,xm)).
Доказательство: руководствуясь определением композиции машин Тьюринга, нетрудно понять, что если машина F правильно вычисляет функцию f(y), а машина G правильно вычисляет функцию g(x), то композиция этих машин вычисляет суперпозицию этих функций f(g(x)):
q101x;
G:q01g(x,y);
F: q01f(g(x,y)).
Рассмотрим более сложную суперпозицию вычислимых функций: φ(x,y)= f(g1(x,y), g2(x,y)). Пусть машины F, G1, G2 правильно вычисляют
функции f, g1, g2 соответственно. Сконструируем машину Тьюринга, правильно вычисляющую сложную функцию φ(x,y), пользуясь введенными нами машинами сдвига, транспозиции, копирования и нулевой функции:
|
q101x01y; |
K2: |
01x01yq01x01y; |
G1: |
01x01yq01g1(x,y); |
Ц: |
01g1(x,y) q 01x01y; |
G2: |
01g1(x,y) q01g2(x,y) ; |
62
Б-: |
q01g1(x,y) 01g2(x,y) ; |
F: |
q01 f(g1(x,y) ,g2(x,y)); |
q0→q00 |
q001 f(g1,g2). |
Сконструируйте самостоятельно композицию машин, правильно вычисляющих функцию φ(x,y)= f(g1(x,y), g2(x,y), g3(x,y)). Подстановки указанного вида достаточно специфичны (все функции g имеют одно о тоже число аргументов) и не исчерпывают всевозможных подстановок, которые можно производить над функциями. Но благодаря функциям-проекторам Imn этот недостаток легко устраним: любая суперпозиция функций в функции может быть выражена через суперпозиции указанного вида и функциипроекторы. В самом деле, например, суперпозиция f(g1(x1, x2), g2(x1))может быть в требуемом виде представлена так: f(g1(x1, x2), I12 (g2(x1), g3(x1))), где g3(x1) – любая функция от х1. В свою очередь, используя подстановку и функции-проекторы, можно переставлять аргументы в функции:
f(x2, x1, x3,…,xn)=f(I22(x1, x2), I12(x1, x2), x3, …, xn); f(x1, x1, x3,…,xn)=f(I12(x1, x2), I12(x1, x2), x3, …, xn);
поэтому можно считать, что теорема полностью доказана.
Сделаем еще один шаг на пути (в каком-то смысле аксиоматического) описания всех функций, вычислимых с помощью машины Тьюринга. Мы докажем, что всякая примитивно рекурсивная функция вычислима с помощью машины Тьюринга. Для этого остается доказать следующую теорему.
Теорема 2. Функция φ, возникшая примитивной рекурсией из правильно вычислимых на машине Тьюринга функций f и g, сама правильно вычислима на машине Тьюринга.
Доказательство: Для краткости записей будем считать, что функция φ связана с функциями f и g следующим образом:
φ(x,0)=f(x), φ(x,i+1)=g(x, φ(x,i)).
63
Обозначим F и G – машины Тьюринга, правильно вычисляющие функции f и g соответственно. Пусть x,y – произвольные натуральные числа. Требуется сконструировать машину Тьюринга, вычисляющую значение φ(x,y). Как мы уже отмечали, для вычисления φ(x,y) предстоит вычислить y+1 значений φ(x,0),
φ(x,1),…, φ(x,y-1), φ(x,y).
Начальная конфигурация такова: q101x01y0. Применим к ней следующую последовательность машин Тьюринга: Б+ВГВ Б+F. В результате получим последовательность конфигураций:
|
q101x01y0; |
Б+: |
01x q 01y0; |
В: |
01y q 01x0; |
Г: |
01y q 01x 01x 0; |
В: |
01x q 01y 01x 0; |
Б+: |
01x 01y q 01x 0; |
F: |
01x 01y qα 01φ(x,0)0; |
На последнем шаге, применив машину, вычисляющую функцию f(x), к конфигурации q01x, мы получим значение f(x), которое, согласно схеме примитивной рекурсии для φ, есть φ(x,0). Теперь мы можем приступить к вычислению φ(x,1), используя второе соотношение схемы примитивной рекурсии:
φ(x,1)=g(x, φ(x,0)).
Для этого применим сначала к последней конфигурации команды: qα0→ qα+10Л; qα1→ qα+20. В результате получим конфигурацию: 01x01y-1
qα+2001φ(x,0)0. Теперь нужно подготовить ленту машины к применению машины G, вычисляющей значение g(x,φ(x,0)), то есть необходимо получить на ленте конфигурацию q01x01φ(x,0). Для этого применим к конфигурации 01x01y-1 qα+2001φ(x,0)0 последовательность машин АБ-ВБ+ВГВБ-ВБ+Б+ВБ-. Получим последовательность конфигураций:
01x01y-1 qα+2 001φ(x,0)0;
64
А: |
01x01y-1 q 01φ(x,0)00; |
||
Б-: |
01xq01y-1 01φ(x,0); |
||
В: |
01y-1q01x 01φ(x,0); |
||
Б+: |
01y-101x q 01φ(x,0); |
||
В: |
01y-101 φ(x,0) q 01x; |
||
Г: |
01y-101 φ(x,0) q 01x01x; |
||
В: |
01y-101x q 01 φ(x,0) 01x; |
||
Б-: |
01y-1 q 01x 01 φ(x,0) 01x; |
||
В: |
01 x q 01 y-1 01 φ(x,0) 01x; |
||
Б+: |
01 x |
01 y-1 |
q 01 φ(x,0) 01x; |
Б+: |
01 x |
01 y-1 |
01 φ(x,0) q 01x; |
В: |
01 x |
01 y-1 |
01 x q 01 φ(x,0); |
Б-: |
01 x |
01 y-1 |
q 01 x 01 φ(x,0). |
Теперь мы можем применить машину G и вычислить значение
φ(x,1)=g(x, φ(x,0)) : 01 x 01 y-1 qβ 01 φ(x,1).
Применим в этой конфигурации команду: q β0→qα0, зацикливающую программу. Получим конфигурацию:
01 x 01 y-1 qα 01 φ(x,1).
Начинается следующий цикл, осуществляемый командами, идущими после первого появления состояния qα. Этот цикл преобразует конфигурацию вида 01 x 01 y-i qα 01 φ(x,i) в конфигурацию 01 x 01 y-(i+1) qβ 01 φ(x,i+1), при условии, что y>i. Команда q β0→qα0 зацикливает программу, и в результате работы цикла параметр y-i будет понижаться до тех пор, пока не получится конфигурация: 01 x 0 qα 01 φ(x,y), которая в силу команды q α0→qα+10Л перейдет в конфигурацию
01 x qα+1 001 φ(x,y).
Дополнительные команды q α+10→qβ+10, А, В, О, В, Б-, А создают на ленте требуемую конфигурацию q0 01 φ(x,y), доказывающую, что функция φ(x,y) правильно вычислена на машине Тьюринга. Теорема доказана.
65
