Добавил:
ПОИТ 2016-2020 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пустовалова 2 сем / Лекции / Лекция 11 сложность.ppt
Скачиваний:
67
Добавлен:
29.04.2018
Размер:
894.46 Кб
Скачать

Оценка сложности алгоритмов

Процесс создания компьютерной программы

формализация и разработка технического задания;

разработка алгоритма решения задачи;

написание, тестирование, отладка

и документирование программы; получение решения.

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

Задачи теории алгоритмов

формальное доказательство алгоритмической неразрешимости задач

асимптотический анализ сложности

алгоритмов

классификация алгоритмов в соответствии с классами сложности

разработка критериев сравнительной оценки качества алгоритмов и т. п.

Теория алгоритмов развивается

проблемы формулировки задач P, NP и др.

методы получения асимптотических оценок

получение явных функции трудоёмкости,

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

Анализ трудоёмкости

алгоритмов

асимптотический анализ

Основной оценкой функции сложности

алгоритма f(n) является оценка Ө (читается “тэта большое”) или O

большое) . Здесь n — величина объёма данных или длина входа.

Оценка сложности алгоритма

f(n) = Ө(g(n)), если при g > 0 при n > 0 существуют положительные с1, с2,

n0, такие, что: c1(g(n)) <= f(n) <= c2(g(n)) при n > n0, иначе говоря,

можно найти такие с1 и c2, что при

достаточно больших n f(n) будет заключена между c1(g(n)) и c2(g(n)).

Изf(n) = Ө(g(n)) следует, что g(n) =

Ө(f(n)).

Говорят, что f(n) = O(g(n)) если Ǝ c>0, n0 > 0: 0 <= f(n) <= cg(n) для любого

n > n0

Иначе говоря, запись f(n) = O(g(n)) означает, что f(n) принадлежит

классу функций, который растут не быстрее, чем функция g(n) с точностью до постоянного множителя.

Когда используют обозначение O(), имеют в виду не точное время исполнения, а только его предел сверху, причем с точностью

до постоянного множителя. Когда говорят, например, что алгоритму Ὠ

требуется время порядка O(n2), имеют в виду, что время исполнения задачи растет не быстрее, чем квадрат количества элементов.

Скорость роста функций

n

log n

n*log n

 

n2

0

0

1

1

16

4

64

256

256

8

2048

65536

4096

12

49152

 

16777216

 

 

 

65536

16

1048565

 

4294967296

 

 

 

1048476

20

20969520

 

1099301922576

 

 

16775616

24

402614784

 

81421292179456

 

 

Соседние файлы в папке Лекции