Типы алгоритмов. История создания
Алгоритмические машины (АМ)
Основные АМ
Автор
Структура алгоритма (составляющие алгоритма)
Составляющие структуры
Интерпретация МТ.
МТ
Абстрактная модель машины Тьюринга
МТ = <Q, D, P, q0, qкон>
Команды перемещений ленты
Элементарный шаг (такт) работы машины Тьюринга
Пример
Отличия читающего автомата с выходом и МТ
Тезис Тьюринга
Отличия ЭВМ и машины Тьюринга
Этапы решения задачи
Представление машины Тьюринга совокупностью команд
Представление машины Тьюринга графом
Представление машины Тьюринга таблицей соответствия
Пример 1.
Построение МТ
Операции над машинами Тьюринга
Операции над МТ
Операции над МТ
Алгоритмическая машина Поста
Структура команды
Система команд машины
Система команд машины
Пример
Комментарий к примеру
Функции, вычислимые алгоритмом
Вычислимые функции
Рекурсивные функции
Рекурсия
Рекурсивные функции
Свойства рекурсивных алгоритмов:
Примитивная рекурсия
Исчисления.
Метапрограммирование
Ассоциативное исчисление
1.59M

Машина Тьюринга. Теория алгоритмов, формальных языков, грамматик и автоматов

1.

Машина Тьюринга
(Бильгаева Н.Ц.
Теория алгоритмов, формальных
языков, грамматик и автоматов)

2.

Теория алгоритмов
Восходит к Давиду Гильберту
На рубеже 20 века сформулировал мировую
проблему:
Можно ли построить алгоритм, создающий
необходимый алгоритм к любой, точно
поставленной задаче?
Такая постановка задачи неразрешима, т.к.
фактически проблема сводится к логическому
парадоксу брадобрея: Он бреет тех, кто не
бреется сам. Если брадобрей бреется сам, то он
принадлежит множеству тех жителей города, кто
бреется сам, Но в объявлении утверждается, что
наш брадобрей никогда не бреет тех, кто входит в
это множество. Следовательно, наш брадобрей
не может брить самого себя (Бертран Рассел)

3. Типы алгоритмов. История создания

Интенсивный
поиск универсального
уточнения алгоритма предложил
примерно 20 формальных конструкций
алгоритмов, которые условно можно
разбить на три типа
Алгоритмические машины (АМ).
Функции, вычислимые алгоритмом.
Исчисления.

4. Алгоритмические машины (АМ)

имеют единственный процессор,
выполняющий небольшой набор очень
примитивных действий,
простую структуру данных (структуру
памяти) в виде бесконечной ленты,
простую логику (правила) управления
процессором.

5. Основные АМ

Машина
Тьюринга (МТ) предложена
Тьюрингом в 1937 г.
Машина Поста (МР) предложена
Постом в 1937 г.
Нормальный алгоритм Маркова (НАМ)
предложен Марковым в 1953 г.

6.

Машина Тьюринга
-абстрактный исполнитель (абстрактная вычислительная
машина). Была предложена Аланом Тьюрингом в 1936 году
для формализации понятия алгоритма.
Машина Тьюринга является расширением конечного
автомата и, согласно тезису Чёрча — Тьюринга, способна
имитировать все другие исполнители (с помощью задания
правил перехода), каким-либо образом реализующие
процесс пошагового вычисления, в котором каждый шаг
вычисления достаточно элементарен.

7. Автор

ТЬЮРИНГ Алан Матисон (Turing Alan
Mathison)
(1912—1954), английский математик.
Основные труды по математической
логике, вычислительной математике.
В 1936-37 годах ввел математическое
понятие абстрактного эквивалента
алгоритма, или вычислимой функции,
получившее затем название «машины
Тьюринга».
В возрасте 24 лет Тьюринг написал
работу "О вычислимых числах", которой
суждено было сыграть исключительно
важную роль в развитии
вычислительной математики и

8.

Соглашение об алгоритме

9.

