Transcript Document
ФГОБУ ВПО "СибГУТИ"
Кафедра вычислительных систем
ОСНОВЫ ПРОГРАММИРОВАНИЯ
Асимптотический анализ
Преподаватель:
Доцент Кафедры ВС, к.т.н.
Поляков Артем Юрьевич
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
Математический аппарат
Для упрощения сумм можно воспользоваться следующими формулами ( где А, B и C –
независящая от i константы):
N
Ci
i 1
N
N
N
1 N, C
C i
i 1
i 1
N
i (i L )
i L
i L
N
i
i0
N
i 1
i0
N
i 1
L 1
i 1
N
A
i
2
i 1
N
B
i
i0
A
i
A
i 1
N ( N 1)
2
N 1
1
A 1
N
i 2 ( N 1) 2
i
N 1
2
i 1
N ( N 1)( 2 N 1)
N
1
i
6
i 1
i0
N
(A B)
N
ii
C N
i 1
N L
N
N
ln N
i 1
N
( N i) i
i0
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
N
2 2
i
N 1
1
i0
2
Математический аппарат
Задача 1.1
Типичный калькулятор умеет вычислять натуральные логарифмы (по
основанию e) и логарифмы по основанию 10. Как с помощью этих операций
вычислить log2759, log1540?
Задача 1.2
Найдите эквивалентное представление следующих выражений, не содержащее
знака суммы:
N
a)
( 3i 7 )
N
d)
i 1
(i 2i )
e)
i7
6
i
4
i
i 1
N
1)
N
2
i 1
c)
2
i 1
N
b)
(2i
N
i
f)
i7
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
3
Асимптотические соотношения
Пусть f и g– положительные функции от n.Тогда:
1. f(n) = O(g(n)) g(n) = Ω(f(n)).
2. f(n) = Θ(g(n)) g(n) = Θ(f(n)).
3. f(n) = Θ(g(n)) [f(n) = O(g(n)) и f(n) = Ω(g(n))].
4. f(n) = o(g(n)) g(n) = ω(f(n) ).
5. f(n) = o(g(n)) lim
n
6. f(n) = ω(g(n)) lim
n
f (n)
0
g (n)
f (n)
g (n)
7. f(n) = o(g(n)) f(n) = O(g(n)), обратное не верно.
8. f(n) = ω(g(n)) f(n) = Ω(g(n)), обратное не верно.
9. f(n) ограничено сверху и снизу положительными константами тогда и только
тогда, когда f(n) = Θ(1).
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
4
Асимптотические соотношения. (пример 1)
Докажем следующее асимптотическое соотношение:
f(n) = O(g(n)) g(n) = Ω(f(n)).
Дано: f(n) = O(g(n)) .
Доказательство: По определению из того, что f(n) = O(g(n)) следует, что:
с 0 , n 0 0 : f ( n ) с g ( n ) при n n 0
1
Данное неравенство можем переписать в виде:
f (n) g (n)
с
1
~
Отсюда, обозначив c
, получаем: с~ 0 , n 0 0 : с~ f ( n ) g ( n ) при n n 0
с
Дано: g(n) = Ω(f (n)).
Доказательство: По определению из того, что g(n) = Ω(f(n)) следует, что:
с 0 , n 0 0 : с f ( n ) g ( n ) при n n 0
1
Аналогично предыдущему доказательству, обозначим через c~
, тогда
с
~
~
с 0 , n 0 0 : f ( n ) с g ( n ) при n n 0
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
5
Асимптотические соотношения. (пример 2)
Докажем следующее асимптотическое соотношение:
f (n)
f(n) = o(g(n)) lim
n
0
g (n)
Дано: f (n) = o(g(n)) .
Доказательство:
По определению из того, что f (n) = o(g(n)) следует, что:
с 0 n 0 0 : f ( n ) c g ( n ) при n n 0
(*)
Отсюда перейдем к следующему предельному соотношению:
lim
n
f (n)
lim
g (n)
c g (n)
n
g (n)
Чем больше значение константы c, тем больше вероятность того, что найдется
такое n0 ,при котором неравенство (*) выполняется. Таким образом, интерес
представляют малые значения c. Перепишем последний предел в виде:
lim
n
f (n)
g (n)
lim lim
с 0 n
c g (n)
g (n)
lim с 0
с 0
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
6
Асимптотические соотношения. (пример 2)
Докажем следующее асимптотическое соотношение:
f (n) = o(g(n)) lim
n
Дано:
lim
n
f (n)
f (n)
0
g (n)
0
g (n)
Доказательство:
Поскольку предел функции h(n)= f (n)/g(n) равен 0, значит эта функция является
бесконечно малой. То есть f (n) растет медленнее, чем g(n), а значит найдется
такое положительное n0, что для любой положительной константы c, будет
выполняться неравенство:
f ( n ) c g ( n ) при n n 0
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
7
Визуально определить
асимптотические отношения между функциями
Задача 2.1
а) f1(n) = lg n, f2(n) = n
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
8
Визуально определить
асимптотические отношения между функциями
Задача 2.1
b) f1(n) = √n, f2(n) = n∙sin(n)
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
9
Визуально определить
асимптотические отношения между функциями
Задача 2.1
c) f1(n) = nlg c, f2(n) = nlgn
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
10
Визуально определить
асимптотические отношения между функциями
Задача 2.1
d) f1(n) = n!, f2(n) = nn
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
11
Правило Лопиталя
Теорема Лопиталя
lim
x a
f ( x)
g ( x)
lim
x a
f ( x )
g ( x )
если f (x) и g(x) удовлетворяют следующим условиям:
1. f (x) и g(x) дифференцируемы в окрестности a за исключением, быть может,
самой точки a (в проколотой окрестности a).
2. g'(x) ≠ 0 в проколотой окрестности a.
3. lim f ( x ) lim g ( x ) 0 или lim f ( x ) lim g ( x )
x a
4. lim
x a
x a
x a
x a
f ( x )
g ( x )
На практике данная теорема полезна при вычислении пределов с логарифмами:
т.к. [ln(x)]' = 1/x. , то логарифм легко свести к полиному, для которых пределы
вычислять значительно проще.
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
12
Определение асимптотических
соотношений с помощью пределов
Задача №2.2
Для каждой из приведенных ниже пар функций f и g выполняется одно из
неравенств: либо f = O(g), либо g= O( f ), но не оба сразу. При помощи пределов
определите, какой из случаев имеет место.
(n n)
2
a) f ( n )
,
2
3
d) f ( n ) n 3 n 4 , g ( n ) n
g (n) 6n
2
b) f ( n ) n 2 n , g ( n ) n n
c) f ( n ) n n log 2 n , g ( n ) n
3
e)
f ( n ) n log
f)
f ( n ) n log
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
2
n, g (n)
n
n n
2
n, g (n)
2
13
Определение асимптотических
соотношений с помощью пределов
Задача 2.3 Заполнить таблицу
f1(n)
f2(n)
n
n2
lg n
n
2n
2n/2
nlg c
nlg n
n!
nn
√n
n sin n
lg(n!)
lg(nn)
ax2+bx
x2
O
Ω
Θ
lg n = log2n
n! = 1∙2∙3∙ … ∙n
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
14
Определение асимптотических
соотношений с помощью пределов
Задача 2.4
Расположите по возрастанию :
a) log n, log(log n), n
b) n!, (1/3)n , log2 n
c) 4, (1/3)n ,
d)
n
2
n
n , log n, (3/2)
e) 4, (1/3)n , (3/2)n
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
15
Определение асимптотических
соотношений с помощью пределов*
Задача 2.5
Используйте O, o, ω, и Θ для описания отношений между следующими парами
функций:
a) logkn, n, где k >0 - константа
b) nk, cn, где k >0, с>1 – константы
c) 2n, 2n/2
* Дополнительные задания
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
16
Доказательство асимптотических соотношений
Задача 3.1
a) Докажите, что 17n1/6 = O(n1/5)
Задача 3.2*
Докажите или опровергните каждое из следующих утверждений:
a) f (n) = O(g(n)) g(n) = o(f (n)).
b) f(n) + g(n) = (max(f(n), g(n)).
c) f (n) = O(f 2(n)).
d) f (n) = O(g(n)) Ω(f (n))
* Дополнительные задания
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
17
Литература
1. (CLRS) Кормен Т., Лейзерсон Ч., Ривест Р. Штайн К. Алгоритмы: построение и
анализ, 2-е изд.: Пер. с англ. – М.: Издательский дом "Вильямс", 2012. – 1296 с.:
ил. – Парал. тит. англ. ISBN 978–5–8459–0857–5.
2. Дж. Макконнел Анализ алгоритмов. Активный обучающий подход (3-е
дополненное издание). – М.: Техносфера, 2009. – 416 с.
3. Миллер Р. Последовательные и параллельные алгоритмы: Общий подход /
Р. Миллер, Л. Боксер; Пер. с англ. – М.: БИНОМ. Лаборатория знаний, 2013. –
406 с.
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
18