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