Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Блок - Видеман алгоритм для вычисления векторов Ядра матрицы над конечным полем является обобщением алгоритма из - за Дон Копперсмит .

Алгоритм медного мастера [ править ]

Пусть будет квадратной матрицей над некоторым конечным полем F, пусть будет случайным вектором длины , и пусть . Рассмотрим последовательность векторов, полученную многократным умножением вектора на матрицу ; пусть будет любой другой вектор длины , и рассмотрим последовательность элементов конечного поля

Мы знаем, что матрица имеет минимальный многочлен ; по теореме Кэли – Гамильтона мы знаем, что этот многочлен имеет степень (которую мы будем называть ) не более чем . Скажи . Тогда ; поэтому минимальный многочлен матрицы аннулирует последовательность и , следовательно .

Но алгоритм Берлекампа – Месси позволяет относительно эффективно вычислять некоторую последовательность с . Мы надеемся, что эта последовательность, которая по конструкции аннигилирует , фактически аннигилирует ; так что у нас есть . Затем мы воспользуемся преимуществом начального определения to say и , надеюсь, ненулевого вектора ядра .

Блочный алгоритм Видемана [ править ]

Естественная реализация арифметики с разреженными матрицами на компьютере позволяет легко вычислять последовательность S параллельно для числа векторов, равных ширине машинного слова - действительно, обычно для такого количества векторов вычисление не занимает больше времени, чем для один. Если у вас несколько процессоров, вы можете вычислить последовательность S для другого набора случайных векторов параллельно на всех компьютерах.

Оказывается, обобщив алгоритм Берлекампа – Месси для получения последовательности малых матриц, можно взять последовательность, созданную для большого числа векторов, и сгенерировать вектор ядра исходной большой матрицы. Вам нужно вычислить для некоторых, где необходимо удовлетворить и являются серией векторов длины n; но на практике вы можете взять в качестве последовательности единичных векторов и просто записывать первые записи в ваших векторах в каждый момент времени t .

Ссылки [ править ]

Отчет об исследовании Вилларда 1997 года « Исследование блочного алгоритма Видемана Копперсмита с использованием матричных полиномов » (обложка на французском языке, а содержание на английском) является разумным описанием.

В статье Томе « Субквадратичное вычисление полиномов, генерирующих вектор и усовершенствование блочного алгоритма Видемана » используется более сложный алгоритм на основе БПФ для вычисления полиномов, генерирующих вектор, и описывается практическая реализация с i max  =  j max  = 4, используемая для вычисления ядра. вектор матрицы 484603 × 484603 элементов по модулю 2 607 -1, и, следовательно, для вычисления дискретных логарифмов в поле GF (2 607 ).