Лекция №3. Анализ алгоритмов. Предмет "Структуры и...
TRANSCRIPT
Хакасский государственный университет им. Н.Ф. Катанова
Структуры и алгоритмы обработки данных
Лекция: Анализ алгоритмов
Николай Гребенщиков, www.grebenshikov.ru
Анализ алгоритмов - теоретическое исследование произво-дительности компьютерных программ и потребляемых имиресурсов.
1
Что важнее, чем производительность?
2
• Правильность
• Удобство и простота использования
• Простота поддержки (простая архитектура)
• Безопасность
• Расширяемость
3
Зачем исследовать алгоритмы и производительность?
4
Производительность - это капитал, который тратится нафункции программы.
5
Задача: Cортировка
Дано: последовательность чисел < a1, a2, ..., an >
Найти: перестановку < a′1, a′2, ..., a′n >, что a′1 ≤ a′2 ≤, ...,≤ a′n
6
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
8
Пример работы сортировки методом вставок
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
Время работы
• зависит от входных данных (например, отсортированныймассив)
• зависит от размера входных данных
• необходимо знать верхнюю границу (гарантия)
10
Виды анализа
• Найхудший случай: T (n) - максимальное время для лю-бых входных данных размера n.
• Средний случай: T (n) - ожидаемое время для любых вход-ных данных размера n. (Необходимо допущение???)
• Наилучший случай - надувательство.
11
Время работы InsertionSort в наихудшем случае?
Зависит от компьютеров
• относительная скорость (одна и та же машина)
• абсолютная скорость (раные машины)
12
Решение: Ассимтотический анализ
• Игнорировать влияние копьютера на время работы алго-ритма
• Исследовать рост T (n) при n→∞
13
Ассимтотическия нотация
• Θ-нотация. Отбросить менее значимые части формулыи коэфициенты.4n3 + 12n2 − 10n + 1234 = Θ(n3)
14
Сравнение алгоритмов Θ(n3) и Θ(n2)
15
Анализ: сортировки вставками
Наихудший случай: входные данные отсортированны в об-ратном порядке.
T (n) =n∑2
Θ(n) = Θ(n2) (арифметическая прогрессия)
Быстра ли данная сортировка?
• Да, для малых n
• Нет, для больших n
16
Сортировка слиянием A[1..n]
1. Если n = 1, то конец.
2. Рекурсивно сортируем A[1.. dn/2e] и A[dn/2e+ 1..n].
3. Слияние отсортированных массивов.
17
Пример слияния отсортированных массивов?
T (n) = Θ(n), где n - общее число элементов
18
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
Рекурсия
T (n) =
{Θ(1) n=1;2T (n/2) + Θ(n) n>1.
Дерево рекурсии: T (n) = 2T (n/2) + cn, c− const, c > 0
20
Дерево рекурсии
Дерево рекурсии: T (n) = 2T (n/2) + cn, c− const, c > 0
21
Дерево рекурсии
22
Дерево рекурсии
23
Дерево рекурсии
T (n) = cn·log2(n)+Θ(n) = Θ(n)·log2(n)+Θ(n) = Θ(n·log2(n)+
n) = Θ(n · log2(n))
24
Сравнение алгоритмов сортировки
• Сортировка вставками - Θ(n2)
• Сортировка слиянием - Θ(n ∗ log2(n))
25
Список литературы
• Ахо А., Хопкрофт Д., Ульман Д. Структуры данных иалгоритмы. - М. : Издательский дом “Вильямс”, 2000.сс.27-36.
• Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит-мы: построение и анализ, 2-е издание. - М. : Издатель-ский дом “Вильямс”, 2007. сс.11-15.
26