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

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

Embed Size (px)

Citation preview

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

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

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

Лекция: Анализ алгоритмов

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

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

Анализ алгоритмов - теоретическое исследование произво-дительности компьютерных программ и потребляемых имиресурсов.

1

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

Что важнее, чем производительность?

2

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

• Правильность

• Удобство и простота использования

• Простота поддержки (простая архитектура)

• Безопасность

• Расширяемость

3

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

Зачем исследовать алгоритмы и производительность?

4

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

Производительность - это капитал, который тратится нафункции программы.

5

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

Задача: Cортировка

Дано: последовательность чисел < a1, a2, ..., an >

Найти: перестановку < a′1, a′2, ..., a′n >, что a′1 ≤ a′2 ≤, ...,≤ a′n

6

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

Insertion-Sort(A, n)

1 for j ← 2 to n

2 do key ← A[j]

3 � Insert A[j] into the sorted sequence A[1 . . j − 1].4 i← j − 1

5 while i > 0 and A[i] > key

6 do A[i + 1]← A[i]

7 i← i− 1

8 A[i + 1]← key

7

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

8

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

Пример работы сортировки методом вставок

9 (1) 5 7 3 21 9 (5) 7 3 21 5 9 (7) 3 21 5 7 9 (3) 21 3 5 7 9 (2)1 2 3 5 7 9

9

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

Время работы

• зависит от входных данных (например, отсортированныймассив)

• зависит от размера входных данных

• необходимо знать верхнюю границу (гарантия)

10

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

Виды анализа

• Найхудший случай: T (n) - максимальное время для лю-бых входных данных размера n.

• Средний случай: T (n) - ожидаемое время для любых вход-ных данных размера n. (Необходимо допущение???)

• Наилучший случай - надувательство.

11

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

Время работы InsertionSort в наихудшем случае?

Зависит от компьютеров

• относительная скорость (одна и та же машина)

• абсолютная скорость (раные машины)

12

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

Решение: Ассимтотический анализ

• Игнорировать влияние копьютера на время работы алго-ритма

• Исследовать рост T (n) при n→∞

13

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

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

• Θ-нотация. Отбросить менее значимые части формулыи коэфициенты.4n3 + 12n2 − 10n + 1234 = Θ(n3)

14

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

Сравнение алгоритмов Θ(n3) и Θ(n2)

15

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

Анализ: сортировки вставками

Наихудший случай: входные данные отсортированны в об-ратном порядке.

T (n) =n∑2

Θ(n) = Θ(n2) (арифметическая прогрессия)

Быстра ли данная сортировка?

• Да, для малых n

• Нет, для больших n

16

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

Сортировка слиянием A[1..n]

1. Если n = 1, то конец.

2. Рекурсивно сортируем A[1.. dn/2e] и A[dn/2e+ 1..n].

3. Слияние отсортированных массивов.

17

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

Пример слияния отсортированных массивов?

T (n) = Θ(n), где n - общее число элементов

18

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

T (n) - Сортировка слиянием A[1..n]

1. Θ(1) - Если n = 1, то конец.

2. 2T (n/2) - Рекурсивно сортируем A[1.. dn/2e] и A[dn/2e +

1..n].

3. Θ(n) - Слияние отсортированных массивов.

19

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

Рекурсия

T (n) =

{Θ(1) n=1;2T (n/2) + Θ(n) n>1.

Дерево рекурсии: T (n) = 2T (n/2) + cn, c− const, c > 0

20

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

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

Дерево рекурсии: T (n) = 2T (n/2) + cn, c− const, c > 0

21

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

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

22

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

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

23

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

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

T (n) = cn·log2(n)+Θ(n) = Θ(n)·log2(n)+Θ(n) = Θ(n·log2(n)+

n) = Θ(n · log2(n))

24

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

Сравнение алгоритмов сортировки

• Сортировка вставками - Θ(n2)

• Сортировка слиянием - Θ(n ∗ log2(n))

25

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

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

• Ахо А., Хопкрофт Д., Ульман Д. Структуры данных иалгоритмы. - М. : Издательский дом “Вильямс”, 2000.сс.27-36.

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

26