Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
izmenen_Voprosy_k_zachetu3_1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.49 Mб
Скачать

5.Меры временной сложности алгоритмов. Оценки в среднем и в худшем случаях. Амортизированное время

Наихудшее и среднее время работы.

Характер (и диапазон) изменения времени работы алгоритма обычно зависит от «объема» входных данных. Причем смысл понятия «объем» может зависеть от вида задачи, например, для задачи «Найти n-е простое число» видимо значение n является реалистичным смыслом для понятия «объем», а для задачи «Вычислить сумму n чисел» важны скорее не значения слагаемых, а их количество n. Оценивая время работы алгоритма некоторой функцией T(n) от «объема» входа, мы получаем возможность сравнивать алгоритмы, отвлекаясь от разнообразия входов «объема» n, сравнивать их по скорости роста их функции T(n). При этом возникают вопросы, как и для каких конкретно входных данных производить сравнение. Выбор 10 А это напрямую связано с анализом алгоритма решения задачи

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

§ Время в наихудшем случае. Определим T(n) как время работы на самом плохом входе, на котором алгоритм затрачивает максимальное время среди всех входов «объема» n. Такое определение T(n) акцентирует внимание на гарантиях – на любой вход «объема» n алгоритм затратит не более чем T(n) времени.

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

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

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

Другой вариант трактовать функцию T(n) – как время работы в среднем по всем входам «объема» n. При таком определении T(n) оценка дает меньше гарантий - может поступить вход, на котором программа будет работать дольше чем T(n). Но зато такая оценка будет более реалистичной, если конечно базовое распределение вероятностей входов действительно реалистично соответствует практике

применения программы.

Специфическим вариантом времени в среднем является амортизированное время. При амортизационном анализе (amortized analysis) время, требуемое для выполнения последовательности операций над структурой данных, усредняется по всем выполняемым операциям. Этот анализ можно использовать, например, чтобы показать, что даже если одна из операций последовательности является

дорогостоящей, то при усреднении по всей последовательности средняя стоимость операций будет небольшой. При амортизационном анализе гарантируется средняя производительность операций в наихудшем случае, но с усреднением по последовательностям (допустимых) операций.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]