SlideShare a Scribd company logo
1 of 16
Анализ комбинаторных
алгоритмов
Лекция №1
Скорость роста функций
Базовые понятия
 Алгоритм – это формально описанная
вычислительная процедура, получающая
исходные данные и выдающая результаты
вычислений на выход.
 Правильный алгоритм при любом
допустимом для данной задачи входе
заканчивает работу и выдает результат,
удовлетворяющий условиям задачи.
Базовые понятия
 Главным показателем качества алгоритма
является время его работы, а точнее, его
зависимость от размера входа алгоритма
 Время работы зависит не только от размера
входа алгоритма, но и от значений входа,
поэтому различают время работы алгоритма в
наилучшем, наихудшем и в среднем случае
Пример №1. Сортировка вставками.
Алгоритм работы.
Исходный
массив
d c a b
1-ый проход c d a b
2-ой проход a c d b
3-ий проход a b c d
void Insert_Sort(n, A)
{
1. for(j=1; j<n; j++){
2. key = A[ j ];
3. for(i = j-1; i>=0 && key<A[ i ];
i--)
4. A[ i+1 ] = A[ i ];
5. A[ i+1] = key; }
}
Пример №1. Сортировка вставками.
Время работы.
∑∑
−
=
−
=
−+−+−++=
1
1
54
1
1
321общ )1()1()1(1)-(nc1)-(nc(n)T
n
i
i
n
i
i nctctc
const-)ncc(c(n)T 521л ++=
const-)nc2/c2/cc(c/2)nc2/(c(n)T 54321
2
43х ++++++=
1=it
2
)1( −
=
nn
ti
В общем случае:
В лучшем случае:
В худшем случае:
Пример №1. Сортировка вставками.
Графическое изображение.
)()(
)()(
2
nnT
nnT
x
л
Θ=
Θ=
Время работы алгоритма
в лучшем случае имеет
порядок роста n, а в
худшем n2
.
n
T(n)
Отношение асимптотически точной оценки
симметрично, т.е если то
.
Говорят, что , если найдутся такие
константы с1,с2>0 и такое число n0, что будет
выполняться для всех n >= n0.
Асимптотические обозначения
))(()( ngnTx Θ=
)()()( 21 ngcnTngc ≤≤
))(()( ngnf Θ=
Если убрать понятие n0 из определения, то g(n)
будет являться асимптотически точной оценкой.
))(()( nfng Θ=
Запись включает две оценки:
верхнюю и нижнюю. Их довольно часто разделяют:
Верхняя оценка:
Говорят, что , если найдется с>0 и
такое число n0, такие что , при
всех n>n0.
Нижняя оценка:
Говорят, что , если найдется с>0 и
такое число n0, такие что , при
всех n>n0.
Асимптотические обозначения
))(()( ngnf Θ=
))(()( ngnf Ω=
))(()( ngOnf =
)()(0 nfncg ≤≤
)()(0 ncgnf ≤≤
Асимптотические обозначения
Теорема.
Для любых двух функций f(n) и g(n) свойство
выполняется тогда и только тогда,
когда и
))(()( ngnf Θ=
))(()( ngOnf = ))(()( ngnf Ω=
))(()(влечет))(()())(()( nhnfnhngиngnf Ω=Ω=Ω=
Асимптотические обозначения
Введенные определения обладают свойствами:
Транзитивность:
Рефлексивность:
Обращение:
))(()( nfnf Θ= ))(()( nfOnf =
))(()(если)),(()( nfngngOnf Ω==
))(()( nfnf Ω=
))(()(влечет))(()())(()( nhnfnhngиngnf Θ=Θ=Θ=
))(()(влечет))(()())(()( nhOnfnhOngиngOnf ===
Пример №2. Быстрая сортировка.
Алгоритм работы.
Исходный
массив
f e d a c b
1-ый проход b c a | d e f
2-ой проход a | c b | d | e f
3-ий проход a | b | c | d | e | f
Пример №2. Быстрая сортировка.
Алгоритм работы.
void quick_sort(A, n) { quick(A,0,n-1) }
void quick(A, left, right) {
i = left; j = right;
x = A[ (left+right)/2 ];
do{
while (A[ i ]<x && i<right) i++;
while (A[ j ]>x && j>left) j--;
if (i <= j) {
y = A[ i ]; A[ i ] = A[ j ]; A[ j ]=y;
i++; j--;
}
} while(i<=j)
if (left<j) quick(A,left,j);
if (right>i) quick(A,i,right);
}
Пример №2. Быстрая сортировка.
Время работы.
Наихудшее разбиение («наиболее неравные
части» - 1,n-1):
Наилучшее разбиение («дробление пополам»):
∑=
Θ=Θ=Θ+−=
n
k
nknnTnT
1
2
)()()()1()(
)()2/(2)( nnTnT Θ+=
Пример №2. Быстрая сортировка.
Время работы.
Основная теорема о рекуррентных оценках.
Пусть a>=1 и b>1 – некоторые константы, f(n) – функция,
T(n) = aT(n/b)+f(n), при неотрицательных n, где под n/b
понимается
Тогда:
   n/bилиn/b
)()(0,для)()()1 loglog aa bb
nnTnOnfесли Θ==>>= −
εε
))((n,большыхи1спри)()/(
еслии0для),()()3 log
nfT(n)ncfbnaf
nnfесли ab
Θ==><≤
>Ω= +
εε
);log()(),()()2 loglog
nnnTnnfесли aa bb
Θ==>Θ=
Пример №2. Быстрая сортировка.
Время работы.
Исходя из теоремы о рекуррентных оценках,
можно сделать вывод, что в лучшем случае
время работы алгоритма:
Доказано, что среднее время работы алгоритма
оценивается также как n log n.
)log()( nnnT Θ=
Пример №2. Быстрая сортировка.
Графическое изображение.
n
T(n)

More Related Content

What's hot

19 pascal urok_3
19 pascal urok_319 pascal urok_3
19 pascal urok_3Ann Eres
 
Сложные условия в паскале
Сложные условия в паскалеСложные условия в паскале
Сложные условия в паскалеDaria Romanova
 
исследование функций
исследование функцийисследование функций
исследование функцийkillaruns
 
Теория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравненияТеория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравненияAlexandr Grigorenko
 
Обработка коллекций наизнанку: как применить много функций к одному аргументу...
Обработка коллекций наизнанку: как применить много функций к одному аргументу...Обработка коллекций наизнанку: как применить много функций к одному аргументу...
Обработка коллекций наизнанку: как применить много функций к одному аргументу...corehard_by
 
Программирование как этап решения задач на компьютере
Программирование как этап решения задач на компьютереПрограммирование как этап решения задач на компьютере
Программирование как этап решения задач на компьютереAndrey Dolinin
 
Probabilistic Verification in Computational Systems Design
Probabilistic Verification in Computational Systems DesignProbabilistic Verification in Computational Systems Design
Probabilistic Verification in Computational Systems DesignIosif Itkin
 
Алгоритмическая конструкция следование
Алгоритмическая конструкция следованиеАлгоритмическая конструкция следование
Алгоритмическая конструкция следованиеAndrey Dolinin
 
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...Iosif Itkin
 
понятие функции
понятие функциипонятие функции
понятие функцииttku
 
Запись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка ПаскальЗапись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка ПаскальAndrey Dolinin
 
теория рекурсивных функций
теория рекурсивных функцийтеория рекурсивных функций
теория рекурсивных функцийMariya_Lastochkina
 
свойства функции
свойства функциисвойства функции
свойства функцииTatyana Zubareva
 
Программирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмовПрограммирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмовAndrey Dolinin
 
Use of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signatureUse of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signatureAndrei Poliakov
 

What's hot (19)

19 pascal urok_3
19 pascal urok_319 pascal urok_3
19 pascal urok_3
 
Сложные условия в паскале
Сложные условия в паскалеСложные условия в паскале
Сложные условия в паскале
 
исследование функций
исследование функцийисследование функций
исследование функций
 
Теория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравненияТеория. Сложные условия в операторе сравнения
Теория. Сложные условия в операторе сравнения
 
Обработка коллекций наизнанку: как применить много функций к одному аргументу...
Обработка коллекций наизнанку: как применить много функций к одному аргументу...Обработка коллекций наизнанку: как применить много функций к одному аргументу...
Обработка коллекций наизнанку: как применить много функций к одному аргументу...
 
Программирование как этап решения задач на компьютере
Программирование как этап решения задач на компьютереПрограммирование как этап решения задач на компьютере
Программирование как этап решения задач на компьютере
 
Probabilistic Verification in Computational Systems Design
Probabilistic Verification in Computational Systems DesignProbabilistic Verification in Computational Systems Design
Probabilistic Verification in Computational Systems Design
 
Алгоритмическая конструкция следование
Алгоритмическая конструкция следованиеАлгоритмическая конструкция следование
Алгоритмическая конструкция следование
 
4 algoritm
4 algoritm4 algoritm
4 algoritm
 
алгоритм
алгоритмалгоритм
алгоритм
 
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
 
понятие функции
понятие функциипонятие функции
понятие функции
 
Python
PythonPython
Python
 
Запись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка ПаскальЗапись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка Паскаль
 
теория рекурсивных функций
теория рекурсивных функцийтеория рекурсивных функций
теория рекурсивных функций
 
свойства функции
свойства функциисвойства функции
свойства функции
 
Программирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмовПрограммирование разветвляющихся алгоритмов
Программирование разветвляющихся алгоритмов
 
Use of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signatureUse of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signature
 
Цикл
Цикл Цикл
Цикл
 

Viewers also liked

Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1simple_people
 
Лекция 10 NP-полнота
Лекция 10 NP-полнотаЛекция 10 NP-полнота
Лекция 10 NP-полнотаsimple_people
 
Мобильные Сервисные Службы
Мобильные Сервисные СлужбыМобильные Сервисные Службы
Мобильные Сервисные Службыsimple_people
 
Лекция 6 Элементарные структуры данных часть 4
Лекция 6 Элементарные структуры данных часть 4Лекция 6 Элементарные структуры данных часть 4
Лекция 6 Элементарные структуры данных часть 4simple_people
 
Лекция 15 Поиск подстрок
Лекция 15 Поиск подстрокЛекция 15 Поиск подстрок
Лекция 15 Поиск подстрокsimple_people
 
Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1simple_people
 
Лекция 4 Элементарные структуры данных часть 2
Лекция 4 Элементарные структуры данных часть 2Лекция 4 Элементарные структуры данных часть 2
Лекция 4 Элементарные структуры данных часть 2simple_people
 
Лекция 9 Жадные алгоритмы
Лекция 9 Жадные алгоритмыЛекция 9 Жадные алгоритмы
Лекция 9 Жадные алгоритмыsimple_people
 
Лекция 5 Элементарные структуры данных часть 3
Лекция 5 Элементарные структуры данных часть 3Лекция 5 Элементарные структуры данных часть 3
Лекция 5 Элементарные структуры данных часть 3simple_people
 
Fernando's Resume 2015 02
Fernando's Resume 2015 02Fernando's Resume 2015 02
Fernando's Resume 2015 02Fernando Zelaya
 
Sustentabilidade em Pequena Escala
Sustentabilidade em Pequena EscalaSustentabilidade em Pequena Escala
Sustentabilidade em Pequena EscalaPhelipe Gonçalves
 
Presentación 4 vlcn frmtv
Presentación 4 vlcn frmtvPresentación 4 vlcn frmtv
Presentación 4 vlcn frmtvdiplocaldoc
 
Blade of Light cover 2.2
Blade of Light cover 2.2Blade of Light cover 2.2
Blade of Light cover 2.2Gillian Jones
 
LETTER OF APPRECIATION
LETTER OF APPRECIATIONLETTER OF APPRECIATION
LETTER OF APPRECIATIONAbsaar Arshad
 
DNUG - Andreas Rosen - IBM Software und Salesforce sinnvoll integrieren
DNUG - Andreas Rosen - IBM Software und Salesforce sinnvoll integrierenDNUG - Andreas Rosen - IBM Software und Salesforce sinnvoll integrieren
DNUG - Andreas Rosen - IBM Software und Salesforce sinnvoll integrierenAndreas Rosen
 
Planificación Desafio matemático 38
Planificación Desafio matemático 38Planificación Desafio matemático 38
Planificación Desafio matemático 38Andrea Sánchez
 
Andre kertesz
Andre kerteszAndre kertesz
Andre kerteszjohnyzed
 

Viewers also liked (20)

Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1
 
Лекция 10 NP-полнота
Лекция 10 NP-полнотаЛекция 10 NP-полнота
Лекция 10 NP-полнота
 
Мобильные Сервисные Службы
Мобильные Сервисные СлужбыМобильные Сервисные Службы
Мобильные Сервисные Службы
 
Лекция 6 Элементарные структуры данных часть 4
Лекция 6 Элементарные структуры данных часть 4Лекция 6 Элементарные структуры данных часть 4
Лекция 6 Элементарные структуры данных часть 4
 
Лекция 15 Поиск подстрок
Лекция 15 Поиск подстрокЛекция 15 Поиск подстрок
Лекция 15 Поиск подстрок
 
Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1
 
Лекция 4 Элементарные структуры данных часть 2
Лекция 4 Элементарные структуры данных часть 2Лекция 4 Элементарные структуры данных часть 2
Лекция 4 Элементарные структуры данных часть 2
 
Лекция 9 Жадные алгоритмы
Лекция 9 Жадные алгоритмыЛекция 9 Жадные алгоритмы
Лекция 9 Жадные алгоритмы
 
Лекция 5 Элементарные структуры данных часть 3
Лекция 5 Элементарные структуры данных часть 3Лекция 5 Элементарные структуры данных часть 3
Лекция 5 Элементарные структуры данных часть 3
 
Thelifestyle
ThelifestyleThelifestyle
Thelifestyle
 
Fernando's Resume 2015 02
Fernando's Resume 2015 02Fernando's Resume 2015 02
Fernando's Resume 2015 02
 
How bio back works
How bio back worksHow bio back works
How bio back works
 
Sustentabilidade em Pequena Escala
Sustentabilidade em Pequena EscalaSustentabilidade em Pequena Escala
Sustentabilidade em Pequena Escala
 
FALLAS 2017 TARIFA ASADOS MEDIEVALES LA BAMBINA
FALLAS 2017 TARIFA ASADOS MEDIEVALES LA BAMBINAFALLAS 2017 TARIFA ASADOS MEDIEVALES LA BAMBINA
FALLAS 2017 TARIFA ASADOS MEDIEVALES LA BAMBINA
 
Presentación 4 vlcn frmtv
Presentación 4 vlcn frmtvPresentación 4 vlcn frmtv
Presentación 4 vlcn frmtv
 
Blade of Light cover 2.2
Blade of Light cover 2.2Blade of Light cover 2.2
Blade of Light cover 2.2
 
LETTER OF APPRECIATION
LETTER OF APPRECIATIONLETTER OF APPRECIATION
LETTER OF APPRECIATION
 
DNUG - Andreas Rosen - IBM Software und Salesforce sinnvoll integrieren
DNUG - Andreas Rosen - IBM Software und Salesforce sinnvoll integrierenDNUG - Andreas Rosen - IBM Software und Salesforce sinnvoll integrieren
DNUG - Andreas Rosen - IBM Software und Salesforce sinnvoll integrieren
 
Planificación Desafio matemático 38
Planificación Desafio matemático 38Planificación Desafio matemático 38
Planificación Desafio matemático 38
 
Andre kertesz
Andre kerteszAndre kertesz
Andre kertesz
 

Similar to Лекция 1 Скорость роста функций

чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.sharikdp
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Technopark
 
Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)Mikhail Kurnosov
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовMikhail Kurnosov
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировкиkogoga
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировкиkogoga
 
