Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
5.1.2. Неклассический подход: модулярный алгоритм для наибольшего общего делителяКак уже говорилось, в следующих разделах мы детально рассмотрим два метода субрезультантных PRS. Однако непосредственно сейчас мы представим алгоритм, который читатель должен был предвидеть. Ключевое для этого алгоритма наблюдение состоит в том, что вычисление наибольшего общего делителя двух полиномов над конечным полем не приводит к росту, поскольку коэффициенты не могут превосходить размер модуля. Поэтому мы можем преобразовать задачу нахождения наибольшего общего делителя двух полиномов над целыми числами к нескольким задачам нахождения наибольшего общего делителя двух полиномов над некоторыми конечными полями. По теореме 5.1.2, сформулированной ниже, ответы к этим задачам затем интерполируются (с использованием греко-китайского алгоритма), чтобы получить истинный наибольший общий делитель над целыми числами. Это в общих чертах составляет модулярный -алгоритм. В следующих рассуждениях обозначает полином Теорема 5.1.2. Пусть — два полинома в Тогда для всех простых , таких, что не делит имеет место неравенство где над и существует только конечное число простых , таких, что Локазательство. Поскольку не делит то, следовательно, не делит старший коэффициент полинома а значит, первое утверждение тривиально. Второе утверждение вытекает из наблюдения, что степень полинома может превосходить степень полинома только если делит один из старших коэффициентов предыдущих членов PRS, а это мажет случиться только для конечного числа простых чисел. Простые числа , для которых называются «несчастливыми» и отбрасываются в описанном ниже алгоритме; более того, с целью эффективности каждое простое число выбирается меньшим машинного слова. В модулярном -алгоритме используются также следующие факты: (1) Если полином неприводим над целыми по модулю , где не делит , то неприводим также над целыми числами; по существу это теорема 3.2.16. (2) Если полиномы взаимно просты над целыми по модулю где не делит и не делит то полиномы взаимно просты над целыми числами; это следует непосредственно из теоремы 5.1.2. М. Модулярный алгоритм (Modular Algorithm) Вход: Два примитивных полинома от одной переменной с целыми коэффициентами. Выход: Полином над целыми числами. 1. [Инициализация] Положить с Выбрать простое , которое не делит и вычислить нормированный полином Положить если , то вернуть Положить ). Если (где оба деления выполняются над целыми числами), то вернуть 3. [Новое простое] Выбрать новое простое число которое не делит и вычислить нормированный полином если то вернуть 4. [Несчастливое ] Если то — несчастливое простое число; перейти к шагу 3. Если то — несчастливое простое число; положить и перейти к шагу 2. 5. [Цикл по коэффициентам] В этой точке Положить выполнять: применить к коэффициентам при и по модулю пусть — результат интерполяции; положить [При использовании симметричной системы вычетов коэффициенты полинома по абсолютной величине заметим также, что полином нормирован.] 6. [Обновление] Положить и перейти к шагу 2. Анализ времени работы, алгоритма М. Из теоремы 5.1.2 следует, что приведенный выше алгоритм завершается, поскольку число несчастливых простых чисел конечно. [См. также (Brown, 1971, th. 1), где дана оценка числа возможных несчастливых простых Браун показал, что преимущество модулярного алгоритма над классическими проявляется только тогда, когда данные полиномы достаточно большие и достаточно плотные. В разреженном случае (много отсутствующих членов) преимущество анализировать трудно. Пример предложен чуть дальше. Предыдущий алгоритм не использует априорную оценку числа различных используемых простых чисел; интересная версия алгоритма М, использующая такую оценку, приводится ниже. M1. Модулярный алгоритм, версия 1 (Modular Algorithm, Version 1) Вход: Два примитивных полинома от одной переменной с целыми коэффициентами. Выход: Полином над целыми числами. 1. [Инициализация] Выбрать простое , которое не делит и вычислить Положить если то вернуть Положить 2. [Новое простое] Выбрать новое простое число которое не делит Вычислить Если то вернуть 3. [Несчастливое простое?] Если то — несчастливое простое число; перейти к шагу 2. Если то — несчастливое Простое число; положить и перейти к шагу 2. 4. [Цикл по коэффициентам] В этой точке Положить Для выполнять: применить к коэффициентам при по модулю соответственно; пусть q — результат интерполяции, положить (Использовать симметричную систему вычетов.) 5. [Готово?] Положить Еслир то вернуть иначе перейти на шаг 2. В действительности значение В, используемое в приведенном выше алгоритме, — это оценка максимума абсолютной величины коэффициентов полинома Такая оценка может быть получена из теоремы А.О. Гельфонда (Трансцендентные и алгебраические числа М.: Гостехиздат, 1952), но в практических вычислениях вместо этого используется максимум абсолютных величин коэффициентов полиномов Выбирается значение так как оно работает в большинстве случаев (Brown, 1971). Ясно, что существуют исключения; например, если то и мы имеем дело со случаем, когда коэффициенты делителя больше коэффициентов делимого. Заметим, что обе версии модулярного -алгоритма легко обобщить для обработки полиномов от многих переменных. Можно также воспользоваться алгоритмами подъема, описанными в гл. 6, чтобы найти наибольший общий делитель двух полиномов над . Это — так называемый расширенный -алгоритм Цассенхаузена [Extended Zassenhaus который не описывается здесь, но подробности можно найти в литературе (Miola et al., 1974; Moses et al., 1973; Yun, 1974). Пример. Найдем наибольший общий делитель полиномов Используя М, заметим сначала, что а затем для Затем, на шаге 2 вычисляем полином который делит как так и . Поэтому . Используя сначала вычислим а затем Поскольку этих двух простых чисел достаточно. С помощью греко-китайской теоремы об остатках мы из полиномов получаем полином
|
1 |
Оглавление
|