10. Структура алгоритма (составляющие алгоритма)

Процессорная структура. (Исполнитель
алгоритма).
Во всех теоретических конструкциях
алгоритмов и большинстве алгоритмических
языках это единственный процессор.
Структуры данных. Структура данных это
способ организация записи, хранения и
извлечение данных.
Данные – это элементы множеств, которые
нужно порождать или распознавать..

11. Составляющие структуры

Информационная
структура
алгоритма (ИСА). Структура функций
есть описание конструирования
функции от функций из базовых.
Логическая структура алгоритма
(ЛСА) или программы (ЛСП). ЛСА суть
описание организации вычислительного
процесса, который управляется
состоянием памяти.

12. Интерпретация МТ.

Процессор – в МТ называется управляющей
головкой (УГ).
Структура данных (память процессора)
бесконечная лента, разбитая на ячейки, в
ячейку может быть записан только один
символ
Процесс вычислений происходит по тактам
Процесс остановки (остановка) МТ.
Замечание Список правил для МТ не
упорядочен

13. МТ

Тьюринг назвал свое абстрактное механическое
устройство "универсальной машиной", поскольку она
должна была справляться с любой допустимой, то
есть теоретически разрешимой задачей —
математической или логической.
Данные должны были вводиться в машину на
бумажной ленте, поделенной на клетки — ячейки.
Каждая такая ячейка либо содержала символ, либо
была пустой.
Машина могла не только обрабатывать записанные
на ленте символы, но и изменять их, стирая старые и
записывая новые в соответствии с инструкциями,
хранимыми в ее внутренней памяти.

14.

Машина Тьюринга
Представляет собой бесконечную ленту,
разделенную на ячейки.
Имеет управляющее устройство, которое
перемещается в двух направлениях.
В управляющем устройстве содержится
таблица, которая описывает порядок
действий.
УУ
таблица

15. Абстрактная модель машины Тьюринга

МТ = <Q, D, P, q0,
qкон>
L
R
xj , d
УУ
xi
q

16. МТ = <Q, D, P, q0, qкон>

МТ = <Q, D, P, q0, qкон>

17.

18.

19.

Машина Тьюринга
состоит из трех
частей: ленты,
считывающезаписывающей
головки и
логического
устройства
Лента выступает в качестве внешней
памяти; она считается неограниченной
(бесконечной)

20.

Головка неподвижна, а лента
передвигается относительно нее вправо
или влево.
Машина работает в некотором
произвольном конечном алфавите
A = {ε a1…a n} – этот алфавит называется
внешним.
В нем выделяется специальный символ –
ε, называемый пустым – его посылка в
какую-либо ячейку стирает тот символ,
который до этого там находился, и
оставляет ячейку пустой.

21.

В
каждую ячейку ленты может быть
записан лишь один символ.
Информация, хранящаяся на ленте,
изображается конечной
последовательностью символов
внешнего алфавита, отличных от
пустого символа.
Головка всегда расположена над
одной из ячеек ленты.
Работа происходит тактами (шагами).

22.

Система исполняемых головкой команд
предельно проста:
на каждом такте она производит замену символа в
обозреваемой ячейке ai символом aj
При этом возможны сочетания:
j = i – это означает, что в обозреваемой ячейке
символ не изменился;
i_0, j = 0 означает, что хранившийся в ячейке
символ заменяется пустым, т.е. стирается;
i =0, j_ 0 означает, что пустой символ заменяется
непустым (с номером j в алфавите), т.е.
производится вставка символа;
i j_ 0 соответствует замене одного символа
другим.

23. Команды перемещений ленты

L («Left») на ячейку влево,
R («Right») на ячейку вправо
S («Stop») остаться на месте, т.е. адрес
обозреваемой ячейки в результате выполнения
команды может либо измениться на 1, либо
остаться неизменным.

24. Элементарный шаг (такт) работы машины Тьюринга

