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

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

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

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

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

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

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

Для доказательства достаточно положить a0 = Fn ; a1 = Fn −1 , изатраты алгоритма будут примерно равны log 22 a0 , т.к. для чисел Фибоначчи каким бы не былалгоритм деления, он будет эквивалентен вычитанию.Более того, можно доказать теорему о нижней границе класса алгоритмов Евклида(отличающихся алгоритмом деления) и показать, что она равна log 22 a0 .33Модулярная арифметика.Все вычисления производятся по модулю некоторого числа.Определение. Число a сравнимо с b по модулю k, если число k делит разность (a − b ) .Обозначение: a ≡ b(mod k ) .Утверждение.(i)Отношение сравнимости по модулю k является отношением эквивалентности.(ii) Если a1 ≡ b1 (mod k ) , a2 ≡ b2 (mod k ) , тоa1 + a2 ≡ b1 + b2 (mod k ) , a1 − a2 ≡ b1 − b2 (mod k ) , a1a2 ≡ b1b2 (mod k ) .(iii) Каждое число a сравнимо по модулю k с одним и только одним числом измножества {0, 1, ...

, k − 1} .Отношение эквивалентности разбивает множество целых чисел на непересекающиесяклассы, причём количество этих классов равно k. Возьмём по одному представителю изкаждого класса: {a0 , a1 , ... , ak −1} — полная система вычетов по модулю k. Система⎧⎢ k ⎥⎢ k ⎥⎫I = {0, 1, ... , k − 1} — каноническая система вычетов. S = ⎨⎢− ⎥, ... , − 1, 0, 1, ... , ⎢ ⎥ ⎬ —⎣ 2 ⎦⎭⎩⎣ 2 ⎦симметричная система вычетов. В курсе линейной алгебры доказывалось, что Z k являетсякольцом вычетов по модулю k. При этом вычеты называются изображениями. При сложениискладываем изображения, если остаёмся в рамках канонической системы, то всё в порядке,если получаем число ≥ k , то вычитаем k. Противоположный a элемент определяется какk − a . Поэтому для битовых затрат операций сложения и вычитания имеем оценку O(m) ,где m = ν (k ) .Если для умножения используем алгоритм «наивное» умножения, то затраты допускаютоценку O m 2 .( )Если k — простое, то Z k является полем, если k не является простым, то Z k — это кольцо сделителями нуля.Сосредоточимся на случае k = p — простое число.

Покажем, откуда следует существованиеобратного элемента. Рассмотрим каноническую систему вычетов: {0, 1, ... , p − 1} . Израсширенного алгоритма Евклида следует, что найдутся такие целые s и t, что будет верноsp + ta = 1 ⇔ ta ≡ 1(mod p) . Следовательно, t будет обратным к a. Но t является целым и,возможно, не входит в систему. Было показано, что t < p , и t может быть отрицательным.Поэтому, если t ≥ 0 , то всё в порядке и t входит в рассматриваемую систему вычетов. Еслиt < 0 , то прибавим p и попадём в рамки системы (ещё не более одной операции).

Затраты накаждом шаге расширенного алгоритма Евклида для перехода от si −1 к si и от ti −1 к tiсравнимы с затратами на деление с остатком. Но расширенный алгоритм Евклида позволяетвычислять только t и не тратить операции на вычисление s. Но для O log 2 p это не имеетзначения.()Пример. a = 5 , p = 132 ⋅ 13 + (−5) ⋅ 5 = 1 ⇒ для числа 5 обратным будет (−5) ⇒ добавим 13 и получим(−5) + 13 = 8 и имеет место сравнение 8 ⋅ 5 ≡ 1(mod 13) .34Как следует из расширенного алгоритма Евклида, обращать можно не только по простомумодулю, лишь бы a и p были взаимно простые.Теорема (малая теорема Ферма). Пусть p — простое, u — целое, u ≠ 0 ⇒ u p −1 ≡ 1(mod p) ,при условии, что p не делит u.Условие p — простое является существенным: Например, u = 5 , p = 6 ⇒ 55 ≡/ 1(mod 6) . Такчто расширенный алгоритм Евклида в этом плане лучше.Проблемой является распознавание простоты числа такое, чтоб его сложность былаполиноминально ограниченной: O m d , m = ν (n) или, что то же самое, O(log d n ) .

Можнопопробовать зацепиться за малую теорему Ферма: u p ≡ u (mod p) ⇒ p — простое. Т.е. можнодля возведения в степень воспользоваться бинарным алгоритмом возведения в степень, нодля сокращения затрат брать результат по модулю. Далее проверить условия теоремы и датьответ. Но такой алгоритм, вообще говоря, неверный, т.к.

существуют составные числаКармайкла (бесконечно много), которые не ловятся таким алгоритмом.( )Тем не менее, в 2002 году три индийских математика — Агравал, Кайал и Саксена —разработали алгоритм определения простоты числа с полиномиальной сложностью. Этоталгоритм базируется на следующем утверждении:Утверждение. Пусть u, n ∈ N , u ⊥ n (взаимно простые). Тогда n является простым, если итолько если (x − u ) ≡ x n − u (mod n) .nДоказательство. Необходимость.

