Лекция №4. Асимтотическая нотация. Предмет...
TRANSCRIPT
Хакасский государственный университет им. Н.Ф. Катанова
Структуры и алгоритмы обработки данных
Лекция: Ассимтотическая нотация и
рекурентные соотношения
Николай Гребенщиков, www.grebenshikov.ru
O - нотация: ассимтотическая верхняя граница
f(n) = O(g(n))⇒(∃c > 0, n0 > 0⇒ 0 ≤ f(n) ≤ c · g(n), n ≥ n0)
O(g(n)) = f(n) : ∃c > 0, n0 > 0⇒ 0 ≤ f(n) ≤ c · g(n), n ≥ n0
Пример: 2n2 = O(n3)⇔ 2n2 ∈ O(n3)
1
Использование в формулах
f(n) = n3 +O(n2)⇒ (∃h(n) ∈ O(n2), f(n) = n3 + h(n))
2
Ω - нотация: ассимтотическая нижняя граница
Ω(g(n)) = f(n) : ∃c > 0, n0 > 0⇒ 0 ≤ c · g(n) ≤ f(n), n ≥ n0
Пример:√n = Ω(lg(n))
3
Θ - нотация: ассимтотическое равенство
Θ(g(n)) =
f(n) : ∃c1 > 0, c2 > 0, n0 > 0⇒c1 · g(n) ≤ f(n) ≤ c2 · g(n), n ≥ n0
Θ(g(n)) = O(g(n)) ∩Ω(g(n))
4
Решение рекурсий: метод подстановки
T (n) = 4T (n/2) + n
1. Догадаться (предположить) о решении
2. Проверить решение с помощью индукции
3. Найти и подставить константы
5
Решение рекурсий: метод подстановки
T (n) = 4T (n/2) + n
Догадка: T (n) = O(n3)
Базис: T (1) = Θ(1) < c < c · n3
Посылка индукции: T (k) ≤ c · k3, k < n
6
Ход индукции:
T (n) = 4T(n
2
)+ n
≤ 4c(n
2
)3+ n
=1
2cn3 + n
= cn3 − (1
2cn3 − n)
≤ cn3,1
2cn3− n ≥ 0
Найдем константы: (c ≥ 1, n ≥ 1)
7
Догадка: T (n) = O(n2)
Базис: T (1) = Θ(1) < c < c · n2
Посылка индукции: T (k) ≤ c · k2, k < n
8
Ход индукции:
T (n) = 4T(n
2
)+ n
≤ 4c(n
2
)2+ n
= cn2 + n
= cn2 − (−n)
Коллизия: нужно −n > 0
9
Посылка индукции: T (k) ≤ c1 · k2 − 2 · k, k < n
Ход индукции:
T (n) = 4T(n
2
)+ n
= 4c1
(n
2
)2− c2
(n
2
)+ n
= c1n2 + (1− 2c2)n
= c1n2 − 2c2n− (−1 + c2)n
≤ c1n2 − c2n, c2 ≥ 1
Базис: T (1) = Θ(1) < c1 − c2
10
Константы:
(c2 ≥ 1)
(c1 ≥ c2)
11
Дерево рекурсии
T (n) = T (n/4) + T (n/2) + n2
12
13
Cумма: по уровням
(1 + 5/16 + 25/256 + . . .+ 5k/16k + . . .)n2 =?
Решение: сравнение
(1 + 1/2 + 1/4 + 1/8 + 1/16 + . . .) =
= (1 + 1/2k + . . .)
= 1.1111111(1)
= 2
1/2k > 5k/16k ⇒⇒ (1 + 5k/16k + . . .)n2 < 2n2
⇒ (1 + 5k/16k + . . .)n2 = O(n2)
14
Основной метод
применяется для T (n) = aT (n/b) + f(n)
a ≥ 1, b > 1, f(n)− (f(n) > 0, n > n0)
15
Основной метод
1. Если f(n) = O(nlogba−ε), ε > 0⇒ T (n) = Θ(nlogba)
2. Если f(n) = Θ(nlogba)⇒ T (n) = Θ(nlogbalog(n))
3. Если
f(n) = Ω(nlogba−ε), ε > 0, af(n/b) ≤ cf(n), c < 1, n > n0 ⇒⇒ T (n) = Θ(f(n))
16
Пример
T (n) = 4T (n/2) + n
nlogba = nlog24 = n2 - 1-й случай
Ответ: T (n) = Θ(n2)
17
Пример
T (n) = 4T (n/2) + n2 - 2-й случай
Ответ: T (n) = Θ(n2log(n))
18
Пример
T (n) = 4T (n/2) + n3 - 3-й случай
Ответ: T (n) = Θ(n3)
19
Пример
T (n) = 4T (n/2) + n3/log(n)
Ответ: Основной метод не подходит - использовать другойметод.
20
Основной метод: идея доказательства
Итого: Θ(nlogba) +logbn−1∑j=0
ajf(n/bj)
21
Основной метод: идея доказательства
1. Доминирует f(n). Сумма уровня ↓.
2. Доминирует Θ(nlogba). Сумма уровня ↑.
3. Нет доминанты. Суммы уровней примерно равны f(n).
22
Список литературы
• Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит-мы: построение и анализ, 2-е издание. - М. : Издатель-ский дом “Вильямс”, 2007. сс.87-139.
23