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

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

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

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

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

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

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

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

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

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

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

алгоритмов

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

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

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

проблемы формулировки задач 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

 

 

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