РОССИЙСКАЯ АКАДЕМИЯ НАРОДНОГО ХОЗЯЙСТВА И 
ГОСУДАРСТВЕННОЙ СЛУЖБЫ ПРИ ПРЕЗИДЕНТЕ 
РОССИЙСКОЙ ФЕДЕРАЦИИ 
Нижегородский институт управления 
Кафедра информатики и информационных технологий 
Введение в алгоритмы и 
структуры данных 
Ивина Наталья Львовна 
доцент кафедры Информатики и ИТ
Тема 2. Оценка сложности 
алгоритма. 
Определение временной и емкостной оценок 
сложности алгоритма. 
Нахождение асимптотических характеристик 
оценок сложности алгоритма. 
2
Введение 
" Поразительно, скольким программистам приходится слишком 
дорогим способом выяснять, что их программа не может 
обработать входные данные раньше, чем через несколько дней 
машинного времени. Лучше было бы предугадать такие случаи с 
помощью карандаша и бумаги. " 
С. Гудман (S. Goodman), С. Хидетниеми (S. Hedetniemi) 
S.E. Goodman. Introduction to the design and analysis of algorithms/ Goodman S.E., 
Hedetniemi S.T. -1977 . 
3
Постановка задачи 
Для большинства проблем существует много различных 
алгоритмов. 
Какой из них выбрать для решения конкретной задачи? 
Пространственная эффективность 
Временная эффективность 
Теория сложности вычислений возникла из потребности сравнивать 
быстродействие алгоритмов (например, алгоритмов поиска и 
сортировки), чётко описывать их поведение (время исполнения и объём 
необходимой памяти) в зависимости от размера входа. 
4
Вычислительная сложность 
Вычислительная сложность - мера использования алгоритмом 
ресурсов времени или пространства. 
Время выполнения алгоритма определяется количеством 
тривиальных шагов, необходимых для решения проблемы и 
зависит от размера входных данных (далее n). 
Пространство - объём памяти или места на носителе данных, 
используемом алгоритмом. 
5
Сравнение формул 
Что быстрее: 50N2 + 31N3 + 24N + 15 или 
3N2 + N + 21 + 4*3N ? 
Ответ зависит от значения N: 
N 50N2 + 31N3 + 24N + 15 3N2 + N + 21 + 4*3N 
1 120 37 
2 511 71 
3 1374 159 
4 2895 397 
5 5260 1073 
6 8655 3051 
7 13266 8923 
8 19279 26465 
9 26880 79005 
10 36255 236527 
6
N 3N2 + N + 21 + 4*3N 4*3N % от суммы 
1 37 12 32,4 
2 71 36 50,7 
3 159 108 67,9 
4 397 324 81,6 
5 1073 972 90,6 
6 3051 2916 95,6 
7 8923 8748 98,0 
8 26465 26244 99,2 
9 79005 78732 99,7 
10 236527 236196 99,9 
4*3N - определяет результат! 
7 
Чем объяснить?
Асимптотическая сложность 
F (n) – функция трудоемкости, определяющая зависимость между 
входными данными и количеством базовых операций (временными 
затратами алгоритма) 
O(g(n)) = { F(n): существует такая пара положительных значений с и n0, 
что |F(n)|≤c|g(n)| для всех n≥n0 } 
f ограничена сверху функцией g 
(с точностью до постоянного 
множителя) асимптотически 
8
Точное время обработки массива из N элементов: 
Действительное время(N)= N2+5*N+100 
Вспомогательная функция: 
Оценка времени(N)=1,1*N2 
Вспомогательная функция 
доминирует над точной, 
она проще и близка к 
точной. 
Порядок алгоритма 
обработки массива будет 
O(N2). 
9 
Пример
Правила определения сложности 
k - константа, f и g – функции 
1. O(k*f)=O(f) 
2. O(f*g)=O(f)*O(g) или O(f/g)=O(f)/O(g) 
3. O(f+g) равна доминанте O(f) и O(g) 
10
Классы оценок сложности 
- множества вычислительных проблем, для решения которых 
известны алгоритмы, схожие по сложности. 
•O(1) – константная сложность 
•O(n) – линейное время 
•O(na) - полиномиальная сложность: 
- O(n2) – квадратичное время 
- O(n3) – кубическое время 
•O(log(n)) – логарифмическое время 
•O(n log(n)) – "n-log-n" время 
•O(2n) – экспоненциальное время 
11
Классы оценок сложности 
Функция 10 100 1000 10000 100000 
log2N 3 6 9 13 16 
N 10 100 1000 10000 100000 
N log2N 30 664 9965 105 106 
N2 102 104 106 108 1010 
N3 103 106 109 1012 1015 
2N 103 1030 10301 103010 1030103 
12
Время выполнения 
алгоритма для небольших n 
13
14 
Время выполнения 
алгоритма для больших n
15 
Временные сложности 
сортировок 
Метод 
сортировки 
В лучшем 
случае 
В среднем 
случае 
В худшем 
случае 
Прямого 
обмена 
O(N) O(N2) O(N2) 
Выбором O(N2) O(N2) O(N2) 
Быстрая 
O(N*logN) O(N*logN) O(N2) 
22сортировка
Оценка сложности программы 
"Тройки Пифагора" 
O(H)=O(1)+O(1)+O(1)=O(1); 
O(I)=O(N)*(O(F)+O(J))= 
O(N)*O(доминанты условия) =О(N); 
O(G)=O(N)*(O(C)+O(I) 
+O(K))=O(N)*(O(1)+O(N) 
+O(1))=O(N2); 
O(E)=O(N)*(O(B)+O(G)+O(L))=O(N)* 
O(N2)= O(N3); 
O(D)=O(A)+O(E)=O(1)+O(N3)= O(N3) 
16
Класс сложности - это множество вычислительных задач, для 
решения которых существуют алгоритмы, схожие по 
вычислительной сложности. 
•Класс P 
•Класс NP 
Для каждого класса существует категория задач, которые являются 
«самыми сложными». Это означает, что любая задача из класса 
сводится к такой задаче, и притом сама задача лежит в классе. 
17 
Классы вычислительной 
сложности
Проблемы, решение которых считается «быстрым», то есть 
полиноминально зависящим от размера входных данных 
(например, O(n), O(n2)) 
ПРИМЕРЫ: 
•Сортировка 
•Поиск во множестве 
•Выяснение связности графов 
18 
Класс сложности P
Проблемы, для решения которых используются лишь алгоритмы, 
экспоненциально зависящие от размера входных данных 
(например, O(2n)) 
ПРИМЕРЫ: 
•Задача коммивояжера 
•Задача выполнимости булевых формул 
•Факторизация 
19 
Класс сложности NP

