Slide 1

Slide 1 text

8 октября 2021 [email protected] Олисеенко Валерий Дмитриевич Ассистент кафедры информатики Сложность алгоритмов

Slide 2

Slide 2 text

2/44 2/44 Алгоритм Под алгоритмом понимается формально описанная вычислительная процедура, получающая исходные данные, называемые входными данными алгоритма, и выдающая результат вычислений на выход* *Федоряева Т. И. Комбинаторные алгоритмы: Учебное пособие / Новосиб. гос. ун-т. Новосибирск, 2011. 118 с.

Slide 3

Slide 3 text

3/44 3/44 Вопросы • Как сравнить два алгоритма? • Что такое вычислительная эффективность алгоритма? • Как оценить вычислительную эффективность алгоритма? • Какие существуют оценки эффективности алгоритма?

Slide 4

Slide 4 text

4/44 4/44 Трудоёмкость алгоритма Определим сложность, или трудоёмкость алгоритма решения задачи как функцию T от размерности данных n, ставящую в соответствие каждому n наибольшее время T(n) работы алгоритма на входных данных размерности n. Анализ эффективности каждого из алгоритмов заключается в выяснении вопроса: как быстро растёт функция T(n) с ростом n?

Slide 5

Slide 5 text

5/44 5/44 Асимптотический порядок роста Для некоторого алгоритма А при любых входных данных размера n этот алгоритм будет выполнен не более чем за 21n2+2,1n+9 шагов.

Slide 6

Slide 6 text

6/44 6/44 Асимптотические границы O — асимптотически верхняя граница Ω — асимптотически нижняя граница Θ — асимптотически точная граница

Slide 7

Slide 7 text

7/44 7/44 Асимптотически верхняя граница Пусть T(n)=pn2+qn+r, где p, q, r — положительные константы. Докажем, что асимптотически верхняя граница O(n2). Для всех n>0 истинно qn≤qn2, r≤rn2. Отсюда следует T(n)=pn2+qn+r≤pn2+qn2+rn2=(p+q+r)n2, что соответствует неравенству O(⋅):T(n)≤cn2

Slide 8

Slide 8 text

8/44 8/44 Асимптотически точная граница Если функция T(n) одновременно имеет O(f(n)) и Ω(f(n)), говорят, что T(n) имеет Θ(f(n)), a f(n) называется асимптотически точной границей для T(n). Иногда асимптотически точную границу можно вычислить как предел отношения двух функций при стремлении n к бесконечности.

Slide 9

Slide 9 text

9/44 9/44 Основные типы функций O(1) — сложность типа константа O(log(n)) — логарифмическая сложность O(n) — линейная сложность O(nlog(n)) — сложность «n-log-n» O(n2) — квадратичная сложность O(n3) — кубическая сложность O(2n) — экспоненциальная сложность

Slide 10

Slide 10 text

10/44 10/44 Транзитивность и суммы функций • Транзитивность Если f=O(g)и g=O(h), то f=O(h) Если f=Ω(g)и g=Ω(h), то f=Ω(h) Если f=Θ(g)и g=Θ(h), то f=Θ(h) • Суммы функций Пусть f и g такие две функции, что для некоторой функции h выполняется такое условие f=O(h) и g=O(h).В этом случае f+g=O(h).

Slide 11

Slide 11 text

11/44 11/44 Упражнение Расположите функции по возрастанию скорости. Другими словами, если функция g(n) в вашем списке следует непосредственно после f(n), из этого следует, что f(n)=O(g(n)): f1 (n)=10n f2 (n)=n1/3 f3 (n)=nn f4 (n)=log2 n f5 (n)=2sqrt(ln(n))

Slide 12

Slide 12 text

8 октября 2021 [email protected] Олисеенко Валерий Дмитриевич Ассистент кафедры информатики Сложность алгоритмов