Пусть n — простое и, для определённости, нечётное (дляn = 2 проверяется непосредственно). Сравним коэффициенты при степенях x k для 1 < k < n .В правой части очевидно все коэффициенты равны нулю, а в правой из формулы биномаНьютона получаем (−1) k Cnk a n − k . Т.к. для числа сочетаний верно Cnk ≡ 0(mod n) (см.

задачу42), то получаем, что (−1) k Cnk a n−k ≡ 0(mod n) , т.е. коэффициенты в левой и правой частисравнимы с нулём по модулю n. Для k = n доказывать нечего, проверим свободный член:надо показать, что (−u ) n ≡ −u (mod n) , но это следует непосредственно из малой теоремыФерма.Достаточность докажем от противного. Пусть n — составное, тогда найдётся такое q,которое будет являться делителем n. Рассмотрим ещё k такое, что q k ещё делит n, а q k +1 уженет. Рассмотрим число сочетаний из n по q:Cnq =n[(n − 1) ⋅ ...

⋅ (n − q + 1)]q!Ни один из множителей в квадратных скобках не может делиться на q. В итоге послесокращения должно получиться целое число, которое на q k уже не делится (т.к. одно q иззнаменателя сократится с n). q k ⊥ u n − q , и коэффициент в правой части (−1) n − q u n − qCnq x q несравним с нулём по модулю n, что противоречит утверждению. Полученное противоречиезавершает доказательство.Просто построить алгоритм определения простоты числа на основе доказанногоутверждения нельзя, но использовать его как основу вместо малой теоремы Ферма вполнереально.Итак, получаем следующий способ определения простоты числа: возьмём u = 1 , раскроемскобки и посчитаем остаток от деления на n. Но после раскрытия скобок получим n + 1слагаемое, и нужно будет поработать со всеми ими.

Откуда для сложности алгоритма будетверна оценка Ω(n ) , а n ≈ 2m и всё хорошо, но сложность экспоненциальная.35()Посмотрим, что предлагают авторы. Рассмотрим сравнение: (x − u ) ≡ x n − u mod x r − 1, n ,nкоторое означает следующее:делятся на n.(x − u )n()− x n + u = Q( x) x r − 1 + S ( x) и все коэффициентыЧтобы двигаться к полиномиальности, нужно чтобы r было маленьким. Возводить в степеньнадо бинарным алгоритмом возведения в степень, каждый раз беря результат по модулю.Во-первых, r берётся не «с потолка», а совершенно конкретным, допуская оценку r = O(m6 ) .Во-вторых, u тоже не является произвольным. Авторы показывают, что достаточнопроверить сравнительно небольшой набор, допускающий оценку O m r ~ m 4 . Тогда, еслииспользовать эти r и u, то по необходимому и достаточному условию можно распознатьпростоту числа, и сложность будет полиномиальной.(36)Об одном классе рекуррентных соотношений («разделяй ивластвуй»)Мы будем рассматривать рекурсивные алгоритмы.

Рекурсивные соотношения дляисследования сложности таких алгоритмов являются эффективным методом. Основой будутлинейные рекурренции с постоянными коэффициентами и, возможно, с правыми частями.Для начала рассмотрим «игрушечный» алгоритм построения множества Vn , содержащего всеположительные целые числа, десятичные записи которых таковы, что сумма их цифр равна n.V1 = {1} . Упростим задачу, рассматривая только такие цифры, десятичные записи которыхсостоят только из единиц и двоек: V2 = {11, 2} , V3 = {111, 21, 12} .

Задача ставится следующимобразом: дано n, и надо построить Vn .Множество Vn можно разделить на 2 непересекающихся подмножеств: на конце чиселпервого подмножества стоят единицы, на конце цифр второго — двойки. Если откинутьпоследнюю цифру, то получим Vn −1 и Vn − 2 ( n > 2 ). Тем самым получаем алгоритмпостроения Vn : к числам из Vn −1 нужно приписать «1», к числам из Vn − 2 — «2» и объединитьполученные множества.Обозначим через vn количество элементов в Vn , тогда v1 = 1 , v2 = 2 , vn = vn −1 + vn − 2 . Замечаем,что vn совпадает с (n + 1) -м числом Фибоначчи, т.е.

vn = vn −1 + vn − 2 = Fn +1 .Попробуем определить y (n) — число операций над числами (приписывание «1» или «2»).Для y (n) мы можем написать следующее рекуррентное соотношение:y (n) = y (n − 1) + y (n − 2) + Fn + Fn −1 ⇒14243Fn +1y (n) − y (n − 1) − y (n − 2) = Fn +1 , причём y (1) = y (2) = 0Обозначим затраты на объединение двух множеств через z (n) и, аналогично, получим дляz (n) следующее рекуррентное соотношение:z (n) − z (n − 1) − z (n − 2) = 1 ,(*)z (1) = z (2) = 0 (предполагаем, что V1 и V2 нам даны).Непосредственно видно, что − 1 является частным решением соотношения (*).

Частныерешения можно угадывать, но можно воспользоваться специальным методом их нахождения,который очень сильно похож на метод нахождения частных решений линейныхдифференциальных уравнений с постоянными коэффициентами. Суть метода заключается вследующем: рассмотрим однородное рекуррентное соотношениеad y (n) + ad −1 y (n − 1) + ... + a0 y (n − d ) = 0Составим по нему характеристическое уравнение, которое имеет вид:ad λd + ad −1λd −1 + ... + a0 = 0 ,которое, в свою очередь, будет иметь корни λ1 , λ2 , ... , λk (включая комплексные) сkкратностями m1 , m2 , ...

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