
- •Тема 10. ЭЛЕМЕНТЫ ТЕОРИИ И НЕКОТОРЫЕ ПРОБЛЕМЫ
- •Алгоритм как результат решения задачи
- •Интуитивно алгоритм определяется – как последовательность действий,
- •Математическое определение А.(Колмогоров А.Н.)
- •Зачем нужны такие строгости в определении?
- •Определение алгоритма для компьютерных применений:
- •Требование упорядоченности
- •Требование выполнимости этапов
- •Недвусмысленность
- •Требование конечности процесса
- •Способы описания алгоритмов
- •Примитивы
- •Примитивы
- •способ описания синтаксиса языков программирования. Нормальная нотация Бекуса
- •Расширенные Бэкуса – Наура Формы (РБНФ)
- •Каждому определению РБНФ соответствует синтаксическая диаграмма
- •Здесь мы познакомились лишь с основными понятиями описания синтаксиса ЯП.
- •Представление алгоритма во время его разработки
- •В 1950-60гг. самым совершенным средством была блок схема
- •Псевдокоды
- •Создание алгоритмов или
- •Что значит создать алгоритм?
- •Расплывчато, фазы решения задач, предложенные в книге математика Д. Пойа «Как решать задачу»
- •Неупорядоченность процесса решения задач является основной причиной трудностей, связанных с разработкой систематического подхода
- •Математик А. Пуанкаре так же описал этот феномен. Он считал, что творческий процесс
- •Как же все таки надо действовать при решении задачи?
- •Вычислимые и невычислимые функции теорема Геделя
- •Результат Черча
- •В то время еще не было сколь нибудь значимых компьютеров, а усилия ученых
- •Алгоритмические проблемы
- •Проблема универсального языка программирования
- •Универсальный язык программирования
- •Описание универсального языка программирования
- •Даные
- •Операторы
- •Операторы
- •Как программировать на этом языке
- •Примеры программирования
- •Дальнейшее развитие
- •Проблема
- •Модели универсальных ВМ
- •Машины Тьюринга
- •Описание МТ
- •Команда МТ(qi aj qnamR)
- •Пример программы
- •Работа программы
- •Аналогично, можно запрограммировать любую
- •Новое поколение ВМ
- •Вычислительная мощность ВМ Функции и их вычисление
- •Виды функций
- •Значение МТ для современной теории вычислительных систем
- •Ограниченность ВМ и проблема Искусственного Интеллекта
- •Сложность задач и алгоритмов с точки зрения ВМ оценивается затратами на вычисление а
- •Оценки сложности
- •Сравнение полиномиальных и экспоненциальных
- •Классификация задач по сложности
Тема 10. ЭЛЕМЕНТЫ ТЕОРИИ И НЕКОТОРЫЕ ПРОБЛЕМЫ
АЛГОРИТМОВ
Алгоритм – как результат
решения задачиСпособы описания алгоритмовСоздание алгоритмов
Алгоритмические проблемыСложность алгоритмов и задач
Дж.Гленн Брукшир. Введение в
компьютерные науки. «Вильямс»М,СП,К 2001
07/02/19 |
1 |
Алгоритм как результат решения задачи
Искусство программирования это умение решать задачи с помощью компьютера.
Прежде чем компьютер сможет решить задачу, ему необходимо предоставить алгоритм ее решения, в точности описывающий, что и как надо делать.
Умение решать задачи трактуется как умение составлять алгоритмы решения возникающих задач
Поэтому, изучение алгоритмов является краеугольным камнем компьютерных наук.
В данной лекции мы рассмотрим некоторые фундаментальные понятия теории алгоритмов
07/02/19 |
2 |
Интуитивно алгоритм определяется – как последовательность действий,
описывающих способ решения поставленной задачи.
В интуитивном определении А не конкретизируются ни требования к действиям, ни к их последовательности, ни к результату. Этому определению удовлетворяет и поваренная книга, и правила ГАИ, и вся наша повседневная деятельность.
07/02/19 |
3 |
Математическое определение А.(Колмогоров А.Н.)
Алгоритм – это процесс последовательного построения величин, идущий в дискретном времени таким образом, что в начальный момент задается исходная конечная система величин, а в каждый следующий момент система величин получается по определенному закону (программе) из системы величин, имевшихся в предыдущий момент времени. Дискретность.
Система величин, получаемых в следующий момент однозначно определяется через систему величин в предыдущие моменты. Детерминированность.
Закон получения величин на следующем шаге из величин на предыдущем должен быть простым и локальным. Элементарность шагов.
Начальная система величин может выбираться из некоторого
потенциально бесконечного множества. Массовость. |
4 |
07/02/19 |
Зачем нужны такие строгости в определении?
•Одно дело – доказать, что задача имеет решение. Для этого достаточно построить Алгоритм ее решения.
•Но если это не удается так сразу сделать? До сих пор имеется ряд математических проблем (например, проблемы Гильберта), поставленных еще в позапрошлом веке для которых не найдено решение, и неизвестно существует ли оно.
•Возник вопрос, а имеются ли такие задачи, для которых не существует алгоритмического решения?
•Другое дело – доказать, что не существует алгоритма решения. Вот здесь нужно точно знать что же такое алгоритм.
•В 20-х годах прошлого века задача точного определения алгоритма стала одной из центральных математических проблем. С появлением компьютеров это стало особенно актуально.
•Может ли компьютер заменить человека. Как мыслит человек – алгоритмически, или озарением свыше? Человек - это исполнитель алгоритмов или что-то большее?
• На эти07/02/19вопросы возможно ответит кто-то из вас. |
5 |
Определение алгоритма для компьютерных применений:
Программа является записью алгоритма разработанного для решения некоторой задачи на компьютере.
Процесс – это деятельность связанная с выполнением программы, что тоже самое с выполнением компьютерного алгоритма. Например, в современных компьютерах можно запустить несколько параллельных, взаимодействующих между собой процессов.
Компьютерный Алгоритм – это упорядоченный набор из недвусмысленных и выполнимых
компьютером действий, определяющий некоторый
конечный процесс.
Дискретность КА подразумевается автоматически, т.к. компьютер выполняет команды дискретно.
07/02/19 |
6 |
Требование упорядоченности
указывает, что отдельные этапы алгоритма должны составлять четко определенную структуру в смысле порядка их выполнения.
Однако это не означает, что этапы должны выполняться строго один за одним.
Так, бывают параллельные алгоритмы, в которых этапы разделяются, сливаются.
Компьютерный Алгоритм – это упорядоченный набор из
недвусмысленных и выполнимых компьютером действий, определяющий некоторый конечный процесс
07/02/19 |
7 |
Требование выполнимости этапов
т.е. их осуществимость
(специалисты называют эффективность алгоритма)
Например этап: <<Составить список всех целых чисел>> невыполним т.к. такой список бесконечен.
Компьютерный Алгоритм – это упорядоченный набор из
недвусмысленных и выполнимых компьютером действий, определяющий некоторый конечный процесс
07/02/19 |
8 |
Недвусмысленность
(однозначность)– означает, что во время выполнения алгоритма, при любом состоянии процесса, информации должно быть достаточно для однозначного определения действий каждого этапа.
Например: «выбрать путь в графе» и оценить его длину. Не ясно, как выбрать, что значит выбрать. Действие недетерминировано
Проблема неоднозначности обычно связана с недостаточно детальным описанием (представлением) алгоритма. На этапе укрупненной принципиальной схемы это допустимо. Но на последующих этапах разработки А требует уточнения.
Компьютерный Алгоритм – это упорядоченный набор из недвусмысленных
и выполнимых компьютером действий, определяющий некоторый конечный
процесс
07/02/19 |
9 |
Требование конечности процесса
означает, что выполнение алгоритма обязательно должно приводить к его завершению.
Хотя имеются и бесконечно зацикленные алгоритмы.
Однако, чтобы решить задачу алгоритм должен порождать конечный процесс.
Компьютерный Алгоритм – это упорядоченный набор из недвусмысленных и выполнимых компьютером действий, определяющий некоторый конечный процесс
07/02/19 |
10 |