головка считывает
символ из
обозреваемой ячейки
и, в зависимости от
своего состояния и
прочитанного
символа, выполняет
команду, в которой
указано, какой символ
записать (или стереть)
и какое движение
совершить. При этом и
головка переходит в
новое состояние

25.

Определение Конфигурация машинысовокупность состояний всех ячеек ленты,
состояния УУ и положение головки
В зависимости от начальной конфигурации
возможны два варианта :
после конечного числа тактов машина
останавливается по команде остановки; при этом
на ленте оказывается конечная конфигурация,
соответствующая выходной информации;
остановки не происходит.
В первом случае говорят, что данная машина
применима к начальной информации, во втором –
нет.

26. Пример

Пусть начальной является конфигурация 1q11111.
Такт 1 Обозревается 1, в ЛУ состояние q.
Выходная команда q1R, что эквивалентно
перемещению головки по отношению ленты на 1
шаг вправо. Следовательно, образуется
промежуточная конфигурация 11q111.
Такт 2 – аналогичным образом осуществляется
переход к конфигурации 111q11.
Такт 3 – переход к конфигурации 1111q1.
Такт 4 –переход к конфигурации 11111q
Такт 5 Обозревается , в ЛУ состояние q. Выходная
команда z1S – вместо в ячейку записывается 1,
сдвига нет, работа прекращается. Конечная
конфигурация 111111z.
Задача решена.

27. Отличия читающего автомата с выходом и МТ

28. Тезис Тьюринга

Всякий
алгоритм может быть
задан посредством тьюринговой
функциональной схемы и
реализован в соответствующей
машине Тьюринга.
Машина
Тьюринга - это модель
компьютера

29. Отличия ЭВМ и машины Тьюринга

Главное
отличие машины Тьюринга от
ЭВМ – бесконечная лента
В отличие от машины Тьюринга память
реальных машин всегда конечна и ее
ограничения удается преодолеть путем
организации циклов if – если и for –
делай до тех пор пока

30. Этапы решения задачи

Предметная
область
Ассемблер
Аналитическая
модель
Микрокоманды
Вычислительная
модель
Вентили
(булева алгебра)
Языки
высокого уровня
Физикотехнический
процесс

31. Представление машины Тьюринга совокупностью команд

Совокупность всех команд, которые может выполнять
машина, называется ее программой. Машина Тьюринга
считается заданной, если заданы ее внешний и внутренний
алфавиты, программа, начальная конфигурация и указано,
какие из символов обозначают пустую ячейку и
заключительное состояние.
Чтобы записать совокупность команд, нужно воспользоваться
следующими правилами:
1) начальному шагу алгоритма ставится в соответствие q 0 начальное состояние;
2) циклы реализуются так, что последнее действие цикла
должно соответствовать переходу в то состояние, которое
соответствует началу цикла;
3) соседним шагам алгоритма соответствует переход в
смежные состояния, которые соответствуют этим пунктам;
4) последний шаг алгоритма вызывает переход в
заключительное состояние.

32.

В качестве примера рассмотрим совокупность команд
машины Тьюринга, которая инвертирует входную цепочку,
записанную с использованием нулей и единиц. Пусть
алфавит машины Тьюринга задан множеством A={0, 1, ε},
где символ ε соответствует пустой ячейке, а число
состояний устройства управления задано в виде
множества Q = {q0, q1, qz}. Если, например, начальная
конфигурация имеет вид q0110011, то конечная
конфигурация после завершения операции
инвертирования должна иметь вид qz001100. Для решения
задачи машиной будет порождена следующая
совокупность команд: q01 → q00R, q10 → q10L, q00 →
q01R, q11 → q11L, q0 ε → q1εL, q1ε → qzεR.

33. Представление машины Тьюринга графом

При представлении машины Тьюринга посредством графа необходимо
каждому состоянию поставить в соответствие вершину графа, а
каждой команде - помеченную дугу. Машина Тьюринга из
рассмотренного примера инвертирования цепочки, состоящей из
символов 0 и 1, будет представлена в виде графа следующим
образом:
Начальная и конечная вершины графа обычно выделяются; на рисунке
они отмечены черным кружком. Если на очередном такте работы машины
Тьюринга символ на ленте не изменяется, то в правой части команды его
можно не писать (ε на ребре в состояние qz ).

