d1. Информация <–> d2. Системы счисления <–> d3. Обработка информации <–> d4. Дискретные сообщения
d4. Формальный алгоритм <–> d5. НАМ, т. Шеннона <–> d6. Сочетания алгоритмов <–> d7. УМТ <–> d8. Машина фон Неймана
Формализация понятия алгоритма
реализуется построением алгоритмических моделей.Неформальное определение алгоритма не даёт понимания, как именно выполнять “всем понятные” действия.
Легко ли описать словами завязывание шнурков?
- Если вдуматься, это чисто механическое действие.
Если бы все поставленные математические задачи могли быть алгоритмически решены, то не пришлось бы уточнять понятие алгоритма.
Для некоторых классов подобных задач не существует алгоритма решения, они называются алгоритмически неразрешимыми.
Доказательство того, что они неразрешимы, неизбежно содержит высказывания о всех мыслимых алгоритмах.
Но формулировка таких высказываний невозможна без формального определения алгоритма.
Формализация понятия реализуется построением алгоритмических моделей.
Рассмотрим 3 типа универсальных алгоритмических моделей:
© В Америке студенты пишут на lisp. Им устраивают таким образом дедовщину.
Рекурсивные функции были предложены в 30-ых годах прошлого века американским математиком Чёрчем (λ-исчисление).
В 60-ом американский математик Маккарти предложил интерпретируемый алгоритмический язык Lisp, также основанный на λ-исчислении.
На λ-исчислении основывается идея функционального программирования.
Использование алгоритмических моделей опирается на тезис Тьюринга-Чёрча о том, что
всякий интуитивный алгоритм может быть выражен средствами одной из алгоритмических моделей
.
Тезис не был опровергнут, но и не был доказан. Поэтому и называется
тезисом
.
Алгоритмические модели описывают один и тот же класс процессов обработки сообщений.
Доказано, что одни модели сводятся к другим, т.е. могут быть описаны средствами других моделей.
Модель Тьюринга выберем для формализации понятия алгоритма, т.к. она ближе всего в вычислительным машинам.
В 1936 г. Алан Тьюринг для уточнения понятия алгоритма предложил абстрактную вычислительную машину с простым набором операций.
МТ расшифровывала криптограммы фашистов, что имело высокое значение в годы Второй мировой войны (машина enigma)
МТ состоит из ограниченной с одного конца бесконечной ленты, разделенной на ячейки, и пишущей головки, которая может перемещаться между ячейками.
В каждой ячейке может быть записан один знак рабочего алфавита либо пробел (лямбда).
Головка МТ располагается над одной из рабочих ячеек ленты и воспринимает знак на ней. При этом головка находится в одном из дискретных состояний, среди которых выделено начальное состояние q0. В зависимости от рабочего состояния и от буквы в ячейке МТ выполняет одну из команд, составляющих ее программу.
Выполнение команды состоит в совершении действия и в переводе головки в новое состояние (может совпадать со старым). Есть три вида элементарных действий: сдвиг на ячейку влево, вправо и запись буквы/пробела.
Перед работой МТ на ленту записывается исходное сообщение в ячейки побуквенно, при этом длина сообщения и число ячеек конечны. Ячейки справа от последней буквы исходного сообщения считаются пустыми.
Команда МТ описывается упорядоченной четвёркой символов (q, a, v, q')
.
q
- текущее состояние головки;a
- буква в рабочей ячейке;v
- выполняемое действие;q'
- новое состояние.2.2 Математически строгое определение МТ (можно и без него обойтись
)
Нам важно объяснить, какие моменты в Тьюринге не годятся для актуальных алгоритмических систем.
В результате критики Тьюринга предложили диаграммы Тьюринга (5 лабы - низкоуровневое, сложное и неудобное программирование).
- © Диаграммер и МТ задают культуру программирования.
- © Это даже полезнее, чем на ассемблере.
- © А решение задач на питоне не выигрышно по времени и по памяти.
Любая программа выразима с помощью диаграммы, и наоборот.
Диаграммы представляют одни МТ через другие, более простые, при этом другим визуальным способом и без потери в строгости.
Элементарная МТ
выполняет одно элементарное действие и останавливается, при этом не может быть описана проще.
Виды элементарных МТ:Комбинация нескольких одинаковых элементарных МТ l
и r
даёт машины L
и R
соответственно.
L
- сдвиг в левый конец слова;R
- сдвиг в правый конец слова.ДТ рисуется слева направо сверху вниз, будучи ориентированным на человека вариантом алгоритмической модели Тьюринга.
В диаграммерах этот принцип сохраняется.
- Диаграмма Тьюринга - это алгоритм (от неё буквально один шаг до программирования).
- JDT - наш ява-диаграммер!
- Диаграммер VTM - требует Qt (есть на faq8).
.R.
Если после действия одной машины должна быть выполнена другая, соединяем их стрелками. Над стрелками надписываем знаки, определяющие переходы.
Пример НЕ алгоритма.
Для повторения участка диаграммы нужно его замкнуть.
Для упрощения диаграммы можно опустить некоторые стрелки и подряд идущие машины, записав их число в виде степени машины.
Примеры диаграмм.
Тут сложно. Ниже будет короче.
Главное запомнить идею о том, что всё связано с понятием отображения и образа.
Определение 2.2.5
Машина Т моделирует другую машину, если выполняются 5 условий:
1) Указан способ кодирования знаков;
2) Для каждого состояния машин определено отображение из множества состояний Q в Q’;
3) Если С0 — начальная конфигурации (положение) первой машины, то её образ C0’ есть конфигурация (положение) для второй машины.
4) Машина А останавливается в некотором положении Ck, тогда машина А’ останавливается в положении Ck’, где Ck’ — образ Ck.
5) Машина А проходит последовательность конфигураций такую, что для машины A’ последовательность пройденных конфигураций тоже будет образами.
Если одна машина моделирует другую, то она описывает тот же алгоритм, но может проходить большее число промежуточных конфигураций. Понятие моделирования вводит бинарное отношение алгоритмического равенства между машинами Тьюрингами.
Т.е. понятие моделирования говорит о том, что равенство алгоритмов есть равенство МТ.
Теорема 2.2.6
Каждой программе, задающей МТ Т = (A, Q, P, q0)
, можно эффективным образом сопоставить диаграмму D
так,
чтобы диаграмма моделировала машину Т
.
Нам надо указать алгоритм эффективного построения диаграммы по программе, а потом убедиться в соответствии предыдущей формулировке.
План доказательства теоремы:
1) Построение диаграммы.
2) Проверка условия определения 2.2.5
.
Теорема 2.2.6. Доказательство:
Теорема 2.2.8 (обратная)
Каждой диаграмме может быть эффективным образом составлена программа так, что она моделирует диаграмму.
Доказательство в 2 этапа:
1) Построение программы.
2) Проверка условий определения 2.2.5
.
Теорема 2.2.8. Доказательство:
Вычисления должны быть нормированы! При этом МТ не использует дополнительных букв.
Если алгоритм - это МТ, то равенство алгоритмов означает равенство МТ.
Тьюринговская теория позволяет сравнивать ‘мощность’ алгоритмов.
- Но сравнивать мощность не совсем корректно. Мы сравниваем именно вычислительную (алгоритмическую) сложность.