Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » С.А. Абрамов - Вычислительная сложность алгоритмов

С.А. Абрамов - Вычислительная сложность алгоритмов, страница 4

PDF-файл С.А. Абрамов - Вычислительная сложность алгоритмов, страница 4 Вычислительная сложность алгоритмов (38770): Лекции - 5 семестрС.А. Абрамов - Вычислительная сложность алгоритмов: Вычислительная сложность алгоритмов - PDF, страница 4 (38770) - СтудИзба2019-05-10СтудИзба

Описание файла

PDF-файл из архива "С.А. Абрамов - Вычислительная сложность алгоритмов", который расположен в категории "". Всё это находится в предмете "вычислительная сложность алгоритмов" из 5 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 4 страницы из PDF

Для оценки количествашагов алгоритма Евклида, которое совпадает с количеством необходимых делений состатком, хорошо было бы найти такую функцию λ (ai−1 , ai ) , для которой выполнялись быследующие условия:1. λ (ai −1 , ai ) ≥ 0 ;2. C E (ai−1 , ai ) ≤ λ (ai−1 , ai ) ;3. на каждом шаге алгоритма Евклида она уменьшается хотя бы на 1.Рассмотрим функцию λ (k , l ) = ν (k ) +ν (l ) − 2 , где ν (x) соответствует битовой длине x .Очевидно, что она удовлетворяет первым двум сформулированным условиям.

Убедимся всправедливости третьего. Справедливо следующееУтверждение. Пусть k, l ∈ N , k > l , r — остаток от деления1. ν (k ) > ν (r ) ;2. λ (k , l ) > λ (l , r ) .Доказательство:1. k = ql + r , q ≥ 1 ⇒ k ≥ l + r > 2r ⇒ ν (k ) > ν (l ) ;17k. Тогдаl2. ν (k ) > ν (r ) ⇒ ν (k ) + ν (l ) − 2 > ν (l ) + ν (r ) − 2 ⇔ λ (k , l ) > λ (l , r ) , что и требовалосьдоказать.C E (a0 , a1 ) ≤ λ (a0 , a1 ) = ν (a0 ) + ν (a1 ) − 2C E (a0 , a1 ) = CE (a1 , a2 ) + 1 ≤ ν (a1 ) + ν (a2 ) − 1 ≤ 2ν (a1 ) − 1123≤ν ( a1 )TE (a1 ) = max C E (a0 , a1 ) ≤ 2ν (a1 ) − 1 = 2 ⎣log 2 a1 ⎦ + 1a0 ≥a1Итак, для сложности алгоритма Евклида была получена оценка: TE (a1 ) = O (log a1 ) . Возникаетвопрос: можем ли мы улучшить эту оценку? Ответ: нет, эта оценка точная.

Длядоказательства точности оценки построим последовательность входов a0(1) , a1(1) , a0( 2) , a1( 2) ,(a)(()) (), a1( 3) , … такую, что для неё будет выполняться C E (a0( n ) , a1( n ) ) = Ω log a1( n ) при n → ∞ . Длянаших целей хорошо подойдут числа Фибоначчи: F0 = 0 , F1 = 1 , Fn+2 = Fn+1 + Fn , т.е.последовательность 0, 1, 1, 2, 3, 5, 8, … Применяя алгоритм Евклида к паре (Fn+1 , Fn )получим ровно n делений: C E (Fn+1 , Fn ) = n .

Используем формулу Бене:( 3)0Fn =()1 n1+ 5φ − (− φ )−n , где φ == 1,61803... («золотое сечение»).25Откуда получаем, что φ n = 5 Fn (1 + o(1) ) при n → ∞ ⇒ n = logφ Fn + O(1) . Тогда для затраталгоритма получаем: C E ( Fn+1 , Fn ) = n = logφ Fn + O(1) = Ω(log Fn ) . Следовательно, оценкаTE (a1 ) = O (log a1 ) точна. Более того, можно показать, что TE (a1 ) = Θ(log a1 ) . Для этого1докажем, что TE (a1 ) > logφ a1 + γ .4⎡FF ⎤Рассмотрим систему вложенных сегментов Φ1 ⊃ Φ 2 ⊃ Φ 3 ⊃ ... , где Φ n = ⎢ 2 n , 2 n+1 ⎥ .⎣ F2 n−1 F2 n ⎦Φ1Φ2...1F2F12F4F3φF5F4F3F2Для чисел Фибоначчи справедливо равенство:Fn2 − Fn−1Fn+1 = (−1) n , n = 1,2,...которое легко устанавливается по индукции (см.

задачу 24). Используя это равенство, длядлины сегмента Φ n получаем выражение:Φn =F2 n+1 F2 nF F − F22n1−= 2 n+1 2 n−1=F2 n F2 n−1F2 n F2 n−1F2 n F2 n−11811≤ Φn =, а дляa1F2 n F2 n−11=⇔ a1 < F2 N +1F2 N + 2 .F2 N +1 F2 N + 2Так как Φ n → 0 при n → ∞ , a1 > 1 ⇒ ∃N : ∀n ≤ N выполняется1> Φ N +1a1N + 1 неравенство уже не выполняется, т.е.Используем формулу Бене и получим:()()1 2 N +21 2 N +1φ− (−φ ) −2 N −1 ⋅φ− (−φ ) −2 N −2 < cφ 4 N55a1 < F2 N +1 F2 N +2 =1logφ a1 − logφ c , что доказывает оценку TE (a1 ) = Θ(log a1 ) .

