Главная » Просмотр файлов » 1626435697-9d9ede204f9baad60159c2d6531787c7

1626435697-9d9ede204f9baad60159c2d6531787c7 (844297), страница 66

Файл №844297 1626435697-9d9ede204f9baad60159c2d6531787c7 (Хопкрофт, Ульман 1979 - Построение и анализ вычислительных алгоритмов) 66 страница1626435697-9d9ede204f9baad60159c2d6531787c7 (844297) страница 662021-07-16СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 66)

Программа вычисления целого числа по его модульному представлению. ге 2/ Метод. Сначала вычисляем до/ — — Бр, как в алгоритме 8.4'). «о=1 Затем запускаем программу на рис. 8.4 в предположении, что в ней гь 2/-1 3// = ; — Е Ч//бана П Ра Пример 8.6. Пусть р„р„р„р, равны соответственно 2, 3, 5, 7 и (н„и„и„нз)=(1, 2, 4,3). Тогда г/го — — рг для 0~1 4, г/ог=6, дог=35 и г/оз=р=210. Далее, г(о (Зоо5а7) ' опоо( 2 = 1, поскольку 1 и 1 05 = — 1 (гпоо( 2), 11,=(2и5и7)- пгог$3=1, поскольку 1и70 =1 (п1ог(3), с(о=(2и3н7) ' нгой5=3, поскольку За 42 =1 (пгой5), 11,=(2и3и5) ' пзо67=4, поскольку 4и30 — 1 (п1ой7). Таким образом, в строке 1 вычисляются аоо=1и1= 1, зхо=1" 2= 2 зоз=3и4=12 аоо=4и3=12 Затем выполняется цикл в стрсжах 3, 4 с 1=1.

Здесь 1 принимает значения 0 и 2; следовательно, вод = зооирхо + зхоиЧоо = 1и3+ 2и2 = 7 о зы = зооиозо+ азово/оо = 12и7 + 12и5 = 144 Далее выполняется цикл в строках 3, 4 с /=2, а 1 принимает только значение О. Получаем зоо = зогао/ос + зогио/ог = 7и35+ 144»6 = 1109. ') Эаметим, что числа е// зависят только от чисел рь Можно включить их во входные данные, а не вычислять, ибо разрешается предварительная обработка. Но легко показать, что на порядок времени работы не влияет, вычислены заранее зги е// или нет. 331 Гл. а АРиФметические ОЛЯРАции Ряс.

8.6. Вычисления яз прнмера 8.6. Таким образом, результатом строки 5 будет 1109 пюй 210, т. е. 59. Можете проверить, что вычеты числа 59 по модулям 2, 3, 5 и 7 равны 1, 2, 4 и 3 соответственно. На рис. 8.5 эти вычисления изображены графически. П Теорема 8.11, Алгоритм 8.5 правильно вычисляет целое число и, для которого и++(и„иь..., и„,). Дока з а тел ь ство. Элементарная индукция по 1' показывает, что в» принимает нужное значение, т. е. с+гг-1 в»= Х, уой и (Р .

Корректность алгоритма непосредственно следует из леммы 8.2, т. е. из справедливости формулы (8.20). П Теорема 8.!2. Пусть даны й попарно взаимно простых целочисленных модулей р„р„..., рг, и вычеты (и„и„..., и„,). Если каждое из чисел р, содержит не более Ь битов, то существует алгоритм с предварительной обработкой данных, вычисляющих число а.т. интеРпОляция ООлинОМОВ а †! и, для которого 0<и .,р=пр, и ич-е(и„ ии ..., и„,), эа время з=о Ов (М (Ьк) !ОЕ lе), где М (л) — время умножения двух л-битовых чисел. Д о к а з а т е л ь с т в о.

Вычисление чисел ды занимает Ов(М(Ья) !ОЕ я) времени '). Для анализа тела алгоритма заметим, что э» содержит не более Ь2У+Ь+!' битов, ибо является суммой 2) слагаемых, каждое из которых равно произведению 2У+1 целых чисел, состоящих не более чем из Ь битов.

Поэтому каждое слагаемое содержит не более Ь(2/+1) битов, а сумма 2У таких слагаемых— не более Ь(2У+1)+!од (2У)=Ь2'+Ь+! битов. Таким образом, строка 4 занимает время Ов(М (Ь2У)). Цикл в строках 3, 4 повторяется й/2l раз для фиксированного 1, так что весь цикл выполняется за Ов Я М(Ь2У)) шагов, а в силу обычного предположения о росте функции М(л) это не превосходит Ов(М (ЬЬ)).

Так как цикл в строках 2 — 4 итерируется 1ой й раз, то общая сложность составляет Ов(М(Ья) 1ОЕ Ь) шагов. Легко показать, что сложность строки 5 меньше. (:! Сведствие. Китайский алгоритм с предварипмльной обработкой данных, примененный к Ь модулям по Ь битов в каждом, работает не более Ов (Ья 1ОЕ й 1ОЕ ЬЬ 1ОЕ 1ОЕ Ьй) времени.

8.7. КИТАЙСКАЯ ТЕОРЕМА ОБ ОСТАТКАХ И ИНТЕРПОЛЯЦИЯ ПОЛИНОМОВ Должно быть ясно, что все результаты предыдущего раздела справедливы и для полиномиальных модулей, а не только для цело- численных. Поэтому верны следующая теорема и ее следствие. Теорема 8.13. Пусть р,(х), р,(х),..., ра,(х) — полиномы сте- пени не больше й и М (л) — число арифметических операций, необ- ходимых для умножения двух полиномов степени л. Пусть и,(х), и (х), „иа- (х) — такие полиномы, что степень полинома из(х) меньше степени полинома р,(х), 0(!<у.

Тогда существует алгоритм с предварительной обработкой данных, вычисляюи!ий эа время Оа(М(йй) 1ОЕ Ь) тот единственный полипом и(х) степени, а — ! меньшей степени лолинома р (х)=33 рз (х), для которого шо и (х) с-ь (и, (х), и, (х), ..., ив, (х)), Д О к аз а тел ь от в о. Применяется аналог алгоритма 8.5 и доказательство следует доказательству теоремы 8.12.

(:) '! Поскольку 0(в) и М (в! но существу равны, мы предпочитаем везде употревлвть М(п!. 333 ГЛ. З. АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ Следствие. Сугцесптвует алгоритм восстановления полиномов по остаткам (согласно китайской теореме) с временной сложностью ОА (й/з 1оп й 1оя й/з). Рассмотрим один важный частний случай: все модули имеют степень 1. Если р, (х)=х — а„О<!<й, то вычеты (числа и;) постоянны, т.

е. являются полиномами степени О. Если и (х)=и, (гпод (х — а,)), то и(х)=д(х) (х — а,)+и, и, значит, и(а;)=ио Таким образом, единственным полиномом и(х) степени, меньшей /з, для которого и(х)е-з ео (и„и„..., и,,), будет тот единственный полипом степени, меньшей й, для которого и(а;)=и; для каждого г, 0<!<й. Другими словами, и(х) — зто полипом, интерполируемый по значениям и, в точках аь 0 =/</г.

Поскольку при работе с полиномами интерполяция очень важна, мы с удовольствием отметим, что интерполяцию по значениям в й тОЧКаХ МОЖНО ВЫПОЛНИТЬ За ВрЕМя ОА (й 1Ояз /Г), дажЕ ЕСЛИ НЕт ПрЕдварительной обработки данных. Это объясняется тем, что здесь, как мы увидим из следующей леммы, легко найти значения коэффициентов г( из (8,20) '). Лемма 8.3. Пусть р,(х)=х — а, для 0(з</з, где все а; различны з — ! (т, е.

все р,(х) взаимно проста). Пусть р(х)=Дрз(х), с;(х)= г=е =р(х)/р;(х) и й,(х) — постоянный полинам, причем йз(х)сз(х)=1 (пюдр,(х)). Тогда йз(х)=1/Ь, где Ь= — р(х)(,=,Р До к а э а тел ь ст в о. Запишем р(х)=с~(х) р;(х), так что — р (х) = р, (х) — с, (х) -1- с, (х) — р; (х). в в в (8.21) Далее, йрз (х)/йх=! и р, (а,\=О, поэтому (8.22) ! Заметим, что й (х) обладает тем свойством, что й;(х) с,(х)= — 1(шог((х — а~)), и, значит, йз(х)с~(х)=-у;(х) (х — а,)+1 при некотором у~ (х). Таким образом, йз (а,)=1/с, (а,).

Теперь лемма немедленно следует из (8,22), поскольку й;(х) — постоянная. П Теорема 8.14. Интерполяцию полинома ло значениям в й точках можно вьтолнить за время ОА(й 1одз й) без предварительной обработки данных. Д о к а з а т е л ь с т в о. В силу леммы 8.3 вычисление полиномов й~ эквивалентно вычислению значений производной некоторого т) Кзк упоминзлось в рззд. 8.6, зтв зздзчз в действительности несложна и в общем случае. Но в общем случае нужна техника следующего раздела. ззз к7.

интеРлоляция полиномоз Ф-1 полинома степени й — 1 в й точках. Полинам р(х)=Ч р~ (х) можно получить за время Оа (й 1оя' й), если сначала вычислить р,р„р,р„ затем р,р,р,р„р,р,р,р„... и т. д. Производную полинома р(х) можно найти за Оа(А) шагов. Вычисление значений производной занимает Ох(А !од' А) времени в силу следствия 2 теоремы 8.10. Теорема вытекает теперь из следствия теоремы 8.13 при а=1. С) Пример 8.7. Проннтерполируем полинам по следующим парам (точка, значение): (1, 2); (2, 7); (3, 4); (4, 8). Здесь а;=!+1 для 0~!<4, и,=2, и,=7, и,=4 и и,=8 Тогда р! (х)=х — !' — 1, а полинам э р(х)=Црр(х) равен х' — 10 х'+35х' — 50х+24. Далее, др(х)/ах= о=а =4х' — 30х'+70х — 50, и в точках 1, 2, 3, 4 этот полипом принимает соответственно значения — 6, 2, — 2, 6.

Таким образом, д„дм д, и И, равны соответственно — '/„17„— '!, и '!,. С помощью быстрого китайского алгоритма 8.5, переделанного для полиномов, получаем эм =!)оиер1+г(ти1ро = ( 6 ) (2) (х — 2)+ (2 ) (7) (х — 1) = !9 !7 = — х —— 6 6 ' э„ = Й,и,р, + Й,и,р, = ( — 2 ) (4)(х — 4) + ( 6 ) (8) (х — 3) =* 2 3 = — — х+4 и затем з„= и (х) = з„дм + э„а„= Г!9 !71 ( 2 (6 6) = ~ — х — 1 (х' — 7х — 12) + ! — — х+ 4 ! (х' — Зх+ 2) з У и (х) = — х' — 19х'+ — х — 26. 6 89 2 П Как отмечалось в гл. 7, такие арифметические операции над полиномами, как сложение и умножение, можно выполнять, вычисляя полиномы в л точках, производя над найденными значениями арифметические операции и затем интерполнруя полинам по полученным в результате значениям.

Если на выходе должен быть полинам степени не более л — 1, то этот способ приведет к правильному ответу. Метод БПФ именно это и делает в случае, когда в качестве л точек берутся числа ы0, !»',..., м" '. Здесь алгоритмы вычисления значений и интерполяции оказались особенно простыми благодаря ствойствам степеней числа м и специального упорядочения их.

Однако стоит заметить, что вместо степеней числа м можно было бы взятьлюбойнабор точек. Тогдаунас было бы такое "преобразова- ээз ГЛ Ь. АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ ние", что на всю задачу (преобразование, вычисления и обратное преобразование) потребовалось бы ОА(п !од' и), а не ОА(п 1он и) времени. 8.8. НАИБОЛЬШИЕ ОБЩИЕ ДЕЛИТЕЛИ И АЛГОРИТМ ЕВКЛИДА Определение. Пусть а, и а,— положительные целые числа. Положительное целое число Е называется наибольшим сби(им дели. телем чисел а, и а, (его часто обозначают через НОД(а„а,)), если 1) у делит а, и а„ 2) всякий общий делитель чисел а, и а, делится.

Легко показать, что для положительных целых чисел а, и а, такое число Е единственно. Например, НОД(57„33)=3. Алгоритм Евклида для вычисления НОД(а„а,) состоит в вычислении последовательности остатков а„а„..., а, где аь 2» '1(й,— ненулевой остаток от деления а~, на а~, и аь нацело делит а„, (т. е. аь„,— — 0). В этой ситуации НОД (а„а,)=а„. Пример 8.8. В примере, приведенном выше, а,=57, а,=ЗЗ, а,=24, а,=й, а,=б и а,=З. Поэтому 8=5 и НОД (57, 33)=3. П Теорема 8.15.

Характеристики

Тип файла
DJVU-файл
Размер
5,53 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

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