24
Хакасский государственный университет им. Н.Ф. Катанова Структуры и алгоритмы обработки данных Лекция: Ассимтотическая нотация и рекурентные соотношения Николай Гребенщиков, www.grebenshikov.ru

Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Embed Size (px)

Citation preview

Page 1: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Хакасский государственный университет им. Н.Ф. Катанова

Структуры и алгоритмы обработки данных

Лекция: Ассимтотическая нотация и

рекурентные соотношения

Николай Гребенщиков, www.grebenshikov.ru

Page 2: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

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

Page 3: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Использование в формулах

f(n) = n3 +O(n2)⇒ (∃h(n) ∈ O(n2), f(n) = n3 + h(n))

2

Page 4: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Ω - нотация: ассимтотическая нижняя граница

Ω(g(n)) = f(n) : ∃c > 0, n0 > 0⇒ 0 ≤ c · g(n) ≤ f(n), n ≥ n0

Пример:√n = Ω(lg(n))

3

Page 5: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Θ - нотация: ассимтотическое равенство

Θ(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

Page 6: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Решение рекурсий: метод подстановки

T (n) = 4T (n/2) + n

1. Догадаться (предположить) о решении

2. Проверить решение с помощью индукции

3. Найти и подставить константы

5

Page 7: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Решение рекурсий: метод подстановки

T (n) = 4T (n/2) + n

Догадка: T (n) = O(n3)

Базис: T (1) = Θ(1) < c < c · n3

Посылка индукции: T (k) ≤ c · k3, k < n

6

Page 8: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Ход индукции:

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

Page 9: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Догадка: T (n) = O(n2)

Базис: T (1) = Θ(1) < c < c · n2

Посылка индукции: T (k) ≤ c · k2, k < n

8

Page 10: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Ход индукции:

T (n) = 4T(n

2

)+ n

≤ 4c(n

2

)2+ n

= cn2 + n

= cn2 − (−n)

Коллизия: нужно −n > 0

9

Page 11: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Посылка индукции: 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

Page 12: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Константы:

(c2 ≥ 1)

(c1 ≥ c2)

11

Page 13: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Дерево рекурсии

T (n) = T (n/4) + T (n/2) + n2

12

Page 14: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

13

Page 15: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

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

Page 16: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Основной метод

применяется для T (n) = aT (n/b) + f(n)

a ≥ 1, b > 1, f(n)− (f(n) > 0, n > n0)

15

Page 17: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Основной метод

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

Page 18: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Пример

T (n) = 4T (n/2) + n

nlogba = nlog24 = n2 - 1-й случай

Ответ: T (n) = Θ(n2)

17

Page 19: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Пример

T (n) = 4T (n/2) + n2 - 2-й случай

Ответ: T (n) = Θ(n2log(n))

18

Page 20: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Пример

T (n) = 4T (n/2) + n3 - 3-й случай

Ответ: T (n) = Θ(n3)

19

Page 21: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Пример

T (n) = 4T (n/2) + n3/log(n)

Ответ: Основной метод не подходит - использовать другойметод.

20

Page 22: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Основной метод: идея доказательства

Итого: Θ(nlogba) +logbn−1∑j=0

ajf(n/bj)

21

Page 23: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Основной метод: идея доказательства

1. Доминирует f(n). Сумма уровня ↓.

2. Доминирует Θ(nlogba). Сумма уровня ↑.

3. Нет доминанты. Суммы уровней примерно равны f(n).

22

Page 24: Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки данных"

Список литературы

• Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит-мы: построение и анализ, 2-е издание. - М. : Издатель-ский дом “Вильямс”, 2007. сс.87-139.

23