Алгоритм Барейсса
В математике алгоритм Барейсса , названный в честь Эрвина Барейсса , представляет собой алгоритм вычисления определителя или ступенчатой формы матрицы элементами , с целочисленными используя только целочисленную арифметику; любые выполняемые деления нет гарантированно будут точными ( остатка ). Этот метод также можно использовать для вычисления определителя матриц с (приблизительными) действительными элементами, избегая любых ошибок округления, помимо тех, которые уже присутствуют во входных данных.
История
[ редактировать ]Алгоритм был первоначально анонсирован Джеком Эдмондсом в 1966 году и опубликован в 1967 году. [1] Общий алгоритм Барейсса отличается от алгоритма Барейсса для матриц Теплица .
В некоторых испаноязычных странах этот алгоритм также известен как Bareiss-Montante в честь Рене Марио Монтанте Пардо , профессора Автономного университета Нуэво-Леона , в Мексике который популяризировал этот метод среди своих студентов.
Обзор
[ редактировать ]Определение определителя имеет только операции умножения, сложения и вычитания. Очевидно, что определитель является целым, если все элементы матрицы целые. Однако фактическое вычисление определителя с использованием определения или формулы Лейбница непрактично, поскольку требует O( n! ) операций.
Метод исключения Гаусса имеет O( n 3 ) сложность, но вводит деление, что приводит к ошибкам округления при реализации с использованием чисел с плавающей запятой.
Ошибок округления можно избежать, если все числа хранить в виде целых дробей, а не с плавающей запятой. Но затем размер каждого элемента увеличивается экспоненциально с увеличением количества строк. [1]
Барейсс поднимает вопрос о выполнении исключения, сохраняющего целые числа, сохраняя при этом величины промежуточных коэффициентов достаточно небольшими. Предлагаются два алгоритма: [2] [3]
- Алгоритм без деления — выполняет приведение матрицы к треугольной форме без операции деления.
- Алгоритм без дробей — использует деление, чтобы уменьшить промежуточные элементы, но из-за тождества Сильвестра преобразование по-прежнему сохраняет целые числа (остаток от деления равен нулю).
Для полноты картины Барейс также предлагает методы исключения без умножения, производящие дроби. [2]
Алгоритм
[ редактировать ]Структура программы этого алгоритма представляет собой простой тройной цикл, как и в стандартном методе исключения Гаусса. Однако в этом случае матрица модифицируется так, что каждая запись M k,k содержит ведущий главный минор [ M ] k,k . Корректность алгоритма легко показать индукцией по k . [4]
- Входные данные: M — n -квадратная матрица.
предполагая, что все его ведущие главные миноры [ M ] k,k не равны нулю. - Пусть M 0,0 = 1 (Примечание: M 0,0 — специальная переменная)
- Для k от 1 до n −1:
- Для i от k +1 до n :
- Для j от k +1 до n :
- Набор
- Для j от k +1 до n :
- Для i от k +1 до n :
- Вывод: матрица изменяется на месте ,
каждая запись M k,k содержит ведущий минор [ M ] k,k ,
запись M n,n содержит определитель исходного M .
Если предположение о главных минорах окажется неверным, например, если M k −1, k −1 = 0 и некоторые M i , k −1 ≠ 0 ( i = k ,..., n ), то мы можем поменять местами k −1-ю строку с i -й строкой и поменяйте знак окончательного ответа.
Анализ
[ редактировать ]Во время выполнения алгоритма Барейсса каждое вычисляемое целое число является определителем подматрицы входной матрицы. Это позволяет с помощью неравенства Адамара ограничить размер этих целых чисел. В противном случае алгоритм Барейсса можно рассматривать как вариант исключения Гаусса , требующий примерно такого же количества арифметических операций.
Отсюда следует, что для матрицы размера n × n максимального (абсолютного) значения 2 л для каждой записи алгоритм Барейсса выполняется за O( n 3 ) элементарные операции с O( n н /2 2 Нидерланды ) привязано к абсолютному значению необходимых промежуточных значений. Таким образом, его вычислительная сложность равна O( n 5 л 2 (журнал( п ) 2 + Л 2 )) при использовании элементарной арифметики или O( n 4 L (log( n ) + L ) log(log( n ) + L ))) с помощью быстрого умножения .
Ссылки
[ редактировать ]- ^ Миддеке, Дж.; Джеффри, диджей; Кутшан, К. (2020), «Общие факторы в разложении матриц без дробей», Mathematics in Computer Science , 15 (4): 589–608, arXiv : 2005.12380 , doi : 10.1007/s11786-020-00495-9
- ↑ Перейти обратно: Перейти обратно: а б Барейсс, Эрвин Х. (1968), «Идентичность Сильвестра и многошаговое исключение Гаусса с сохранением целых чисел» (PDF) , Mathematics of Computation , 22 (103): 565–578, doi : 10.2307/2004533 , JSTOR 2004533
- ^ Барейсс, Эрвин Х. (1966), МНОГОШАГОВОЕ ГАУССОВОЕ УСТРАНЕНИЕ С СОХРАНЕНИЕМ ЦЕЛЫХ ЦЕЛ (PDF) . (Содержит более четкое представление о последовательности операций)
- ^ Яп, Чи Кенг (2000), Фундаментальные проблемы алгоритмической алгебры , Oxford University Press