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