SlideShare a Scribd company logo
1 of 19
РОССИЙСКАЯ АКАДЕМИЯ НАРОДНОГО ХОЗЯЙСТВА И 
ГОСУДАРСТВЕННОЙ СЛУЖБЫ ПРИ ПРЕЗИДЕНТЕ 
РОССИЙСКОЙ ФЕДЕРАЦИИ 
Нижегородский институт управления 
Кафедра информатики и информационных технологий 
Введение в алгоритмы и 
структуры данных 
Ивина Наталья Львовна 
доцент кафедры Информатики и ИТ
Тема 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

What's hot

Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиMikhail Kurnosov
 
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовMikhail Kurnosov
 
Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)Mikhail Kurnosov
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Mikhail Kurnosov
 
Лекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировкаЛекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировкаMikhail Kurnosov
 
Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Mikhail Kurnosov
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Mikhail Kurnosov
 
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Nikolay Grebenshikov
 
TMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevTMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevIosif Itkin
 
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL ModelsTMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL ModelsIosif Itkin
 
Векторизация кода (семинар 2)
Векторизация кода (семинар 2)Векторизация кода (семинар 2)
Векторизация кода (семинар 2)Mikhail Kurnosov
 
Лекция 4. Стеки и очереди
Лекция 4. Стеки и очередиЛекция 4. Стеки и очереди
Лекция 4. Стеки и очередиMikhail Kurnosov
 
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...Mikhail Kurnosov
 
Лекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеЛекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеMikhail Kurnosov
 
Лекция 8 Динамическое программирование
Лекция 8 Динамическое программированиеЛекция 8 Динамическое программирование
Лекция 8 Динамическое программированиеsimple_people
 
Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3Technopark
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиMikhail Kurnosov
 

What's hot (20)

Лекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимостиЛекция 10. Графы. Остовные деревья минимальной стоимости
Лекция 10. Графы. Остовные деревья минимальной стоимости
 
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмов
 
Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
 
Лекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировкаЛекция 7. Бинарные кучи. Пирамидальная сортировка
Лекция 7. Бинарные кучи. Пирамидальная сортировка
 
Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Векторизация кода (семинар 3)
Векторизация кода (семинар 3)
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
 
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
 
TMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevTMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry Zaitsev
 
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL ModelsTMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models
 
Основы MATLAB. Численные методы
Основы MATLAB. Численные методыОсновы MATLAB. Численные методы
Основы MATLAB. Численные методы
 
Векторизация кода (семинар 2)
Векторизация кода (семинар 2)Векторизация кода (семинар 2)
Векторизация кода (семинар 2)
 
Лекция 4. Стеки и очереди
Лекция 4. Стеки и очередиЛекция 4. Стеки и очереди
Лекция 4. Стеки и очереди
 
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
Лекция 12: Методы разработки алгоритмов. Динамическое программирование. Жадны...
 
Лекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графеЛекция 9. Поиск кратчайшего пути в графе
Лекция 9. Поиск кратчайшего пути в графе
 
Лекция 8 Динамическое программирование
Лекция 8 Динамическое программированиеЛекция 8 Динамическое программирование
Лекция 8 Динамическое программирование
 
Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3Алгоритмы и структуры данных осень 2013 лекция 3
Алгоритмы и структуры данных осень 2013 лекция 3
 
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировкиЛекция 2: Абстрактные типы данных. Алгоритмы сортировки
Лекция 2: Абстрактные типы данных. Алгоритмы сортировки
 
Algo 01 part01
Algo 01 part01Algo 01 part01
Algo 01 part01
 

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

Computing the code distance of linear binary and ternary block codes using p...
Computing the code distance of linear binary and ternary block codes using  p...Computing the code distance of linear binary and ternary block codes using  p...
Computing the code distance of linear binary and ternary block codes using p...Usatyuk Vasiliy
 
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...AIST
 
Основы алгоритмизации (QBasic)
Основы алгоритмизации (QBasic)Основы алгоритмизации (QBasic)
Основы алгоритмизации (QBasic)Viktoria Vlasenko
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...Alexey Paznikov
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.sharikdp
 
алгоритмизация
алгоритмизацияалгоритмизация
алгоритмизацияisva69
 
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...Gleb Zakhodiakin
 
Презентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 классПрезентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 класс2berkas
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Yandex
 
Советский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияСоветский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияPositive Hack Days
 
Профилирование и отладка Django
Профилирование и отладка DjangoПрофилирование и отладка Django
Профилирование и отладка DjangoVladimir Rudnyh
 
Общественный контроль экологического мониторинга: R, R и ещё раз R!
Общественный контроль экологического мониторинга: R, R и ещё раз R!Общественный контроль экологического мониторинга: R, R и ещё раз R!
Общественный контроль экологического мониторинга: R, R и ещё раз R!Yevhen Vasylenko
 
Расчёт дифракционных картин
Расчёт дифракционных картинРасчёт дифракционных картин
Расчёт дифракционных картинTimur Shaporev
 
Лекция 1: Амортизационный анализ (Amortized analysis)
Лекция 1: Амортизационный анализ (Amortized analysis)Лекция 1: Амортизационный анализ (Amortized analysis)
Лекция 1: Амортизационный анализ (Amortized analysis)Mikhail Kurnosov
 