Для сложности в среднем412 ln 2ln a1 + O(1) .можно получить оценку TE (a1 ) =2⇒N>πРасширенный алгоритм Евклида (EE).Можно показать, что ∃s, t ∈ Z : sa0 + ta1 = НОД(a0 , a1 ) . В частности, если a0 и a1 взаимнопростые, то ∃s, t ∈ Z : sa0 + ta1 = 1 .Пусть в алгоритме Евклида уже найдены a0 , a1 ,..., ai , 1 ≤ i ≤ n − 1 и пусть найдены s0 , t0 ;s1 ,t1 ; … ; si , ti такие, что s0 a0 + t0 a1 = a0 ; s1a0 + t1a1 = a1 ; … ; si−1a0 + ti−1a1 = ai−1 ; si a0 + ti a1 = ai .ai−1 = qi ai + ai+1 ⇒ ai+1 = ai−1 − qi ai = si−1a0 + ti−1a1 − qi ( si a0 + ti a1 ) = ( si−1 − qi si )a0 + (ti−1 − qi ti )a1 , т.е.1424314243si +1ti +1si+1 = si−1 − qi si ; ti+1 = ti−1 − qi ti , при этом s0 = 1 , t0 = 0 , s1 = 0 , t1 = 1 .Пример. a0 = 39; a1 = 15Остатки, получаемые алгоритмом Евклида: 9, 6, 3, 0.s, t: 1,-2; -1,-3; 2,-5; ⇒ 2 ⋅ 39 + (−5) ⋅15 = 3 = НОД(39,15) .Алгоритм Евклида, в котором дополнительно определяются числа ti , si буден называтьрасширенным алгоритмом Евклида (EE).

Не трудно видеть, что для его сложностисправедлива оценка: ё TEE (a1 ) < 6 log 2 a1 + 3 , т.е. всё утроилось.Можно также найти числа sn+1 , tn+1 : sn+1a0 + tn+1a1 = 0 (для примера, рассмотренного выше,sn+1 = s5 = −5; t5 = 13 ).Для чисел si , ti можно доказать следующий факт: s1 < s2 < ... < sn+1 , t1 < t2 < ... < t n+1 .Кроме того, sn +1 =a1a0, t n+1 =, тогда sk < a1 , tk < a0 , k = 1,2,..., n .НОД(a0 , a1 )НОД(a0 , a1 )Бинарный поиск (BS = binary search).Есть массив x1 ,..., xn , элементы которого упорядочены по возрастанию. И есть ещё одинэлемент y, для которого нужно найти место в этом массиве такое, что после вставкиэлемента y полученный массив был упорядоченным.

Существуют следующие варианты длявставки y:y ≤ x1 ,1x1 < y ≤ x2 ,2x2 < y ≤ x3 , ... xn−1 < y ≤ xn , xn < yn3n+1Задачей алгоритма является выдача числа от 1 до n + 1 , соответствующего вариантуправильного расположения y.19На псевдокоде алгоритм выглядит следующим образом:p:=1; q:=n-1;while p<q do⎢ p + q⎥;⎣ 2 ⎥⎦r:= ⎢odif xr<y then p:=r+1 else q:=r fiНе трудно видеть, что каждый шаг алгоритма переводит рассматриваемую задачу для⎢k ⎥⎢k ⎥массива длины k к задаче для массива длинны ⎢ ⎥ или ⎢ ⎥ − 1 . Введём функцию⎣2⎦⎣2⎦λ (k ) = ν (k ) , тогда на каждом шаге алгоритма λ (k ) будет убывать хотя бы на 1.

Если y ≤ x1 ,то λ (n) = ⎣log 2 n ⎦ + 1 = TBS (n) = ⎡log 2 (n + 1)⎤ .Сортировка бинарными вставками.Рассмотрим алгоритм сортировки массива, основанный на алгоритме бинарного поиска.Алгоритм заключается в следующем: создается новый массив, который формируется изэлементов исходного, каждый новый элемент занимает место, определяемое алгоритмомбинарного поиска. Тем сам на i-м шаге уже имеется упорядоченный массив из i − 1 элемента,в который вставляется i-й элемент исходного массива.n −1nl =0k =1nДля сложности в худшем случае имеем: TB (n) = ∑ ⎡log 2 (l + 1)⎤ = ∑ ⎡log 2 k ⎤ = ∑ log 2 n + O(1) .k =1n −nИз курса математического анализа известна формула Стирлинга: n!= n en∑ logk =122πn (1 + o(1) ) ⇒n = log 2 n!= n log 2 n + O(n) ⇒ TB (n) = n log 2 n + O (n) .Сортировка фон Неймана (vN).Имеется массив x1 ,..., xn , который требуется упорядочить.