More Related Content

PPTX
Python: Basic Inheritance
PDF
Лекция 1. Анализ эффективности алгоритмов
PDF
Лекция 1: Введение в алгоритмы
PDF
Лекция 1: Введение в алгоритмы
PPT
лекция 5
PDF
Алгоритмы и структуры данных осень 2013 лекция 1
PPT
лекция 6
Python: Basic Inheritance
Лекция 1. Анализ эффективности алгоритмов
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
лекция 5
Алгоритмы и структуры данных осень 2013 лекция 1
лекция 6

Similar to Оценка сложности алгоритма (20)

PDF
Лекция 1. Амортизационный анализ (amortized analysis)
PPT
лекция 4
PPT
практика 5
PPTX
Алгоритмы и структуры данных весна 2014 лекция 1
DOCX
прак 15.docx
PPT
лекция 7
DOCX
пр 15.docx
PDF
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
PDF
Лекция 1. Амортизационный анализ (Amortized analysis)
PPT
Алгоритмы поиска и сортировки
PDF
Лекция 11. Методы разработки алгоритмов
PDF
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
PDF
Лекция 1: Амортизационный анализ (Amortized analysis)
PDF
Лекция 11: Методы разработки алгоритмов
PPT
практика 3
PDF
2014-2015_Алгор-структ_Раб-прогр_Мансуров
PPTX
Структуры данных в JavaScript | Odessa Frontend Meetup #13
PDF
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
PPTX
Мастер класс по алгоритмам. Часть 2
Лекция 1. Амортизационный анализ (amortized analysis)
лекция 4
практика 5
Алгоритмы и структуры данных весна 2014 лекция 1
прак 15.docx
лекция 7
пр 15.docx
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 1. Амортизационный анализ (Amortized analysis)
Алгоритмы поиска и сортировки
Лекция 11. Методы разработки алгоритмов
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 1: Амортизационный анализ (Amortized analysis)
Лекция 11: Методы разработки алгоритмов
практика 3
2014-2015_Алгор-структ_Раб-прогр_Мансуров
Структуры данных в JavaScript | Odessa Frontend Meetup #13
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Мастер класс по алгоритмам. Часть 2
Ad