ПРОГРАММИРУЕМЫЙ ФОРМИРОВАТЕЛЬ ТРАЕКТОРИИ ДВИЖЕНИЯ СЛЕДЯЩЕГО ЭЛЕКТРОПРИВОДА
ПРОГРАММИРУЕМЫЙ ФОРМИРОВАТЕЛЬ ТРАЕКТОРИИ ДВИЖЕНИЯ СЛЕДЯЩЕГО ЭЛЕКТРОПРИВОДАПРОГРАММИРУЕМЫЙ ФОРМИРОВАТЕЛЬ ТРАЕКТОРИИ ДВИЖЕНИЯ СЛЕДЯЩЕГО ЭЛЕКТРОПРИВОДА
ПРОГРАММИРУЕМЫЙ ФОРМИРОВАТЕЛЬ ТРАЕКТОРИИ ДВИЖЕНИЯ СЛЕДЯЩЕГО ЭЛЕКТРОПРИВОДАITMO University
 
О-символика
О-символикаО-символика
О-символикаDEVTYPE
 
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...Unigine Corp.
 
Стабилизация программных движений маятника переменной длины на вращающемся ос...
Стабилизация программных движений маятника переменной длины на вращающемся ос...Стабилизация программных движений маятника переменной длины на вращающемся ос...
Стабилизация программных движений маятника переменной длины на вращающемся ос...Theoretical mechanics department
 
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисленияПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисленияAlexey Paznikov
 

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

Computing the code distance of linear binary and ternary block codes using p...
Computing the code distance of linear binary and ternary block codes using  p...Computing the code distance of linear binary and ternary block codes using  p...
Computing the code distance of linear binary and ternary block codes using p...
 
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
 
Основы алгоритмизации (QBasic)
Основы алгоритмизации (QBasic)Основы алгоритмизации (QBasic)
Основы алгоритмизации (QBasic)
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
 
алгоритмизация
алгоритмизацияалгоритмизация
алгоритмизация
 
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...
 
Презентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 классПрезентация на тему: Повторение курса информатики 7 класс
Презентация на тему: Повторение курса информатики 7 класс
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
 
Советский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияСоветский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисления
 
Профилирование и отладка Django
Профилирование и отладка DjangoПрофилирование и отладка Django
Профилирование и отладка Django
 
Общественный контроль экологического мониторинга: R, R и ещё раз R!
Общественный контроль экологического мониторинга: R, R и ещё раз R!Общественный контроль экологического мониторинга: R, R и ещё раз R!
Общественный контроль экологического мониторинга: R, R и ещё раз R!
 
Расчёт дифракционных картин
Расчёт дифракционных картинРасчёт дифракционных картин
Расчёт дифракционных картин
 
Лекция 1: Амортизационный анализ (Amortized analysis)
Лекция 1: Амортизационный анализ (Amortized analysis)Лекция 1: Амортизационный анализ (Amortized analysis)
Лекция 1: Амортизационный анализ (Amortized analysis)
 
ПРОГРАММИРУЕМЫЙ ФОРМИРОВАТЕЛЬ ТРАЕКТОРИИ ДВИЖЕНИЯ СЛЕДЯЩЕГО ЭЛЕКТРОПРИВОДА
ПРОГРАММИРУЕМЫЙ ФОРМИРОВАТЕЛЬ ТРАЕКТОРИИ ДВИЖЕНИЯ СЛЕДЯЩЕГО ЭЛЕКТРОПРИВОДАПРОГРАММИРУЕМЫЙ ФОРМИРОВАТЕЛЬ ТРАЕКТОРИИ ДВИЖЕНИЯ СЛЕДЯЩЕГО ЭЛЕКТРОПРИВОДА
ПРОГРАММИРУЕМЫЙ ФОРМИРОВАТЕЛЬ ТРАЕКТОРИИ ДВИЖЕНИЯ СЛЕДЯЩЕГО ЭЛЕКТРОПРИВОДА
 
О-символика
О-символикаО-символика
О-символика
 
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...
Как впихнуть утро в сосновом лесу в 4 килобайта. Иван Авдеев. UNIGINE Open Ai...
 
Стабилизация программных движений маятника переменной длины на вращающемся ос...
Стабилизация программных движений маятника переменной длины на вращающемся ос...Стабилизация программных движений маятника переменной длины на вращающемся ос...
Стабилизация программных движений маятника переменной длины на вращающемся ос...
 
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисленияПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
 

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

Первое Всероссийское тестирование по истории Великой Отечественной войны
Первое Всероссийское тестирование по истории Великой Отечественной войныПервое Всероссийское тестирование по истории Великой Отечественной войны
Первое Всероссийское тестирование по истории Великой Отечественной войныНижегородский институт управления
 
Система национальных счетов и макроэкономических показателей. Платежный баланс
Система национальных счетов и макроэкономических показателей. Платежный балансСистема национальных счетов и макроэкономических показателей. Платежный баланс
Система национальных счетов и макроэкономических показателей. Платежный балансНижегородский институт управления
 

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

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

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

  • 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