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

i0
N

i 1

i0
N
i 1
L 1


i 1
N
A
i 
2

i 1
N
B
i

i0
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
i0
N
(A  B) 
N
ii

 C N
i 1
N L
N
N
 ln N
i 1
N
( N  i)   i
i0
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
N

2 2
i
N 1
1
i0
2
Математический аппарат
Задача 1.1
Типичный калькулятор умеет вычислять натуральные логарифмы (по
основанию e) и логарифмы по основанию 10. Как с помощью этих операций
вычислить log2759, log1540?
Задача 1.2
Найдите эквивалентное представление следующих выражений, не содержащее
знака суммы:
N
a)
 ( 3i  7 )
N
d)
i 1

(i  2i )
e)
i7

6
i
4
i
i 1
N

 1)
N
2
i 1
c)
2
i 1
N
b)
 (2i
N
i
f)

i7
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
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