More from Нижегородский институт управления (20)

PPT
Основные направления деятельности_ВШГУ2016
PPTX
Первое Всероссийское тестирование по истории Великой Отечественной войны
PPT
70 лет со дня рождения Надеева Александра Тимофеевича
PPTX
Статистика страхового и финансового рынков
PPTX
Статистика банковской и биржевой деятельности
PPTX
Статистика государственных финансов и налогов
PPTX
Статистика денежного обращения, цен и инфляции
PPTX
Статистика уровня жизни населения
PPTX
Статистика труда и занятости населения
PPTX
PPTX
Система национальных счетов и макроэкономических показателей. Платежный баланс
PPTX
Статистические показатели отраслей и секторов экономики
PPTX
Статистика национального богатства: основные и оборотные фонды
PPTX
7. Бюджетный федерализм
PPTX
6. Общественные расходы
PPTX
4.Распределение доходов, эффективность и благосостояние
PPTX
Экономические аспекты общественного выбора
Основные направления деятельности_ВШГУ2016
Первое Всероссийское тестирование по истории Великой Отечественной войны
70 лет со дня рождения Надеева Александра Тимофеевича
Статистика страхового и финансового рынков
Статистика банковской и биржевой деятельности
Статистика государственных финансов и налогов
Статистика денежного обращения, цен и инфляции
Статистика уровня жизни населения
Статистика труда и занятости населения
Система национальных счетов и макроэкономических показателей. Платежный баланс
Статистические показатели отраслей и секторов экономики
Статистика национального богатства: основные и оборотные фонды
7. Бюджетный федерализм
6. Общественные расходы
4.Распределение доходов, эффективность и благосостояние
Экономические аспекты общественного выбора
Ad

