Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Анализ алгоритмов.doc
Скачиваний:
55
Добавлен:
20.11.2018
Размер:
1.29 Mб
Скачать

86

Костин В.А. Анализ алгоритмов. – Лекции 2000

Санкт-Петербургский государственный

университет

Математико-механический факультет

В. А. Костин

Анализ алгоритмов (Лекции 2000)

Санкт-Петербург

2000

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

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

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

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

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

Заметим, что именно асимптотическая сложность определяет в итоге размерность задачи, которые можно решить этим алгоритмом.

Пример

Алгоритм

Временная сложность, как функция от параметра n (в мсек)

Максимальное значение параметра n задачи, решаемой за

1 сек

1 мин

1 час

A1

n

1000

6104

3,6106

A2

n log2n

140

4893

2,0105

A3

n2

31

244

1897

A4

n3

10

39

153

A5

2n

9

15

21

A6

n!

6

Заметим, что асимптотическая сложность алгоритма характеризует и при изменении характеристик вычислительной установки. Пример, предположим, что достигнуто десятикратное ускорение скорости ЭВМ. Эффект этого ускорения может быть представлен как

Алгоритм

Временная

сложность

Максимальное значение до ускорения

Максимальное значение после ускорения

A1

n

S1

10S1

A2

n log2n

S2

10S2 для больших n

A3

n2

S3

3,16S3

A4

n3

S4

2,15S4

A5

2n

S5

S5+3,3

A6

n!

S6

S6