Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмы и анализ сложности.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
4.62 Mб
Скачать

Основные типы алгоритмических моделей. (с8)

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

В теории алгоритмов были предугаданы основные концепции, заложенные в аппаратуру и языки программирования ЭВМ

Несмотря на то, что упомянутые выше алгоритмические модели математически эквивалентны, на практике они существенно различаются сложностными эффектами, возникающими при реализации алгоритмов, и породили различные направления в программировании.

Первый тип алгоритмических моделей.

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

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

Несмотря на то, что и АМ и реальные ВМ предназначены для одной и той же цели, а именно для реализации различного рода алгоритмов, тем не менее их акценты и различного рода свойства в некотором роде противоположны.

Для ВМ главными целями являются скорости и физические объемы вычислений, удобства программирования, что приводит к различного рода усложнениям.

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

Итак, АМ более простая, но способная выполнять все то, что делает более сложная машина просто гораздо дольше, т.е. в этой модели идея обычной прикладной эффективности не рассматривается.

Все основные свойства, связанные с возможностью и невозможностью решения задачи на АМ и которые можно доказать, верны и для сколь угодно мощных ЭВМ.

Принципы, положенные в основу функционирования алгоритмических машин.

1) Однопроцессорность - последовательная работа процессора только над одним потоком команд.

2) Управление процессором происходит под действием внешних либо внутренних событий.

3) Алгоритм понимается как последовательность переходов из одного состояния в другое состояние под действием команд или последовательностей команд.

4) Управляющие внутренние события воспринимаются как изменения в памяти процессора.

Машина Поста.

В 1936 г. американский математик Эмиль Пост описал абстрактную вычислительную машину, созданную для формализации понятия «алгоритм». Она представляет собой универсальный исполнитель, позволяющий вводить начальные данные и читать результат выполнения программы.

Пост руководствовался принципом создания максимально простой абстракции: минимумом операций при обработке информации, входная информация должна быть закодирована с использованием минимального набора символов (2-х символов).

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

Несмотря на “примитивность” машины Поста, любой существующий алгоритм может быть записан в виде программы для машины Поста. В теории алгоритмов существует так называемый “тезис Поста”: “Всякий алгоритм представим в форме машины Поста”. Этот тезис одновременно является формальным определением алгоритма. Алгоритм (по Посту) — программа для машины Поста, приводящая к решению поставленной задачи. (с10)

Если задача имеет алгоритмическое решение, то она представима в форме команд для машины Поста.

Тезис Поста является гипотезой. Его невозможно строго доказать (так же, как и тезис Тьюринга), потому что в нем фигурируют, с одной стороны, интуитивное понятие “всякий алгоритм”, а с другой стороны — точное понятие “машина Поста”. Для того чтобы опровергнуть гипотезу Поста, необходимо придумать алгоритм, который невозможно записать в виде программы для машины Поста. На сегодняшний день такого алгоритма не существует.

Машина Поста состоит из (с11)

бесконечной ленты, поделенной на одинаковые ячейки (секции). Ячейка может быть пустой или содержать метку (принято обозначать символом V),

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

Рис. 1. В каждый момент времени каретка указывает на одну из ячеек

Текущее состояние машины Поста описывается состоянием ленты и положением каретки. Состояние ленты – информация о том, какие секции пусты, а какие отмечены. Шаг – это движение каретки на одну ячейку влево или вправо. Состояние ленты может изменяться в процессе выполнения программы.

Кареткой управляет программа, состоящая из строк команд. Всего для машины Поста существует шесть типов команд. Каждая команда имеет следующий синтаксис:

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

Варианты окончания выполнения программы на машине Поста:

  • останов по команде "стоп". Такой останов называется результативным и указывает на корректность алгоритма;

  • останов при выполнении недопустимой команды. Случаи, когда головка должна записать метку там, где она уже есть, или стереть метку там, где ее нет, являются аварийными (недопустимыми). В этом случае останов называется безрезультативным;

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

Под начальным состоянием головки понимается ее положение напротив пустой клетки левее самой левой метки на ленте.

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

Примеры:

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

Остановимся на представлении чисел на ленте машины Поста и выполнении операций над ними.

Число k представляется на ленте машины Поста идущими подряд k+1 метками (одна метка означает число «0»). Между двумя числами делается интервал как минимум из одной пустой секции на ленте. Нужно увеличить число 3 на единицу (изменить значение в памяти с 3 на 4). Допустим, точно известно, что каретка стоит где-то слева от меток и обозревает пустую ячейку. Тогда программа увеличения числа на единицу может выглядеть так: (с13)

1 -> 2

2 ? 1;3

3 <- 4

4 V 5

5 !

Зацикливание: зона работы для любого начального состояния ограничена одним и тем же числом ячеек, не зависящим от выбранного начального состояния ленты:

1. –> 2

2. <– 1

Практические задания.

Выяснить, применимы ли программы к заданным состояниям машины Поста, указать результат работы машины Поста для каждого состояния. (с14)

Если не сказано ничего о местонахождении каретки в начальный момент времени, то будем считать, что каретка обозревает ячейку с самой левой меткой.

Ответы:

a) 1) 1110011000

2) зацикливание

3) 1001011000

b) 1) зацикливание

2) 010011

3) 01010110

c) 1) зацикливание (…111)

2) зацикливание (…1111001)

3) зацикливание (1010111…)

Лекция №2.