Оценка сложности алгоритма

  • 1. РОССИЙСКАЯ АКАДЕМИЯ НАРОДНОГО ХОЗЯЙСТВА И ГОСУДАРСТВЕННОЙ СЛУЖБЫ ПРИ ПРЕЗИДЕНТЕ РОССИЙСКОЙ ФЕДЕРАЦИИ Нижегородский институт управления Кафедра информатики и информационных технологий Введение в алгоритмы и структуры данных Ивина Наталья Львовна доцент кафедры Информатики и ИТ
  • 2. Тема 2. Оценка сложности алгоритма. Определение временной и емкостной оценок сложности алгоритма. Нахождение асимптотических характеристик оценок сложности алгоритма. 2
  • 3. Введение " Поразительно, скольким программистам приходится слишком дорогим способом выяснять, что их программа не может обработать входные данные раньше, чем через несколько дней машинного времени. Лучше было бы предугадать такие случаи с помощью карандаша и бумаги. " С. Гудман (S. Goodman), С. Хидетниеми (S. Hedetniemi) S.E. Goodman. Introduction to the design and analysis of algorithms/ Goodman S.E., Hedetniemi S.T. -1977 . 3
  • 4. Постановка задачи Для большинства проблем существует много различных алгоритмов. Какой из них выбрать для решения конкретной задачи? Пространственная эффективность Временная эффективность Теория сложности вычислений возникла из потребности сравнивать быстродействие алгоритмов (например, алгоритмов поиска и сортировки), чётко описывать их поведение (время исполнения и объём необходимой памяти) в зависимости от размера входа. 4
  • 5. Вычислительная сложность Вычислительная сложность - мера использования алгоритмом ресурсов времени или пространства. Время выполнения алгоритма определяется количеством тривиальных шагов, необходимых для решения проблемы и зависит от размера входных данных (далее n). Пространство - объём памяти или места на носителе данных, используемом алгоритмом. 5
  • 6. Сравнение формул Что быстрее: 50N2 + 31N3 + 24N + 15 или 3N2 + N + 21 + 4*3N ? Ответ зависит от значения N: N 50N2 + 31N3 + 24N + 15 3N2 + N + 21 + 4*3N 1 120 37 2 511 71 3 1374 159 4 2895 397 5 5260 1073 6 8655 3051 7 13266 8923 8 19279 26465 9 26880 79005 10 36255 236527 6
  • 7. N 3N2 + N + 21 + 4*3N 4*3N % от суммы 1 37 12 32,4 2 71 36 50,7 3 159 108 67,9 4 397 324 81,6 5 1073 972 90,6 6 3051 2916 95,6 7 8923 8748 98,0 8 26465 26244 99,2 9 79005 78732 99,7 10 236527 236196 99,9 4*3N - определяет результат! 7 Чем объяснить?
  • 8. Асимптотическая сложность F (n) – функция трудоемкости, определяющая зависимость между входными данными и количеством базовых операций (временными затратами алгоритма) O(g(n)) = { F(n): существует такая пара положительных значений с и n0, что |F(n)|≤c|g(n)| для всех n≥n0 } f ограничена сверху функцией g (с точностью до постоянного множителя) асимптотически 8
  • 9. Точное время обработки массива из N элементов: Действительное время(N)= N2+5*N+100 Вспомогательная функция: Оценка времени(N)=1,1*N2 Вспомогательная функция доминирует над точной, она проще и близка к точной. Порядок алгоритма обработки массива будет O(N2). 9 Пример
  • 10. Правила определения сложности k - константа, f и g – функции 1. O(k*f)=O(f) 2. O(f*g)=O(f)*O(g) или O(f/g)=O(f)/O(g) 3. O(f+g) равна доминанте O(f) и O(g) 10
  • 11. Классы оценок сложности - множества вычислительных проблем, для решения которых известны алгоритмы, схожие по сложности. •O(1) – константная сложность •O(n) – линейное время •O(na) - полиномиальная сложность: - O(n2) – квадратичное время - O(n3) – кубическое время •O(log(n)) – логарифмическое время •O(n log(n)) – "n-log-n" время •O(2n) – экспоненциальное время 11
  • 12. Классы оценок сложности Функция 10 100 1000 10000 100000 log2N 3 6 9 13 16 N 10 100 1000 10000 100000 N log2N 30 664 9965 105 106 N2 102 104 106 108 1010 N3 103 106 109 1012 1015 2N 103 1030 10301 103010 1030103 12
  • 13. Время выполнения алгоритма для небольших n 13
  • 14. 14 Время выполнения алгоритма для больших n
  • 15. 15 Временные сложности сортировок Метод сортировки В лучшем случае В среднем случае В худшем случае Прямого обмена O(N) O(N2) O(N2) Выбором O(N2) O(N2) O(N2) Быстрая O(N*logN) O(N*logN) O(N2) 22сортировка
  • 16. Оценка сложности программы "Тройки Пифагора" O(H)=O(1)+O(1)+O(1)=O(1); O(I)=O(N)*(O(F)+O(J))= O(N)*O(доминанты условия) =О(N); O(G)=O(N)*(O(C)+O(I) +O(K))=O(N)*(O(1)+O(N) +O(1))=O(N2); O(E)=O(N)*(O(B)+O(G)+O(L))=O(N)* O(N2)= O(N3); O(D)=O(A)+O(E)=O(1)+O(N3)= O(N3) 16
  • 17. Класс сложности - это множество вычислительных задач, для решения которых существуют алгоритмы, схожие по вычислительной сложности. •Класс P •Класс NP Для каждого класса существует категория задач, которые являются «самыми сложными». Это означает, что любая задача из класса сводится к такой задаче, и притом сама задача лежит в классе. 17 Классы вычислительной сложности
  • 18. Проблемы, решение которых считается «быстрым», то есть полиноминально зависящим от размера входных данных (например, O(n), O(n2)) ПРИМЕРЫ: •Сортировка •Поиск во множестве •Выяснение связности графов 18 Класс сложности P
  • 19. Проблемы, для решения которых используются лишь алгоритмы, экспоненциально зависящие от размера входных данных (например, O(2n)) ПРИМЕРЫ: •Задача коммивояжера •Задача выполнимости булевых формул •Факторизация 19 Класс сложности NP