лекция1
лекция1лекция1
лекция1ap0f30z
 
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
практика 6
практика 6практика 6
практика 6student_kai
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировкиkogoga
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировкиkogoga
 
Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)Mikhail Kurnosov
 
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Mikhail Kurnosov
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовMikhail Kurnosov
 
20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliaminComputer Science Club
 
Лекция 1: Амортизационный анализ (Amortized analysis)
Лекция 1: Амортизационный анализ (Amortized analysis)Лекция 1: Амортизационный анализ (Amortized analysis)
Лекция 1: Амортизационный анализ (Amortized analysis)Mikhail Kurnosov
 

Similar to Лекция 1 Скорость роста функций (20)

чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
 
Algo 01 part01
Algo 01 part01Algo 01 part01
Algo 01 part01
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
 
Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмов
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
лекция1
лекция1лекция1
лекция1
 
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
 
практика 6
практика 6практика 6
практика 6
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)
 
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмов
 
20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin
 
Основы SciPy
Основы SciPyОсновы SciPy
Основы SciPy
 
Лекция 1: Амортизационный анализ (Amortized analysis)
Лекция 1: Амортизационный анализ (Amortized analysis)Лекция 1: Амортизационный анализ (Amortized analysis)
Лекция 1: Амортизационный анализ (Amortized analysis)
 

