4.1.1. Определение МТ и тезис Черча.ppt
- Количество слайдов: 19
Слово алгоритм содержит в своем составе преобразованное географическое название Хорезм. Термин “алгоритм” обязан своим происхождением великому ученому средневекового Востока - Муххамад ибн Муса ал-Хорезми. Вплоть до 30 -х годов нашего столетия понятие алгоритма оставалось интуитивно понятным, имевшем скорее методологическое, а не математическое значение. Алгоритм рассматривался как точное и конечное описание того или иного общего метода, основанного на применении исполнимых элементарных тактов обработки. Однако, в начале ХХ в. были сформулированы алгоритмические проблемы, положительное решение которых представлялось маловероятным. Решение таких проблем потребовало привлечения новых логических средств. Ведь одно дело доказать существование разрешающего алгоритма – это можно сделать, используя интуитивное понятие алгоритма. Другое дело – доказать несуществование алгоритма – для этого нужно знать точно – что такое алгоритм.
Современное значение слова "алгоритм" во многом аналогично таким понятиям, как рецепт, процесс, метод, способ. Алгоритм имеет пять важных свойств: ♦ Конечность. Алгоритм всегда должен заканчиваться после выполнения конечного числа шагов. ♦ Определенность. Каждый шаг алгоритма должен быть точно определен. ♦ Наличие входных данных. Алгоритм имеет некоторое число входных данных, задающихся до начала его работы или определяющихся динамически во время его выполнения. ♦ Наличие выходных данных. Алгоритм имеет одно или несколько выходных данных, имеющих определенную связь с входными данными. ♦ Эффективность. Алгоритм обычно считается эффективным, если его операторы достаточно просты для того, чтобы их можно было точно выполнить в течение конечного промежутка времени с помощью карандаша и бумаги.
С алгоритмами связаны приведенные ниже области исследований: ♦ Построение алгоритмов. В этой области рассматриваются приемы и методы, используемые при написании алгоритмов (технология программирования, SE). ♦ Анализ алгоритмов. Предмет этой области состоит в том, чтобы для заданного алгоритма определить его рабочие характеристики. Например, часто желательно, чтобы алгоритм был быстрым. ♦ Теория алгоритмов. В этой области рассматриваются вопросы существования или не существования эффективных алгоритмов вычисления определенных функций.
Формализация понятия алгоритма реализуется с помощью построения алгоритмических моделей. Можно выделить три основные универсальные алгоритмические модели: ♦ машины Тьюринга (алгоритм представляется как описание процесса работы некоторой машины, способной выполнять лишь некоторое число весьма простых операций), ♦ рекурсивные функции (понятие алгоритма связывается с вычислениями функций от натуральных аргументов), ♦ нормальные алгоритмы Маркова (алгоритм описывается как преобразования слов над произвольным алфавитом). Существенно, что все алгоритмические модели описывают один и тот же класс процессов. Математически доказывается, что все эти модели эквивалентны другу.
Машина Тьюринга была описана в 30 -е годы математиком Аланом М. Тьюрингом (Англия) в качестве точного математического аналога понятия алгоритма и для доказательства алгоритмической неразрешимости некоторых проблем. Машина Тьюринга помогает устанавливать следующие факты: если для решения задачи нельзя построить машину Тьюринга, то она алгоритмически неразрешима. Машина Поста по архитектуре и принципам работы похожа на машину Тьюринга. И машина Тьюринга, и машина Поста эквивалентны по своим возможностям. Разработаны они практически в одно и то же время (в 1936 г. ) независимо друг от друга.
2. Определение Машины Тьюринга Перейдем к точным определениям. Алфавит - непустое конечное множество символов. Слово – конечная система знаков алфавита. Машина располагает конечным числом знаков (символов) s 1, s 2, …, sk, образующих внешний алфавит S, в котором кодируются данные, подаваемые в машину, а также те промежуточная и выходная информация, которая вырабатывается в ней. Принято считать, что среди знаков внешнего алфавита имеется пустой знак: Λ. S* - множество всех слов в алфавите S. На любой стадии работы машины в каждой ячейке может храниться ровно один знак. В начале работы машины на ленту подается начальная информация. Работа машины складывается из следующих один за другим тактов, по ходу которых происходит преобразование начальной информации.
Машина Тьюринга есть по определению набор М = (S, Q, П, q 0, !, Λ), где П – программа машины. Логический блок лента Головка, которая обозревает содержимое ячейки Формально в определении машины Тьюринга идет речь о бесконечной ленте, на самом деле имеют значение лишь конечные её куски. Правда, эти куски приходится удлинять каждый раз, когда головка, дойдя до края, может сойти с него. В этом смысле правильнее рассматривать ленту машины Тьюринга не как бесконечную, а как растущую.
В машине Тьюринга обработка информации происходит на ленте с помощью логического блока, который может пребывать в одном из состояний q 0, q 1, …, qm, образующих внутренний алфавит Q – (это конечное множество). Команды в МТ имеют вид: qi a → qj b Н(П, Л), где a, b – символы внешнего алфавита S, qi, qj – символы внутреннего алфавита Q. В командах применяется 3 стандартных адреса, которые изображаются специальными знаками: П – перейти в соседнюю справа ячейку, Л – перейти в соседнюю слева ячейку, Н – продолжать обозревать ту же ячейку. Команду можно прочитать так: «Находясь в состоянии qi и наблюдая букву а, следует перейти в состояние qj, напечатать букву b и затем либо остаться на месте, либо передвинуться вправо(влево)» .
Зафиксируем два алфавита: внешний – S, и внутренний – Q = {q 0, q 1, …qk, …, qm, !}. q 0 – начальное состояние, ! – финальное состояние. Для слежения за работой машины Тьюринга удобно пользоваться так называемыми тьюринговыми конфигурациями. Под k-ой конфигурацией будем понимать изображение ленты с информацией, записанной на ней к началу, k-го такта A<qk, a>B – конфигурация, где A, B Є S*. При этом считаем: <q 0, a>B – начальная конфигурация(А = Λ), <!, a>C – финальная конфигурация. Пример начальной конфигурации 3 8 9 q 0 Пример финальной конфигурации 3 9 0 !
Программа - конечная последовательность команд. Программу машины Тьюринга удобно задавать в виде прямоугольной таблицы, столбцы которой соответствуют состояниям, а строки - буквам внешнего алфавита; в каждой ячейке таблицы записана соответствующая команда. Эту таблицу будем называть функциональной схемой машины: q 0 q 1 q 2 ! Λ … … | … … α … … β … … … … S = {Λ, |, α, β} Q = {q 0, q 1, q 2, !}
В зависимости от того, какое входное слово U было подано на ленту МТ, возможны два случая: 1. После конечного числа тактов машина останавливается (заключительное состояние - сигнал об остановке), при этом на ленте оказывается записанным некоторое слово V. В таком случае говорят, что машина применима к начальному слову U и перерабатывает его в результирующее слово V; 2. Остановка никогда не происходит. В таком случае говорят, что машина не применима к начальному слову U.
Посмотрим, как строятся тьюринговы машины, реализующие некоторые простые арифметические алгоритмы, и как происходит в машине процесс их реализации. 1. Дана десятичная запись числа n. Требуется показать десятичную запись числа n+1. Решение: Зафиксируем внешний алфавит: S = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, Λ} Зафиксируем внутренний алфавит (алфавит состояний): Q = {q 0 , q 1, q 2, q 3, !}, причем q 0 – начальное состояние, ! – финальное состояние. Заданное число n, а также результирующее число n+1 будут записаны в десятичной системе, причем цифры будут помещаться по одной в ячейке (ячейки следуют подряд одна за другой без пробелов).
Считаем, что в начале работы головка машины обозревает крайнюю левую цифру входного числа. Составим функциональную схему: Начальная 3 8 9 конфигурация Функциональная q 0 схема 3 8 9 q 0 q 1 q 2 q 3 q 0 0 П q 2 1 Л q 2 0 Л ! 0 Н 1 q 0 1 П q 2 2 Л q 2 1 Л ! 1 Н 3 8 9 2 q 0 2 П q 2 3 Л q 2 2 Л ! 2 Н 3 q 0 3 П q 2 4 Л q 2 3 Л ! 3 Н 3 8 9 Λ 4 q 0 4 П q 2 5 Л q 2 4 Л ! 4 Н q 0 5 П q 2 6 Л q 2 5 Л ! 5 Н 6 q 0 6 П q 2 7 Л q 2 6 Л ! 6 Н 7 q 0 7 П q 2 8 Л q 2 7 Л ! 7 Н 8 q 0 8 П q 2 9 Л q 2 8 Л ! 8 Н 9 q 0 9 П q 1 0 Л q 2 9 Л ! 9 Н Λ q 1 Λ Л ! 1 Н q 3 Λ П q 0 3 8 9 q 1 3 8 0 q 1 3 9 0 q 2 Финальная конфигурация Λ 3 9 0 q 2 !
1. Функциональная схема 8. 9 9 9 q 1 q 0 q 1 q 2 q 3 0 q 0 0 П q 2 1 Л q 2 0 Л q 0 1 П q 2 2 Л q 2 1 Л ! 1 Н 2 q 0 2 П q 2 3 Л q 2 2 Л ! 2 Н 3 q 0 3 П q 2 4 Л q 2 3 Л ! 3 Н 4 q 0 4 П q 2 5 Л q 2 4 Л ! 4 Н 5 q 0 5 П q 2 6 Л q 2 5 Л ! 5 Н 6 q 0 6 П q 2 7 Л q 2 6 Л ! 6 Н 7 q 0 7 П q 2 8 Л q 2 7 Л ! 7 Н 8 q 0 8 П q 2 9 Л q 2 8 Л ! 8 Н 9 q 0 9 П q 1 0 Л q 2 9 Л ! 9 Н Λ q 1 Λ Л ! 1 Н q 3 Λ П 9. 9 9 9 ! 0 Н 1 2. q 0 3. 9 9 9 Λ q 0 5. 9 9 9 q 1 6. 9 9 0 q 1 7. 9 0 0 q 1 1 0 0 0 ! q 0 4. Λ 0 0 0
Функция называется эффективно вычислимой, если существует алгоритм для вычисления функции. Тезис Тьюринга-Чёрча. Эффективно вычислимая функция является вычислимой по Тьюрингу. Тезис Чёрча не является математическим утверждением, так как в его формулировку входит понятие алгоритма в интуитивном смысле этого слова. Отметим, что тезис Чёрча не нужен с чисто математической точки зрения и, собственно, в математических утверждениях никогда не применяется. Там, где нужна вычислимость в математическом рассуждении, мы всегда можем использовать вычислимость по Тьюрингу.
Тезис Чёрча важен для приложений математики в естествознании. Он объясняет ту большую роль, которую играет понятие алгоритма в современной математике. Например, иногда удается точно доказать, что некоторая конкретная функция не вычислима по Тьюрингу. Тогда тезис Чёрча указывает, что вообще бесполезно искать какой- либо алгоритм, вычисляющий эту функцию. Таким образом, открывается ценная возможность точными математическими средствами обнаружить невычислимость некоторых функций.
1. А. Н. Колмогоров, А. Г. Драгалин. Математическая логика. Серия – Классический университетский учебник, издательство «УРСС» , М. 2004. 2. Роджерс Х. Теория рекурсивных функций и эффективная вычислимость. Издательство «Мир» , М. 1972. 3. А. А. Марков, Н. М. Нагорный. Теория алгоритмов. Москва, «Наука» , 1984. 4. Б. А. Трахтенброт. Алгоритмы и вычислительные автоматы. «Советское радио» , М. 1974. 5. Ахо, Ульман. Построение и анализ вычислительных алгоритмов. «Мир» , 1982.
1. Напишите алгоритм перемножения двух квадратных матриц. В чем состоит массовость этого алгоритма? 2. Чем отличается модель вычислений от алгоритма? 3. На ленту подается пара чисел: | | * | | В результате должна получиться их сумма: | | - Каким будет внешний и внутренний алфавит задачи? - Составьте программу МТ, которая реализует этот алгоритм. - Как будет выглядеть 5 -ая конфигурация? 4. МТ могут имитировать алгоритм типа: а)дискретный; б)массовый; в)детерминированный; г) недетерминированный; д)замкнутый; е)все ответы верны.
4.1.1. Определение МТ и тезис Черча.ppt