Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: LI Международной научно-практической конференции «Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ» (Россия, г. Новосибирск, 21 августа 2018 г.)

Наука: Математика

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Галеева А.И., Зенцов Д.А. АЛГОРИТМЫ БЫСТРОГО УМНОЖЕНИЯ // Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ: сб. ст. по мат. LI междунар. студ. науч.-практ. конф. № 16(51). URL: https://sibac.info/archive/meghdis/16(51).pdf (дата обращения: 23.11.2024)
Проголосовать за статью
Конференция завершена
Эта статья набрала 1 голос
Дипломы участников
У данной статьи нет
дипломов

АЛГОРИТМЫ БЫСТРОГО УМНОЖЕНИЯ

Галеева Аделя Ильдаровна

студент, кафедра геоинформатики и информационной безопасности, Самарский университет,

РФ, г. Самара

Зенцов Даниил Александрович

студент, кафедра геоинформатики и информационной безопасности, Самарский университет,

РФ, г. Самара

Введение

Быстрые алгоритмы — это область вычислительной математики, которая изучает алгоритмы вычисления заданной функции с заданной точностью с использованием как можно меньшего числа битовых операций. Быстрые алгоритмы, реализованные на ЭВМ в программном или аппаратном обеспечении, значительно увеличивают производительность вычислений, а иногда и решают задачи, размер которых не позволял найти решение путём применения обычных методов вычисления.

Быстрые алгоритмы имеют большое значение в современной криптографии с открытым ключом.

В данной работе проведен обзор трех самых известных алгоритмов быстрого умножения. 

Алгоритм Карацубы

Алгоритм был открыт в 1960 году и является первым методом быстрого умножения.  Он открыл новое направление в вычислительной математике — теорию создания быстрых алгоритмов. Сложность алгоритма 2log23

Пусть числа a и b натуральные длины n=2k разрядов в системе счисления с основанием B. Представим a и b  в системе счисления с основанием Bk :

a=(a1a0)Bk, b=(b1,b0)Bk.

Если умножить a на b традиционным способом то:

ab = B2ka1b1+Bk(a0b1+a1b0)+a0b0 ,

требуется четыре умножения по основанию Bk и n2=4k2 элементарных умножений по основанию B. Однако, если представить

c0 := a0b0,

с1 := a1b1,

с2 :=(a0+a1)(b0+b1)-c0-c1, то

ab := Bk(Bkc1+c2)+c0.

Следовательно, при таком представлении произведения ab, необходимо всего три умножения по основанию Bk, или, то же самое, 3k2 умножений по основанию B.

Метод умножения Шёнхаге – Штрассена

Данные метод был опубликован в 1971 году. Основной идей метода является быстрое преобразование Фурье. До 2007 года данный метод считался асимптотический быстрейшим из всех известных на тот момент для целых чисел, порядок которых больше чем 1010000.

Сложность метода O(log(N*log(N)*loglog(N))).

Формулировка требований

Пусть заданы два неотрицательных числа x, y, имеющих не больше D цифр в некоторой системе счисления с основанием B. Этот алгоритм возвращает представление произведения xy в системе счисления с основанием B.

Алгоритм

  1. [Начальные требования]

Дополнить нулями x, y до тех пор, пока каждое из них не станет числом     размера 2D, так что циклическая свертка новых последовательностей будет содержать ациклическую свертку исходных последовательностей:

  1. [Преобразование Фурье]

X=(x)

Y=(x)

  1. [Покомпонентные умножения]

Z=X*Y

  1. [Обратное преобразование]

z = (Z)

  1. [Округление цифр результата]

z = round (z)

  1. [Выполнение переносов по основанию B]

carry =0

for (-1<n<2D) {

v=zn + carry;

zn = v mod B;

carry = [v/B];

}

  1. [Учет последней цифры]

Удалить начальные нули, возможно, carry >0 станет старшей цифры числа z;

return z;

Алгоритм Фюрера

Алгоритм был построен швейцарским математиком Мартином Фюрером в 2007 году. Он является асимптотически более быстрым, чем алгоритм Шенхаге-Штрассена. Разница по времени исполнения видна для чисел, имеющих больше 10 000 000 000 000 значащих цифру. Сложность алгоритма Фюрера O(nlog(n)*2O(log*n)), где log*(n) итерированный логарифм n.

Алгоритм основан на БПФ и зависит от теоремы о свертке. Теорема о свертке предоставляет эффективный способ вычислить циклическую свертку двух последовательностей.

Формула циклической свертки:

ЦС(X, Y) =ОДПФ(ДПФ(X)*ДПФ(Y)), где

ЦЦ — циклическая свёртка,

ДПФ — дискретное преобразование Фурье,

ОДПФ— обратное дискретное преобразование Фурье.

 

Рисунок 1. Операция «Бабочка»

 

Выбор кольца

ДПФ может быть выполнено практически в любом кольце.

Алгоритм Фюрера большую часть времени тратит на рекурсивное выполнение произведения меньших чисел.

Важным моментом является выбор модуля N= 2n+1.

 

Список литературы:

  1. Вельшенбах, М. Криптография на Си и С++ в действии. Учебное пособие - М.: Триумф, 2014. - 462 c.
  2. Крэндалл Р., Померанс К. Простые числа: криптографические и вычислительные аспекты. М.: УРСС: Либроком, 2011. 664 с.
Проголосовать за статью
Конференция завершена
Эта статья набрала 1 голос
Дипломы участников
У данной статьи нет
дипломов

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.