Лекция 1 Скорость роста функций

  • 2. Базовые понятия  Алгоритм – это формально описанная вычислительная процедура, получающая исходные данные и выдающая результаты вычислений на выход.  Правильный алгоритм при любом допустимом для данной задачи входе заканчивает работу и выдает результат, удовлетворяющий условиям задачи.
  • 3. Базовые понятия  Главным показателем качества алгоритма является время его работы, а точнее, его зависимость от размера входа алгоритма  Время работы зависит не только от размера входа алгоритма, но и от значений входа, поэтому различают время работы алгоритма в наилучшем, наихудшем и в среднем случае
  • 4. Пример №1. Сортировка вставками. Алгоритм работы. Исходный массив d c a b 1-ый проход c d a b 2-ой проход a c d b 3-ий проход a b c d void Insert_Sort(n, A) { 1. for(j=1; j<n; j++){ 2. key = A[ j ]; 3. for(i = j-1; i>=0 && key<A[ i ]; i--) 4. A[ i+1 ] = A[ i ]; 5. A[ i+1] = key; } }
  • 5. Пример №1. Сортировка вставками. Время работы. ∑∑ − = − = −+−+−++= 1 1 54 1 1 321общ )1()1()1(1)-(nc1)-(nc(n)T n i i n i i nctctc const-)ncc(c(n)T 521л ++= const-)nc2/c2/cc(c/2)nc2/(c(n)T 54321 2 43х ++++++= 1=it 2 )1( − = nn ti В общем случае: В лучшем случае: В худшем случае:
  • 6. Пример №1. Сортировка вставками. Графическое изображение. )()( )()( 2 nnT nnT x л Θ= Θ= Время работы алгоритма в лучшем случае имеет порядок роста n, а в худшем n2 . n T(n)
  • 7. Отношение асимптотически точной оценки симметрично, т.е если то . Говорят, что , если найдутся такие константы с1,с2>0 и такое число n0, что будет выполняться для всех n >= n0. Асимптотические обозначения ))(()( ngnTx Θ= )()()( 21 ngcnTngc ≤≤ ))(()( ngnf Θ= Если убрать понятие n0 из определения, то g(n) будет являться асимптотически точной оценкой. ))(()( nfng Θ=
  • 8. Запись включает две оценки: верхнюю и нижнюю. Их довольно часто разделяют: Верхняя оценка: Говорят, что , если найдется с>0 и такое число n0, такие что , при всех n>n0. Нижняя оценка: Говорят, что , если найдется с>0 и такое число n0, такие что , при всех n>n0. Асимптотические обозначения ))(()( ngnf Θ= ))(()( ngnf Ω= ))(()( ngOnf = )()(0 nfncg ≤≤ )()(0 ncgnf ≤≤
  • 9. Асимптотические обозначения Теорема. Для любых двух функций f(n) и g(n) свойство выполняется тогда и только тогда, когда и ))(()( ngnf Θ= ))(()( ngOnf = ))(()( ngnf Ω=
  • 10. ))(()(влечет))(()())(()( nhnfnhngиngnf Ω=Ω=Ω= Асимптотические обозначения Введенные определения обладают свойствами: Транзитивность: Рефлексивность: Обращение: ))(()( nfnf Θ= ))(()( nfOnf = ))(()(если)),(()( nfngngOnf Ω== ))(()( nfnf Ω= ))(()(влечет))(()())(()( nhnfnhngиngnf Θ=Θ=Θ= ))(()(влечет))(()())(()( nhOnfnhOngиngOnf ===
  • 11. Пример №2. Быстрая сортировка. Алгоритм работы. Исходный массив f e d a c b 1-ый проход b c a | d e f 2-ой проход a | c b | d | e f 3-ий проход a | b | c | d | e | f
  • 12. Пример №2. Быстрая сортировка. Алгоритм работы. void quick_sort(A, n) { quick(A,0,n-1) } void quick(A, left, right) { i = left; j = right; x = A[ (left+right)/2 ]; do{ while (A[ i ]<x && i<right) i++; while (A[ j ]>x && j>left) j--; if (i <= j) { y = A[ i ]; A[ i ] = A[ j ]; A[ j ]=y; i++; j--; } } while(i<=j) if (left<j) quick(A,left,j); if (right>i) quick(A,i,right); }
  • 13. Пример №2. Быстрая сортировка. Время работы. Наихудшее разбиение («наиболее неравные части» - 1,n-1): Наилучшее разбиение («дробление пополам»): ∑= Θ=Θ=Θ+−= n k nknnTnT 1 2 )()()()1()( )()2/(2)( nnTnT Θ+=
  • 14. Пример №2. Быстрая сортировка. Время работы. Основная теорема о рекуррентных оценках. Пусть a>=1 и b>1 – некоторые константы, f(n) – функция, T(n) = aT(n/b)+f(n), при неотрицательных n, где под n/b понимается Тогда:    n/bилиn/b )()(0,для)()()1 loglog aa bb nnTnOnfесли Θ==>>= − εε ))((n,большыхи1спри)()/( еслии0для),()()3 log nfT(n)ncfbnaf nnfесли ab Θ==><≤ >Ω= + εε );log()(),()()2 loglog nnnTnnfесли aa bb Θ==>Θ=
  • 15. Пример №2. Быстрая сортировка. Время работы. Исходя из теоремы о рекуррентных оценках, можно сделать вывод, что в лучшем случае время работы алгоритма: Доказано, что среднее время работы алгоритма оценивается также как n log n. )log()( nnnT Θ=
  • 16. Пример №2. Быстрая сортировка. Графическое изображение. n T(n)