Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АиПА / Лекции / 3_Матем анализ алгоритмов.doc
Скачиваний:
23
Добавлен:
07.02.2016
Размер:
105.98 Кб
Скачать

6

2012.02.01

В.П. Пинчук

Анализ и построение алгоритмов. Краткий конспект лекций -

Запорожье: ЗНТУ, 2012.

3. Математический анализ Алгоритмов

1. Функция сложности алгоритма

2. Асимптотические классы и отношения

3. Базовые теоремы

4. Сложность задач

1. Функция сложности алгоритма

Рассмотрим некоторую задачу Р и алгоритм АР , который решает эту задачу. Для оценивания эффективности алгоритма Ар используют т.н. функции сложности: функцию временной сложности Ft(n) и функцию пространственной сложности Fs(n). Значением функции Ft(n) является время работы алгоритма, а функции Fs(n) - объем используемой памяти. Аргументом функции сложности в обоих случаях является размер входа алгоритма.

Для анализа алгоритмов важными являются следующие свойства функция сложности.

1 Функция F(n) является отображением вида F: AB, где A,B = [0, +] .

2. Функция F(n) является неубывающей при достаточно больших n: т.е. существует такое n0>0, что для любых n1, n2 > n0 и n1 > n2 имеет место F(n1)  F(n2).

Далее под функцией сложности понимаем функцию временной сложности.

При выполнении анализа алгоритма значение функции сложности может быть представлено в относительных единицах.

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

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

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

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

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