34. Представление машины Тьюринга таблицей соответствия

35.

36. Пример 1.

Построить машину Тьюринга, которая правильно вычисляет
функцию f(x) =x+1 по правилам двоичного сложения.
Решение. Исходя из формулировки задачи, требующей
вычислить функцию по правилам сложения в двоичной системе
сложения, выберем входной алфавит: А ={0, 1, ε}.
Представим машины Тьюринга таблицей соответствия и
графом. Таблица соответствия:

37.

Запишем программу построенной машины Тьюринга для
случая, когда входная цепочка на ленте равна двоичному
числу 111. Слева от каждой команды приведем
представление входной цепочки на ленте до выполнения
данной команды. Символ, который находится под головкой,
будем помечать подчеркиванием.
1) q01 → q01R ε111ε
6) q11 → q10L ε110ε
2) q01 → q01R ε111ε
7) q11 → q10L ε100ε
3) q01 → q01R ε111ε
8) q1ε → q21L ε000ε
4) q0ε → q1εL ε111ε
9) q2 ε → qz εR ε1000ε
5) q11 → q10L ε111ε

38.

39. Построение МТ

Для того чтобы доказать вычислимость функции, а в
дальнейшем и существование алгоритма необходимо
построить машину Тьюринга, реализация которой на
практике зачастую представляет собой трудоемкую
задачу. В связи с этим возникает необходимость
разбиения алгоритма на отдельные задачи, каждая из
которых будет решаться отдельной машиной Тьюринга.
Если объединить программы этих машин, то получится
новая программа, позволяющая решить исходную
задачу.

40. Операции над машинами Тьюринга

1. Композиция машин Тьюринга. Пусть машины Т1 и Т2 имеют
программы Р1 и Р2.
Предположим, что внутренние алфавиты этих машин не
пересекаются; пусть qz1 - заключительное состояние машины Т1,
а q02 - начальное состояние машины Т2. Заменим всюду в
программе Р1 заключительное состояние qz1 на начальное
состояние q02 машины Т2 и полученную программу объединим с
программой Р2. Новая программа Р определяет машину Т,
называемую композицией машин Т1 и Т2 по паре состояний (qz1,
q02).
Композиция машин может быть обозначена Т1 ⋅Т2 или Т1Т2. Более
подробно композиция машин записывается следующим образом:
Т = Т(Т1, Т2, (qz1, q02)), где
T1 = (Q1, A1, δ1, p01, pz1, a01, a11),
Т2= (Q2, A2, δ2, p02, pz2, a02, a12).

41. Операции над МТ

Пусть a01 = a02 = a0 и a11 = a12 = a1. Внешний алфавит композиции
Т1Т2 является объединением внешних алфавитов машин Т1 и Т2:
Операция композиции, выполняемая над алгоритмами, позволяет
получать новые, более сложные алгоритмы из ранее известных
простых алгоритмов.
2. Итерация машины Тьюринга. Эта операция применима только к
одной машине.
Пусть qz - заключительное состояние машины Т, а qn - какое-либо
состояние машины Т, не являющееся заключительным. Заменим
всюду в программе Р машины Т состояние qz на qn . Полученная
программа определяет новую машину Т′(qz, qn), которая называется
итерацией машины Т по паре состояний (qz, qn). Если машина
Тьюринга имеет одно заключительное состояние, то после
выполнения итерации получается машина, не имеющая
заключительного состояния.

42. Операции над МТ

43. Алгоритмическая машина Поста

