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

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

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

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

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

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

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

придётся произвести сравнение каждогоэлемента с каждым в случае, если изначальный массив упорядочен. Найдём сложность всреднем TQS (n) алгоритма быстрой сортировки. Для этого введём случайную величину ξ n (a) ,отражающую общее число сравнений, необходимых алгоритму для упорядоченияперестановки a.

Не трудно видеть, что TQS (n) в этом случае будет выражаться формулойTQS (n) = Eξ n =1∑ ξ n (a) .n! a∈Π nРазложим пространство Π n следующим образом: Π n = K n1 + ... + K nn , где события K niзаключаются в том, что разбивающий элемент после разбиения занимает i-ю позицию. Таккак в качестве разбивающего элемента всегда берём первый, то события K ni будут1совпадать с событиями Fni ,1 , откуда Pn K ni = Pn Fni ,1 = , i = 1,..., n . После разбиенияn′′′′исходная перестановка a разбивается на a и a , причём a ∈ Π i−1 , a′′ ∈ Π n−i .( )( )Введём случайные величины ξ n′ (a) = ξi−1 (a′) и ξ n′′(a) = ξ n−i (a′′) , тем самым мы останемся втом же вероятностном пространстве.}⎛ на разбиение⎜TQS (n) = Eξ n = ∑ E ξ n K Pn K = ∑ n − 1 + E ξ n′ K ni + E ξ n′′ K ni⎜i =1i =1⎝n1= n − 1 + ∑ E ξ n′ K ni + E ξ n′′ K nin i=1n(in) ( )[(Используя очевидный факт K ni =∑Gp∈Π i −1) ∑ξ() ∑ξE ξ n′′ K ni =получаемустанавливается, чтоEξ n = n − 1 +) ()]) (⎞)⎟⎟ ⋅ 1n =⎠, получаем:(E ξ n′ K ni =Откудаi, pn(ninp∈Π i −1p∈Π n −ii −1( p) ⋅1= Eξ i−1 ,(i − 1)!n −i( p) ⋅1= E ξ n −i .(n − i )!1 n∑ (Eξi−1 + Eξ n−i )n i=1nnn −1i =1i =1k =0∑ Eξi−1 = ∑ Eξ n−i = ∑ Eξ kможно переписать в следующем виде:13⇒.НепосредственнойTQS (n) = Eξ n = n − 1 +проверкой2 n −1∑ Eξk , чтоn k =0TQS (n) = n − 1 +2 n−1∑ TQS (k ) ,n k =0(*)причём, как не трудно видеть, TQS (0) = 0 (для упорядочения массива нулевой длины нетребуется ни одного сравнения).

Тогда, для n ≥ 1 , получаемTQS (n − 1) = n − 2 +2 n−2∑ TQS (k ) .n k =0(**)Домножим (*) на n и вычтем (**), умноженное на (n − 1) , тогда получим:nTQS (n) − (n − 1)TQS (n − 1) = n(n − 1) − (n − 1)(n − 2) + 2TQS (n − 1) ⇔144442444432 ( n −1)nTQS (n) − (n + 1)TQS (n − 1) = 2(n − 1)⇒Введём обозначение t (n) =t (n) − t (n − 1) =TQS (n)n +1TQS (n)n +1−TQS (n − 1)n=2(n − 1).n(n + 1), тогда предыдущее равенство перепишется в виде:2(n − 1), причём t (0) = 0 .

Известно, что если t (n) − t (n − 1) = ϕ (n) для всехn(n + 1)n ≥ n0 , тогда t (n) = ϕ (n0 ) +n∑ϕ (k ) (доказывается по индукции) ⇒ для t (n) получаем:k =n0 +1nnk −111= 2∑− 2∑.k =1 k ( k + 1)k =1 k + 1k =1 k ( k + 1)nt ( n ) = 2∑nДля первого ряда из математического анализа известна оценка:1∑ i = ln n + O(1) , второй рядi =1сходится, а значит, может быть оценён через O(1) , в итоге получаем:t (n) = 2(ln n + O(1) ) − O(1) = 2 ln n + O (1) ⇒ TQS (n) = 2n ln n + O(n) .Получилась довольно приятная оценка, хоть и с участием логарифма. Но, как говорилЛандау, «Курица не птица, логарифм не бесконечность».Для пространственной сложности верно SQS (n) = SQS (n) = O(1) .Рассмотрим пространственные затраты стека: т.к. алгоритм работает с отложеннымизадачами, то для его реализации потребуется стек, в который будут помещаться пары ( p, q)— сегменты массива, которые необходимо сортировать.

Оказывается (что будет доказанониже), что если из двух получающихся после разбиения частей для обработки братьменьшую, откладывая бόльшую, то затраты не превзойдут log 2 n .Утверждение. Если бинарная рекурсивная сортировка такова, что после разбиения длясортировки выбирается меньшая часть, то количество отложенных в стеке задач непревзойдёт log 2 n .14n, при этом длинна длинного2n≤ n − 1 .

Пусть x′ — меньшая часть, длина которой равна n′ ≤ , x′′ — большая, длинной2n′′ ≤ n − 1 . Для сортировки выбираем x′ , x′′ откладывая в стек, тогда в стек попадётmax{log 2 n′ + 1, log 2 n′′} ≤ log 2 n , что и требовалось доказать.Доказательство: после разбиения длина короткого массива ≤Приведём алгоритм быстрой сортировки на псевдокоде:qsort(k,l):if k<l–1 thenxk выбирается в качестве разбивающего элемента,и выполняется разбиение xk,…,xl;пусть i — индекс, получаемый разбивающимэлементом после разбиения;if i–k–1<l–i then qsort(k,i-1); qsort(i+1,l)else qsort(i+1,l); qsort(k,i-1)fifiРандомизированные алгоритмы.Рассмотрим функцию random(N), возвращающую случайное число от 0 до N − 1 , с1вероятностью выпадения каждого.

Введём элемент рандомизации в алгоритм быстройNсортировки, тогда на псевдокоде он перепишется следующим образом:qsort(k,l):if k<l–1 thenm:=k+random(l-k+1);xm выбирается в качестве разбивающего элемента,и выполняется разбиение xk,…,xl;пусть i — индекс, получаемый разбивающимэлементом после разбиения;if i–k–1<l–i then qsort(k,i-1); qsort(i+1,l)else qsort(i+1,l); qsort(k,i-1)fifiДадим другую формулировку алгоритма быстрой сортировки:Пусть имеется полоска клетчатой бумаги размером 1× n клеток, которую требуетсяразрезать на отдельные клетки. Разрезать может только специальный разрезальщик, причемза одну операцию он может вырезать одну любую клетку (с края или из середины). Привырезании клетки из середины полоска разбивается на две. За одно отрезание разрезальщикберёт (n − 1) рубль, где n — длинна полоски, из которой вырезается клетка.

Цель —порезать всю полоску на клетки.В такой формулировке сложностью алгоритма является суммарное количество рублей,необходимых для работы разрезальщику.Сценарий для разрезаний удобно изобразить в виде двоичного дерева. Для n = 3 (полоска из3-х клеток) получаем следующие варианты сценариев (3-сценарии):3333322220000111100110015Смежные вершины здесь обозначены числами, соответствующими количествам остающихсяклеток с одной и другой стороны, после того как одна из исходных будет вырезана.Любой n-сценарий получается из левого (i − 1) -сценария и правого (n − i ) -сценария:ni−1n−iОбозначим через S n множество всех n-сценариев. При фиксированном n всем n-сценариямприписываются следующие вероятности:− если n = 0 или n = 1 , то Pn ( s ) = 1 ;− если n > 1 , то Pn ( s ) =Покажем,чтотак1Pi−1 ( s′) Pn−i ( s′′) .nвведённаявероятностьудовлетворяетусловию∑ P ( s) = 1s∈S nn.Доказательство проведём по индукции: для n = 0 и n = 1 утверждение верно поопределению; пусть для всех для k < n выполнено ∑ Pk ( s ) = 1 , покажем что для ns∈S kутверждение тоже верно:n∑ P (s) = {по определению} = ∑ ∑s∈S nni =1 s′∈Si −1s′′∈S n −i1Pi−1 ( s′) Pn−i ( s′′) =n⎛⎞⎜⎟n ⎜⎛⎞⎟ 1 n⎞ ⎛1= ∑ ⎜ ⎜⎜ ∑ Pi−1 ( s′) ⎟⎟ ⋅ ⎜⎜ ∑ Pn−i ( s′′) ⎟⎟ ⎟ = ∑1 ⋅1 = 1 .n i=1 ⎜ ⎝ s′∈Si −1⎟ n i=1s′′∈Sn −i424 434⎠ ⎝1442443⎠ ⎟⎜⎜ 1=1 по предполо=1 по предполо⎟⎝ жению индукции жению индукции ⎠Введём случайную величину χ n ( s ) — затраты алгоритма для сценария s.

Наряду с нейрассмотрим также случайные величины χ n′ ( s ) = χ i−1 ( s′) и χ n′′( s ) = χ n−i ( s′′) , определённые натом же вероятностном пространстве, что и χ n ( s ) .Изформулировкиалгоритмаследует,чтоχ n ( s) = n − 1 + χ n′ ( s ) + χ n′′( s) .Разложимвероятностное пространство S n следующим образом: S n = S n1 + ... + S nn , где S ni соответствуеттому, что левый сценарий является (i − 1) -сценарий, а правый — (n − i ) -сценарий. Не трудно1проверить, что Pn ( S ni ) = , откуда получаем:nn() 1n = n − 1 + 1n ∑ [E(χ ′ S )+ E(χ ′′ S )] = n − 1 + 1n ∑ (EχnEχ n = ∑ E χ n S ni ⋅i =1i =1= n −1+т.е. получаем, что Eχ n = n − 1 +ninninni =1i −1+ E χ n −i ) =2 n2 n−11nEχ=−+∑ n −i∑ Eχ kn i=1n k =02 n−1∑ Eχ k , Eχ 0 = 0 .

Откуда, аналогично предыдущему случаю,n k =0~получаем: TQS (n) = Eχ n = 2n ln n + O(n) . В итоге получилось, что введение элементарандомизации никак не отразилось на сложности в среднем алгоритма быстрой сортировки.16Способы ускорения алгоритма быстрой сортировки.Если на каждой итерации выбирать 3 случайных элемента и брать серединный в качестверазбивающего, то в итоге сложность в среднем так модифицированного алгоритма составит12n ln n + O(n) .7Алгоритм Евклида (E).Рассмотрим алгоритм Евклида нахождения наибольшего общего делителя (НОД) двух целыхположительных чисел a0 ≥ a1 , которые будут являться входом алгоритма.

Алгоритмзаключается в последовательных делениях с остатком:a0 = q1a1 + a2a1 = q2 a2 + a3...an−3 = qn−2 an−2 + an−1an−2 = qn−1an−1 + anan−1 = qn anТогда an будет являться НОД, что легко показать по индукции:НОД(a0 , a1 ) = НОД(a1 , a2 ) = ... = НОД(an ,0) = an .Затраты алгоритма будем определять числом необходимых делений с остатком C E (a0 , a1 ) .Не трудно видеть, что C E (a0 , a1 ) ≤ a1 , т.к. после первого деления остаток остаётся меньше a1 ,а при каждом следующем делении остаток будет меньше предыдущего как минимум на 1. Всвязи с этим в качестве входа можно взять только второе меньшее число a1 , тогда TE (a1 ) ≤ a1 .Один шаг алгоритма Евклида переводит пару ai−1 , ai в пару ai , ai+1 .

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