n - СибГУТИ

advertisement
ФГОБУ ВПО "СибГУТИ"
Кафедра вычислительных систем
ОСНОВЫ ПРОГРАММИРОВАНИЯ
Асимптотический анализ
Преподаватель:
Доцент Кафедры ВС, к.т.н.
Поляков Артем Юрьевич
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
Математический аппарат
Для упрощения сумм можно воспользоваться следующими формулами ( где А, B и C –
независящая от i константы):
N
N
i 1
i 1
N
N
i 1
i 1
 Ci  C  i
1  N ,  C  C  N
N
N L
iL
i 0
N ( N  1)
i

2
i 1
 i   (i  L)
N
N
L 1
iL
i 0
i 0
N
N 1
A
1
i
A


A 1
i 1
N
N
i
N 1
i

2

(
N

1
)
2
2

i 1
N ( N  1)( 2 N  1)
i 

6
i 1
N
i  i  i
N
1
 ln N

i 1 i
2
N
N
N
i 1
i 1
i 1
 ( A  B)   A   B
N
N
i 0
i 0
 ( N  i )  i
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
N
i
N 1
2

2
1

i 0
2
Математический аппарат
Задача 1.1
Типичный калькулятор умеет вычислять натуральные логарифмы (по
основанию e) и логарифмы по основанию 10. Как с помощью этих операций
вычислить log2759, log1540?
Задача 1.2
Найдите эквивалентное представление следующих выражений, не содержащее
знака суммы:
N
a)
 (3i  7)
i 1
N
d)
N
b)
 (i  2i)
2
e)
i 7
 1)
i 1
i
6

i 1
N
i
2
N
i 1
c)
 (2i
N
f)
i
4

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) ).
f ( n)
0
n  g ( n)
f ( n)
6. f(n) = ω(g(n))  lim

n  g ( n)
5. f(n) = o(g(n))  lim
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, n0  0 : f (n)  с  g (n) при n  n0
Данное неравенство можем переписать в виде:
1
f ( n)  g ( n)
с
1
~
~  0, n  0 : с~  f (n)  g (n) при n  n
Отсюда, обозначив c 
, получаем: с
0
0
с
Дано: g(n) = Ω(f (n)).
Доказательство: По определению из того, что g(n) = Ω(f(n)) следует, что:
с  0, n0  0 : с  f (n)  g (n) при n  n0
1
Аналогично предыдущему доказательству, обозначим через c~ 
, тогда
с
~
~
с  0, n  0 : f (n)  с  g (n) при n  n
0
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
0
5
Асимптотические соотношения. (пример 2)
Докажем следующее асимптотическое соотношение:
f(n) = o(g(n))  lim
n 
f ( n)
0
g ( n)
 Дано: f (n) = o(g(n)) .
Доказательство:
По определению из того, что f (n) = o(g(n)) следует, что:
с  0 n0  0 : f (n)  c  g (n) при n  n0 (*)
Отсюда перейдем к следующему предельному соотношению:
f ( n)
c  g ( n)
lim
 lim
n  g ( n )
n  g ( n )
Чем больше значение константы c, тем больше вероятность того, что найдется
такое n0 ,при котором неравенство (*) выполняется. Таким образом, интерес
представляют малые значения c. Перепишем последний предел в виде:
f ( n)
c  g ( n)
lim
 lim lim
 lim с  0
n  g ( n)
с 0 n  g ( n )
с 0
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
6
Асимптотические соотношения. (пример 2)
Докажем следующее асимптотическое соотношение:
Дано:
f ( n)
lim
0
f (n) = o(g(n)) 
n  g ( n)
f ( n)
lim
0
n  g ( n)
Доказательство:
Поскольку предел функции h(n)= f (n)/g(n) равен 0, значит эта функция является
бесконечно малой. То есть f (n) растет медленнее, чем g(n), а значит найдется
такое положительное n0, что для любой положительной константы c, будет
выполняться неравенство:
f (n)  c  g (n) при n  n0
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
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)
f ( x)
 lim
g ( x) xa 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 2  n)
a) f (n) 
, g ( n)  6n
2
2
3
d) f (n)  n  3n  4, g (n)  n
b) f (n)  n  2 n , g (n)  n n
e)
f (n)  n  log 2 n, g (n)  n
f)
f (n)  n log 2 n, g (n) 
c) f (n)  n  n log 2 n, g (n)  n
3
© Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ»
n 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
n , log2 n, (3/2)n
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
Download