(МП) — абстрактная вычислительная машина,
предложенная Эмилем Леоном Постом (Emil L.
Post), которая отличается от машины Тьюринга
большей простотой. Обе машины «эквивалентны»
и были созданы для уточнения понятия
«алгоритм»
Абстрактная машина Поста состоит
из бесконечной ленты, разделенной на равные
секции,
считывающе-записывающей головки.
Каждая секция может быть либо пуста (т.е. в нее
ничего не записано), либо заполнена (отмечена – т.е.
в нее записана метка).
Состояние ленты и информация о положении головки
характеризуют состояние машины Поста.

44.

За
один такт (его называют шагом)
головка может сдвинуться на одну
секцию вправо или влево и поставить
или удалить метку.
Работа машины Поста заключает в
переходе от одного состояния машины к
другому в соответствии с заданной
программой, которая строится из
отдельных команд.

45. Структура команды

Каждая
команда имеет следующую
структуру
xKy,
x – номер исполняемой команды;
K – указание о выполняемом действии;
y – номер следующей команды
(наследника).

46. Система команд машины

47. Система команд машины

48. Пример

49. Комментарий к примеру

Последовательное исполнение команд 1 и 2
приводит к тому, что головка за два такта
работы машины сдвигается на одну позицию
вправо.
Это передвижение продолжается до тех пор,
пока после очередного сдвига под головкой
не окажется пустая ячейка – тогда по команде
3 в нее будет поставлена метка
и по команде 4 машина остановится

50.

Если данные условия не выполняются, происходит
безрезультатная остановка машины, т.е. остановка
до получения запланированного результата.
В отличие от этой ситуации, остановка по команде
<x стоп> является результативной, т.е. она
происходит после того, как результат действия
алгоритма получен.
Кроме того, возможна ситуация, когда машина не
останавливается никогда – это происходит, если ни
одна из команд не содержит в качестве
последователя номера команды остановки или
программа не переходит к этой команде.

51. Функции, вычислимые алгоритмом

алгоритм не определяется
формально, а существует как бы в
виде «всем понятной механической
процедуры».
Любая функция, вычислимая на
интуитивном (содержательном)
уровне, должна быть сконструирована
из базовых

52. Вычислимые функции

Говорят, что машина Тьюринга вычисляет функцию f(x1, x2, ..., xn), если
выполняются следующие условия:
1) для любых x1, x2, ..., xn, принадлежащих области определения
функции, машина Тьюринга из начальной конфигурации, имея на
ленте представление аргументов, переходит в заключительную
конфигурацию, имея на ленте результат (представление функции);
2) для любых x1, x2, ..., xn, не принадлежащих области определения
функции, машина Тьюринга из начальной конфигурации работает
бесконечно.
Если начальная и заключительная конфигурации машины Тьюринга
являются стандартными, то говорят, что машина Тьюринга правильно
вычисляет функцию f.
Функция называется вычислимой по Тьюрингу, если существует
машина Тьюринга, вычисляющая ее.

53.

54.

55.

56. Рекурсивные функции

Рекурсивные функции на множестве
натуральных чисел были предложены Клини
в 1938 г.
Конструктивные механизмы рекурсивных
функций очень просты, их применение в
процессе построения «функции от функции»
позволяет явно выстраивать структуру
функции в отличие от АМ, где функция
определяется процедурно, через
последовательность действий.

57. Рекурсия

Пример:
определение факториала.
n!=1*2*3*...*n.
Н.Вирт
отмечает, что "...мощность
рекурсии связана с тем, что она
позволяет определить бесконечное
множество объектов с помощью
конечного высказывания".

58. Рекурсивные функции

Рекурси́вная фу́нкция (от лат. recursio —
возвращение) — это
числовая функция числового аргумента,
которая в своей записи содержит себя
же. Рекурсия – это такой способ
организации вычислительного
процесса, при котором процедура или
функция в ходе выполнения
составляющих ее операторов
обращается сама к себе.

59. Свойства рекурсивных алгоритмов:

