Слайд 1Лекция 2
НЕСТРОГОЕ ОПРЕДЕЛЕНИЕ АЛГОРИТМА. СВОЙСТВА АЛГОРИТМОВ
Слайд 2Алгоритм
одно из фундаментальных понятий информатики
Предмет теории алгоритмов - общие подходы
к решению проблем обработки дискретной информации
Слайд 3Алгоритм Евклида
НОД(n, m)
1. r=m mod n (остаток от
деления)
2. Замена m:=n, n:= r
3. Если n<>0, то переход на п.1
(иначе) остановка: ответ : m
Слайд 4нестрогое определение
алгоритм – точно определенная последовательность действий, обеспечивающая решение задач
определенного класса для указанного класса исходных данных.
Слайд 5Cуществует несколько подходов к определению понятия алгоритма
Слайд 6
Первый подход (Колмогоров)
Алгоритм - это предписание, обладающее следующими свойствами:
Дискретность алгоритма
Детерминированность.
Элементарность шагов
Направленность.
Массовость.
Слайд 7Американский ученый Д. Кнут
1. Конечность. Алгоритм должен заканчиваться через конечное
число шагов.
2. Определенность. Каждый шаг алгоритма должен быть точно определен.
3.
Ввод. Алгоритм имеет некоторое число входных данных.
4. Выход. Алгоритм имеет одну или несколько выходных величин.
Эффективность. Все шаги алгоритма должны быть достаточно просты, чтобы их можно было выполнить за конечный отрезок времени
Слайд 8По определению А.П. Ершова
алгоритм - это понятное и точное предписание
исполнителю совершить последовательность действий, направленных на достижение поставленной цели или
на решение поставленной задачи.
Слайд 9Свойства алгоритма по Ершову:
Дискретность.
Точность.
Понятность.
Результативность.
Массовость.
Слайд 10Второй подход (А.Черч, Д.Гильберт, П.С.Новиков)
Эти ученые определили алгоритм
через класс вычислимых (общерекурсивных) функций. Они все проблемы разделили на
алгоритмически разрешимые и неразрешимые.
Слайд 11Третий подход представляют А. Тьюринг и Э.Л. Пост
Ими были
описаны машины, с помощью которых можно было реализовать любой алгоритм.
Слайд 12Определение
Алгоритм - понятное и точное предписание исполнителю совершить последовательность действий,
направленных на достижение поставленной цели
Слайд 13Исполнитель алгоритма
– субъект или устройство, способные правильно воспринимать описание алгоритма
и выполнять содержащиеся в нем действия.
Совокупность допустимых команд образует систему
команд исполнителя (СКИ )
Слайд 14Способы представления алгоритма
Графический
Словесный
На алгоритмическом языке (или языке программирования).
Слайд 15Графический способ
Блок-схема - это ориентированный граф, указывающий порядок исполнения команд
алгоритма; вершины такого графа могут быть одного из трех типов
Слайд 16Основные алгоритмические структуры
Слайд 17Дополнительные конструкции блок-схемы
Слайд 18Структурный подход
Управляющие структуры
Суперпозиция
Метод нисходящего проектирования
(метод детализации)
Слайд 19Структурный подход
Структура - следование
Слайд 24Структурная теорема
Любую схему алгоритма можно представить в виде композиции вложенных
блоков begin и end, условных операторов if, then, else, циклов
с предусловием (while) и может быть дополнительных логических переменных
Слайд 30Критерии эффективности алгоритма
объем памяти компьютера для размещения данных и программы
время
центрального процессора по обработке этих данных
Слайд 31Временная сложность
«эффективным» понимается алгоритм, обеспечивающий наиболее быстрое получение результата,
Слайд 32Методология
Время работы алгоритма удобно выражать в виде функции от одной
переменной, характеризующей «размер» конкретной задачи, т.е. объем входных данных, необходимых
для ее решения
Слайд 33Опр.
Временная сложность алгоритма - это функция, которая каждой входной длине
слова ставит в соответствие максимальное время, затрачиваемое алгоритмом на ее
решение.
Слайд 34Опр.
Полиномиальным называется алгоритм, временная сложность которого выражается некоторой полиномиальной функцией
размера задачи.
Алгоритмы, временная сложность которых не поддается подобной оценке, называются
экспоненциальными.
Слайд 38Подсчет кол-ва операций
М1=1,
М2=n,
M3=n-1
M4=А (Амин=0, Амакс=n-1)
M5=n-1
Слайд 39Примеры
Решение системы линейных уравнений
Сортировка массивов
Решение задачи Коши
Слайд 40Рекурсивные алгоритмы
Примеры рекурсий
F(n) = F(n-1) или наоборот F(n)=F(n+1)
n! = n*(n-1)!
|Нод(a,a-b),
если a>b
Нод(a,b)= |Нод(a-b, b), если b>a
| a, если a=b
Слайд 42Задачи
Тур шахматного коня
Решение физических задач
Слайд 44Контрольные вопросы
1. Чем определяются свойства алгоритмов «дискретность», «определенность», «понятность», «результативность», «массовость»?
2. Кто (что) может быть исполнителем алгоритма?
3. Какова причина в
необходимости формализации понятия «алгоритм»?
4. Каковы возможные подходы к определению понятия алгоритм?