Лекция 1 Скорость роста функций
TRANSCRIPT
![Page 1: Лекция 1 Скорость роста функций](https://reader036.vdocuments.mx/reader036/viewer/2022082509/589f17751a28ab7b208b47fb/html5/thumbnails/1.jpg)
Анализ комбинаторных алгоритмов
Лекция №1Скорость роста функций
![Page 2: Лекция 1 Скорость роста функций](https://reader036.vdocuments.mx/reader036/viewer/2022082509/589f17751a28ab7b208b47fb/html5/thumbnails/2.jpg)
Базовые понятия
Алгоритм – это формально описанная вычислительная процедура, получающая исходные данные и выдающая результаты вычислений на выход.
Правильный алгоритм при любом допустимом для данной задачи входе заканчивает работу и выдает результат, удовлетворяющий условиям задачи.
![Page 3: Лекция 1 Скорость роста функций](https://reader036.vdocuments.mx/reader036/viewer/2022082509/589f17751a28ab7b208b47fb/html5/thumbnails/3.jpg)
Базовые понятия
Главным показателем качества алгоритма является время его работы, а точнее, его зависимость от размера входа алгоритма
Время работы зависит не только от размера входа алгоритма, но и от значений входа, поэтому различают время работы алгоритма в наилучшем, наихудшем и в среднем случае
![Page 4: Лекция 1 Скорость роста функций](https://reader036.vdocuments.mx/reader036/viewer/2022082509/589f17751a28ab7b208b47fb/html5/thumbnails/4.jpg)
Пример №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; } }
![Page 5: Лекция 1 Скорость роста функций](https://reader036.vdocuments.mx/reader036/viewer/2022082509/589f17751a28ab7b208b47fb/html5/thumbnails/5.jpg)
Пример №1. Сортировка вставками. Время работы.
1
154
1
1321общ )1()1()1(1)-(nc 1)-(nc (n)T
n
ii
n
ii nctctc
const-)ncc(c (n)T 521л
const -)n c2/c2/cc(c /2)nc2/(c (n)T 543212
43х
1it
2)1(
nnti
В общем случае:
В лучшем случае:
В худшем случае:
![Page 6: Лекция 1 Скорость роста функций](https://reader036.vdocuments.mx/reader036/viewer/2022082509/589f17751a28ab7b208b47fb/html5/thumbnails/6.jpg)
Пример №1. Сортировка вставками. Графическое изображение.
)()(
)()(2nnT
nnT
x
л
Время работы алгоритма в лучшем случае имеет порядок роста n, а в худшем n2.
n
T(n)
![Page 7: Лекция 1 Скорость роста функций](https://reader036.vdocuments.mx/reader036/viewer/2022082509/589f17751a28ab7b208b47fb/html5/thumbnails/7.jpg)
Отношение асимптотически точной оценки симметрично, т.е если то .
Говорят, что , если найдутся такие константы с1,с2>0 и такое число n0, что будет выполняться для всех n >= n0.
Асимптотические обозначения
))(()( ngnTx
)()()( 21 ngcnTngc
))(()( ngnf
Если убрать понятие n0 из определения, то g(n) будет являться асимптотически точной оценкой.
))(()( nfng
![Page 8: Лекция 1 Скорость роста функций](https://reader036.vdocuments.mx/reader036/viewer/2022082509/589f17751a28ab7b208b47fb/html5/thumbnails/8.jpg)
Запись включает две оценки: верхнюю и нижнюю. Их довольно часто разделяют:
Верхняя оценка:Говорят, что , если найдется с>0 и такое число n0, такие что , при всех n>n0.Нижняя оценка:Говорят, что , если найдется с>0 и такое число n0, такие что , при всех n>n0.
Асимптотические обозначения
))(()( ngnf
))(()( ngnf
))(()( ngOnf
)()(0 nfncg
)()(0 ncgnf
![Page 9: Лекция 1 Скорость роста функций](https://reader036.vdocuments.mx/reader036/viewer/2022082509/589f17751a28ab7b208b47fb/html5/thumbnails/9.jpg)
Асимптотические обозначения
Теорема.Для любых двух функций f(n) и g(n) свойство выполняется тогда и только тогда,когда и
))(()( ngnf
))(()( ngOnf ))(()( ngnf
![Page 10: Лекция 1 Скорость роста функций](https://reader036.vdocuments.mx/reader036/viewer/2022082509/589f17751a28ab7b208b47fb/html5/thumbnails/10.jpg)
))(()( влечет ))(()( ))(()( nhnfnhngиngnf
Асимптотические обозначения
Введенные определения обладают свойствами:Транзитивность:
Рефлексивность:
Обращение:))(()( nfnf ))(()( nfOnf
))(()( если )),(()( nfngngOnf
))(()( nfnf
))(()( влечет ))(()( ))(()( nhnfnhngиngnf ))(()( влечет ))(()( ))(()( nhOnfnhOngиngOnf
![Page 11: Лекция 1 Скорость роста функций](https://reader036.vdocuments.mx/reader036/viewer/2022082509/589f17751a28ab7b208b47fb/html5/thumbnails/11.jpg)
Пример №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
![Page 12: Лекция 1 Скорость роста функций](https://reader036.vdocuments.mx/reader036/viewer/2022082509/589f17751a28ab7b208b47fb/html5/thumbnails/12.jpg)
Пример №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);}
![Page 13: Лекция 1 Скорость роста функций](https://reader036.vdocuments.mx/reader036/viewer/2022082509/589f17751a28ab7b208b47fb/html5/thumbnails/13.jpg)
Пример №2. Быстрая сортировка. Время работы.
Наихудшее разбиение («наиболее неравныечасти» - 1,n-1):
Наилучшее разбиение («дробление пополам»):
n
k
nknnTnT1
2 )()()()1()(
)()2/(2)( nnTnT
![Page 14: Лекция 1 Скорость роста функций](https://reader036.vdocuments.mx/reader036/viewer/2022082509/589f17751a28ab7b208b47fb/html5/thumbnails/14.jpg)
Пример №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)ncfbnafnnfесли ab
);log()( ),()( )2 loglog nnnTnnfесли aa bb
![Page 15: Лекция 1 Скорость роста функций](https://reader036.vdocuments.mx/reader036/viewer/2022082509/589f17751a28ab7b208b47fb/html5/thumbnails/15.jpg)
Пример №2. Быстрая сортировка. Время работы.
Исходя из теоремы о рекуррентных оценках,можно сделать вывод, что в лучшем случаевремя работы алгоритма:
Доказано, что среднее время работы алгоритма оценивается также как n log n.
)log()( nnnT
![Page 16: Лекция 1 Скорость роста функций](https://reader036.vdocuments.mx/reader036/viewer/2022082509/589f17751a28ab7b208b47fb/html5/thumbnails/16.jpg)
Пример №2. Быстрая сортировка. Графическое изображение.
n
T(n)