ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем ОСНОВЫ ПРОГРАММИРОВАНИЯ Асимптотический анализ Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» Математический аппарат Для упрощения сумм можно воспользоваться следующими формулами ( где А, 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 iL i 0 N ( N 1) i 2 i 1 i (i L) N N L 1 iL 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) xa 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 xa x a xa xa 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