Пусть на каком-то шаге алгоритмамассив разбивается на некоторое число упорядоченных сегментов. Тогда на следующемшаге сегменты объединяются парами и элементы внутри новых сегментов упорядочиваются.Далее опять происходит слияние сегментов по два и т.д. Причём для слияния сегментовиспользуется вспомогательный массив такой же длины, что и исходный. Схематичнодействие алгоритма можно изобразить следующим образом:⇒⇒При слиянии сегментов используется информация о том, что каждый из сливаемыхсегментов сам по себе уже упорядочен, поэтому для слияния и одновременногоупорядочивания двух сегментов длины k необходимо менее 2k операций сравнения, т.к.новый сегмент длины 2k формируется в новом массиве (новый сегмент формируетсяпоэлементно из меньшего из наименьших нерассмотренных элементов исходных сегментов).На первом шаге исходный массив делится на сегменты длины 2 (за исключением, бытьможет, одного сегмента длины 1 в случае, если исходный массив имеет нечётное количествоэлементов), на втором шаге — длины 4 (если не было парного какому-то сегменту, то ещё неболее одного сегмента длины 1, 2 или 3) и т.д.

Таким образом, число этапов (перебросок) всортировке фон Неймана будет равно ⎡log 2 n⎤ . Т.к. число присваиваний на каждом этапе20равно n, то общее число присваиваний, необходимых алгоритму, будет равно n ⎡log 2 n ⎤ . Длячисла сравнений получаем следующую оценку: TvN (n) < n ⎡log 2 n⎤ .Завершимость алгоритмов.Рассмотрим следующий пример.Пример. (блуждание частицы по целым числам) В начале координат имеется частица,которая может двигаться на единицу влево или вправо с одинаковой вероятностью.Оказывается, что ∀m ∈ Z частица рано или поздно попадёт в точку m , причём свероятностью 1. Но среднее необходимое для этого время (даже если m = 1 ) равно ∞ .Алгоритм кратных карт.Имеется колода карточек, на каждой из которых с одной стороны пишутся вопросы, с другой— ответы.

Все вопросы разной сложности. Обучаемый перебирая по очереди все карточкидолжен отвечать на вопросы, если ответ неверный, то можно посмотреть ответ на обороте.Если обучаемый отвечает на вопрос карточки, то она изымается, если не отвечает, токарточка возвращается в колоду, плюс добавляется еще одна такая же.Рассмотрим стратегию «двоечника», когда обучаемый всегда отвечает неправильно.Пусть все вопросы в колоде имеют кратность > 1 кроме одной.

Если m — суммарнаякратность карт, то вероятность вытащить первый вопрос (вопрос кратности 1) на первом1шаге равна. Вероятность вытащить первый вопрос на i-м шаге равна:mm −1 mm+i−2 1m −1⋅⋅ ... ⋅⋅=m m +1m + i − 1 m + i (m + i − 1)(m + i )Тогда вероятность того, что рано или поздно вытащат первый вопрос, будет равна:P=∞11+ (m − 1)∑mi =1 ( m + i − 1)( m + i )Покажем, что полученный ряд сходится:n1111111→∞=−⇒ Sn = ∑= −⎯n⎯⎯→m m+nm(m + i − 1)(m + i ) m + i − 1 m + ii =1 ( m + i − 1)( m + i )⇒P=11+ (m − 1) = 1mmЧто соответствует тому, что первый вопрос рано или поздно будет вытащен с вероятностью1.

Посмотрим, какое время для этого потребуется:∞T = (m − 1)∑i =1i(m + i − 1)(m + i )Не трудно видеть, что полученный ряд расходится. Это соответствует тому, что длявытаскивания первого вопроса потребуется бесконечное время.Пусть теперь u ≥ 2 карточки имеют кратность 1. Тогда для вытаскивания вопроса скратностью 1 потребуется времени∞T =∑i =1i + u +1(i + m)(i + m + 1)...(i + m + u )Полученный ряд, как не трудно видеть, сходится, а значит, мы увидим вопрос с кратностью1. Далее по индукции легко установить, что пока u ≠ 1 мы увидим все вопросы.21Допустим, что программа содержит какие-то цифры и её нужно исследовать на сложность.Рассмотрим пример.Пример.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5288
Авторов
на СтудИзбе
417
Средний доход
с одного платного файла
Обучение Подробнее