Алгоритмы и анализ сложности.ppt
- Количество слайдов: 44
Алгоритмы и анализ сложности Содержание курса Введение в теорию алгоритмов Основы теории вычислимости Основы анализа алгоритмов Стратегии алгоритмов Основные алгоритмы обработки информации • Распределенные алгоритмы • • •
Список литературы по курсу 1. Кормен Т. , Лейзерсон Л. , Ривест Р. , Штайн К. Алгоритмы: построение и анализ. М. ; СПб. ; Киев : Вильямс, 2005 2. Кнут Д. Искусство программирования, том 1. Основные алгоритмы = The Art of Computer Programming, vol. 1. Fundamental Algorithms. — 3 -е изд. — М. : «Вильямс» , 2006. — с. 720. 3. Кнут Д. Искусство программирования, том 3. Сортировка и поиск = The Art of Computer Programming, vol. 3. Sorting and Searching. — 2 -е изд. — М. : «Вильямс» , 2007. — с. 824. 4. Ахо Альфред В. , Хопкрофт Джон Э. , Ульман Джеффри Д. Структуры данных и алгоритмы. Издательство: Вильямс, 2010. – с. 400. 5. Скиена Стивен Алгоритмы. Руководство по разработке. Второе издание. БХВПетербург, 2011. - с. 720. 6. Тель Ж. Введение в распределенные алгоритмы =Introduction to Distributed Algorithms / Ж. Тель; пер. с англ. В. А. Захарова. - М. : Изд-во МЦНМО, 2009. 7. Гергель В. П. Теория и практика параллельных вычислений : учеб. пособие / В. П. Гергель. - М. : Интернет-Ун-т Информ. Технологий: БИНОМ. Лаб. знаний, 2007. 8. Макконелл, Дж. Основы современных алгоритмов. Пер. с англ. под ред. С. К. Ландо. - 2 -е изд. , доп. - М. : Техносфера, 2006. 9. Котов В. М. Разработка и анализ алгоритмов : теория и практика: пособие для студентов мат. и физ. специальностей / В. М. Котов, Е. П. Соболевская. - Минск : БГУ, 2009. - 251 с.
Введение в теорию алгоритмов.
Несколько примеров интуитивного понятия алгоритма: • Алгоритм — точный набор инструкций, описывающих порядок действий исполнителя достижения результата решения задачи за конечное время. • Алгоритм — это понятные и точные предписания исполнителю совершить конечное число шагов, направленных на решение поставленной задачи. • «Алгоритм — это конечный набор правил, который определяет последовательность операций для решения конкретного множества задач и обладает пятью важными чертами: конечность, определённость, ввод, вывод, эффективность» . (Д. Кнут)
• «Алгоритм — это всякая система вычислений, выполняемых по строго определённым правилам, которая после какого-либо числа шагов заведомо приводит к решению поставленной задачи» . (А. Колмогоров) • «Алгоритм — это точное предписание, определяющее вычислительный процесс, идущий от варьируемых исходных данных к искомому результату» . (А. Марков)
Формальные свойства алгоритмов • • • Дискретность Детерминированность (определённость) Понятность Завершаемость (конечность) Массовость (универсальность)
Схема определения понятия «алгоритм» : • • • Понятие данных Память Элементарный шаг Детерминированность Результативность
Основные типы алгоритмических моделей • Алгоритм как некое детерминированное устройство - абстрактные машины. Машина Тьюринга и машина Поста. • Алгоритм как процедура вычисления некой числовой функции. • Алгоритм как последовательность преобразований цепочек в каком-либо алфавите. (Комбинаторные операции над словами)
Машина Поста.
• Тезис Поста - “Всякий алгоритм представим в форме машины Поста”. • Алгоритм (по Посту) — программа для машины Поста, приводящая к решению поставленной задачи. • Если задача имеет алгоритмическое решение, то она представима в форме команд для машины Поста.
Всего для машины Поста существует шесть типов команд:
• Пример: покажем, как можно воспользоваться командой условного перехода для организации циклического процесса. Пусть на ленте имеется запись из нескольких меток подряд, и головка находится над самой крайней меткой справа. Требуется перевести головку влево до первой пустой позиции.
Нужно увеличить число 3 на единицу (изменить значение в памяти с 3 на 4). Допустим, точно известно, что каретка стоит где-то слева от меток и обозревает пустую ячейку. Тогда программа увеличения числа на единицу может выглядеть так: • • • 1 -> 2 2 ? 1; 3 3 <- 4 4 V 5 5 !
Выяснить, применимы ли программы к заданным состояниям машины Поста, указать результат работы машины Поста для каждого состояния. Если не сказано ничего о местонахождении каретки в начальный момент времени, то считать, что каретка обозревает ячейку с самой левой меткой.
Машина Тьюринга
• Джоном Хопкрофтом: «Тьюрингу пришлось дать четкое определение самого понятия метода. Отталкиваясь от интуитивного представления о методе как о некоем алгоритме, т. е. процедуре, которая может быть выполнена механически, без творческого вмешательства, он показал, как эту идею можно воплотить в виде подробной модели вычислительного процесса. Полученная модель вычислений, в которой каждый алгоритм разбивался на последовательность простых, элементарных шагов, и была логической конструкцией, названной впоследствии машиной Тьюринга» .
“Можно ли для этой задачи построить машину Тьюринга? ”
В зависимости от считываемого символа и собственного состояния, управляющий модуль может производить следующие операции: • записывать символ алфавита в ячейку (в том числе и пустой), заменяя находившийся в ней (в том числе и пустой); • передвигать головку на одну ячейку влево, вправо или оставаться на месте; • менять свое внутреннее состояние;
Формально машина Тьюринга может быть описана следующим образом:
Способы задания МТ
Конфигурации МТ
Приведение конфигураций к стандартному виду
Определение вычислимости по Тьюрингу
Определение вычислимости для функций нескольких переменных
Примеры
Операции над машинами Тьюринга
Построение универсальной МТ.
Рекурсивные функции
Эта модель рассматривает алгоритм как способ формирования одних вычислимых функций из других, т. е. одни функции конструктивно определяются из других.
Оператор суперпозиции
Примеры
Оператор примитивной рекурсии
Оператор минимизации


