Блочный алгоритм Видемана
Блочный Видемана для вычисления ядра векторов матрицы алгоритм над конечным полем является обобщением Дона Копперсмита алгоритма Дуга Видемана.
Алгоритм Видемана
[ редактировать ]Позволять быть квадратная матрица над некоторым конечным полем F, пусть быть случайным вектором длины , и пусть . Рассмотрим последовательность векторов получается путем многократного умножения вектора на матрицу ; позволять быть любым другим вектором длины и рассмотрим последовательность элементов конечного поля
Мы знаем, что матрица имеет минимальный полином ; по теореме Кэли–Гамильтона мы знаем, что этот многочлен имеет степень (которую мы будем называть ) не более . Сказать . Затем ; поэтому минимальный полином матрицы аннулирует последовательность и, следовательно, .
Но алгоритм Берлекэмпа–Мэсси позволяет относительно эффективно вычислить некоторую последовательность с . Мы надеемся, что эта последовательность, которая по своей конструкции уничтожает , фактически уничтожает ; так что у нас есть . Затем мы воспользуемся первоначальным определением сказать и так является, надеюсь, ненулевым вектором ядра .
Блочный алгоритм Видемана (или Копперсмита-Видемана)
[ редактировать ]Естественная реализация арифметики с разреженной матрицей на компьютере позволяет легко вычислить последовательность S параллельно для числа векторов, равного ширине машинного слова - действительно, обычно вычисление для такого количества векторов не занимает больше времени, чем для вычисления один. Если у вас несколько процессоров, вы можете вычислить последовательность S для различного набора случайных векторов параллельно на всех компьютерах.
Оказывается, что благодаря обобщению алгоритма Берлекэмпа-Мэсси для получения последовательности небольших матриц можно взять последовательность, полученную для большого числа векторов, и сгенерировать вектор ядра исходной большой матрицы. Вам нужно вычислить для некоторых где нужно удовлетворить и представляют собой серию векторов длины n; но на практике можно взять как последовательность единичных векторов и просто выпишите первые записи в ваших векторах в каждый момент времени t .
Расчет инвариантного коэффициента
[ редактировать ]Блочный алгоритм Видемана можно использовать для вычисления ведущих инвариантных факторов матрицы, т. е. крупнейших блоков нормальной формы Фробениуса . Данный и где является конечным полем размера , вероятность что ведущий инвариантные факторы сохраняются в является
. [1]
Ссылки
[ редактировать ]- ^ Харрисон, Гэвин; Джонсон, Джереми; Сондерс, Б. Дэвид (1 января 2022 г.). «Вероятностный анализ блока Видемана для ведущих инвариантных факторов» . Журнал символических вычислений . 108 : 98–116. arXiv : 1803.03864 . дои : 10.1016/j.jsc.2021.06.005 . ISSN 0747-7171 .
- Видеманн, Д., «Решение разреженных линейных уравнений над конечными полями», IEEE Trans. Инф. Теория ИТ-32, стр. 54-62, 1986.
- Д. Копперсмит, Решение однородных линейных уравнений над GF (2) с помощью блочного алгоритма Видемана, Math. Комп. 62 (1994), 333-350.
- Отчет об исследовании Виллара 1997 года « Исследование блочного алгоритма Видемана Копперсмита с использованием матричных полиномов » (обложка на французском языке, но содержание на английском языке) является разумным описанием.
- В статье Томе « Субквадратичное вычисление векторных полиномов и улучшение блочного алгоритма Видемана » используется более сложный алгоритм на основе БПФ для вычисления векторных полиномов и описывается практическая реализация с i max = j max = 4, используемая для вычисления ядра. вектор матрицы элементов размером 484603 × 484603 по модулю 2 607 −1 и, следовательно, для вычисления дискретных логарифмов в поле GF (2 607 ).