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

Сравнение скорости роста

Итак, мы предполагаем, что программы можно оценить с помощью функций времени выполнения, пренебрегая при этом константами пропорциональности. С этой точки зрения программа с временем выполнения O(n2), например, лучше программы с временем выполнения O(n3). Константы пропорциональности зависят не только от используемых компилятора и компьютера, но и от самой программы. Пусть при определенных условиях одна программа выполняется за 100n2 единиц времени, а вторая – за 5n3. Может ли вторая программа быть предпочтительней, чем первая?

Ответ на этот вопрос зависит от размера входных данных программ. При n<20 программа с временем выполнения 5n3 завершится быстрее. Однако при возрастании n программа с временем выполнения 5n3 становится все менее предпочтительной.

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

Пример.

Предположим, что имеются 4 программы, временная сложность которых и что можно использовать 1000 секунд (примерно 17 минут) машинного времени для решения задачи. Какой максимальный размер задачи, решаемой за это время? За 1000 секунд каждая из 4-х программ может решить задачи примерно одинакового размера (см. таблицу).

Предположим далее, что получен новый компьютер, работающий в 10 раз быстрее. Теперь за ту же цену можно использовать 104 секунд машинного времени. Максимальный размер задачи, которую может решить каждая из программ, приведен в таблице. Видно, что увеличение скорости компьютера на 1000% приводит к увеличению только на 30% размера задачи, решаемой с помощью программы с временем выполнения O(2n). Вообще говоря, вне зависимости от быстродействия компьютера, такая программа может решать только очень небольшие задачи.

Также ясно видно преимущество программ с временем выполнения O(n): 10-кратное увеличение размера решаемой задачи при 10-кратном увеличении производительности компьютера.

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

Время выполнения T(n)

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

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

Увеличение максимального размера задачи

100n

10

100

10

5n2

14

45

3.2

n3/2

12

27

2.3

2n

10

13

1.3

Немного о недостатках

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

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

2. Если программа будет работать только с «малыми» входными данными, то степень роста времени выполнения будет иметь меньшее значение, чем константа, присутствующая в формуле времени выполнения.

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

4. Известно несколько примеров, когда эффективные алгоритмы требуют таких больших объемов машинной памяти, что этот фактор сводит на нет их преимущество.

5. В численных алгоритмах точность и устойчивость не менее важны, чем их временная эффективность.

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