Правильный рекурсивный алгоритм не должен создавать
бесконечную последовательность вызовов самого себя.
Для этого он обязательно должен содержать нерекурсивный
выход, т.е. при некоторых исходных данных вычисления в
алгоритме должны производиться без вызовов его самого тривиальный случай.
Определение сложного случая в терминах более
простого.
При любых исходных данных нерекурсивный выход должен
достигаться за конечное число рекурсивных вызовов. Для
этого каждый новый вызов рекурсивного алгоритма должен
решать более простую задачу, т.е. рекурсивный алгоритм
должен содержать определение некоторого сложного случая в
терминах более простого случая.

60. Примитивная рекурсия

Оператор примитивной рекурсии Rn позволяет
определить (n+1) - местную функцию f по двум
заданным функциям, одна из которых является nместной функцией g, а другая (n+2) - местной
функцией h.
Функция f(x1, x2, ..., xn, y) получается оператором
примитивной рекурсии из функции g(x1, x2, ..., xn) и
функции h(x1, x2, ..., xn, y, z), по схеме:
f(x1, x2, ..., xn, 0) = g(x1, x2, ..., xn);
f(x1, x2, ..., xn, y+1) = h(x1, x2, ..., xn, y, f(x1, x2, ..., xn, y)).
Независимо от числа переменных в f рекурсия ведется
только по одной переменной у. Остальные n
переменных x1, x2, ..., xn на момент применения
схемы зафиксированы и играют роль параметров.

61.

62.

Тезис Чёрча — Тьюринга и алгоритмически
неразрешимые проблемы
Алан Тьюринг высказал предположение (известное как Тезис
Чёрча — Тьюринга), что любой алгоритм в интуитивном смысле
этого слова может быть представлен эквивалентной машиной
Тьюринга. Уточнение представления о вычислимости на основе
понятия машины Тьюринга (и других эквивалентных ей понятий)
открыло возможности для строгого доказательства
алгоритмической неразрешимости различных массовых проблем
(то есть проблем о нахождении единого метода решения
некоторого класса задач, условия которых могут варьироваться в
известных пределах). Простейшим примером алгоритмически
неразрешимой массовой проблемы является так называемая
проблема применимости алгоритма (называемая также проблемой
остановки). Она состоит в следующем: требуется найти общий
метод, который позволял бы для произвольной машины Тьюринга
(заданной посредством своей программы) и произвольного
начального состояния ленты этой машины определить,
завершится ли работа машины за конечное число шагов, или же
будет продолжаться неограниченно долго.

63. Исчисления.

Исчисление функций, вычисляемых на
множестве натуральных чисел предложено
Эрбраном и Гёделем в 1938 г.
-исчисление А.Чёрча также может быть
отнесено к этому типу алгоритмов,
предложено в 1937 г.
Формальные грамматики, порождающие
языки, предложены Хомским в 1953 – 1956 г.

64.

Лямбда-исчисление
Ля́мбда-исчисле́ние (λ-исчисление) — формальная система,
разработанная американским математиком Алонзо Чёрчем,
для формализации и анализа понятия вычислимости.
λ-исчисление может рассматриваться как семейство
прототипных языков программирования. Их основная
особенность состоит в том, что они являются языками
высших порядков. Тем самым обеспечивается
систематический подход к исследованию операторов,
аргументами которых могут быть другие операторы, а
значением также может быть оператор. Языки в этом
семействе являются функциональными, поскольку они
основаны на представлении о функции или операторе,
включая функциональную аппликацию и функциональную
абстракцию.
λ-исчисление реализовано Джоном Маккарти (1960) в языке
Лисп. Он ориентирован на разработку программ для
решения задач в области искусственного интеллекта и считается вторым после Fortran старейшим высокоуровневым
языком программирования.

65. Метапрограммирование

Метапрограммирование предусматривает
написание программ, которые работают с
другими программами в качестве данных.
Язык обрабатывающей программы
называется метаязыком, язык
обрабатываемой — объектным языком.
Простейшим примером метапрограммирования является любой компилятор,
преобразующий код, написанный на языке
высокого уровня, в низкоуровневый
машинный язык или ассемблер.

66. Ассоциативное исчисление

English     Русский Правила