Алгоритм Барейса: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Содержимое удалено Содержимое добавлено
Луговкин (обсуждение | вклад) |
Oleg4280 (обсуждение | вклад) оформление |
||
Строка 1:
'''Алгоритм Барейса''', названный именем [[Эрвин Барейс|Эрвина Барейса]],
== История ==
Основной алгоритм Барейса отличается от
В некоторых [[Испанский язык|испаноязычных]] странах алгоритм известен также как алгоритм '''Барейса
== Обзор ==
Строка 11:
[[Метод Гаусса]] имеет сложность O(''n''<sup>3</sup>), но использует деление, которое приводит к ошибкам округления в случае реализации с помощью арифметики с плавающей запятой.
{{
Барейс поставил вопрос проведения исключений в целых числах, сохраняя при этом величину промежуточных коэффициентов достаточно маленькой. Было предложено два алгоритма{{sfn|Bareiss|1968|с=
# Алгоритм без деления
# Алгоритм без остатков
Для полноты Барейс предложил также методы исключений без умножения, но с дробями{{sfn|Bareiss|1968|с=
== Алгоритм ==
Вычислительная структура этого алгоритма представляет собой простой тройной цикл, как и в обычном [[Метод Гаусса|методе Гаусса]]. Однако в этом случае матрица модифицируется так, что каждый элемент <math>M_{k,k}</math> содержит ведущий главный [[Минор (линейная алгебра)|минор]] ''[M]<sub>k, k</sub>''. Правильность алгоритма легко показывается индукцией по ''k''{{sfn|Yap|2000}}.
{{Начало коробки|голубой}}
* Входные данные: M
* Положим <math>M_{0,0} = 1</math>
* Для всех {{mvar|k}} от 1 до {{mvar|n-1}}:
Строка 29:
*** Для всех {{mvar|j}} от {{mvar|k+1}} до {{mvar|n}}:
**** Положим <math>M_{i,j} = \frac{M_{i,j} M_{k,k} - M_{i,k} M_{k,j}}{M_{k-1,k-1}}</math>
* Выходные данные: Матрица изменена {{не переведено 5|алгоритм на месте|на месте||In-place_algorithm}},<br
{{Конец коробки}}
Если предположение о неравенству нулю главных миноров окажется неверным, то есть
== Анализ ==
Во время выполнения алгоритма Барейса любое вычисленное целое является определителем подматрицы входной матрицы. Это позволяет с помощью [[Неравенство Адамара|неравенства Адамара]] ограничить размер целых чисел. В остальном алгоритм Барейса можно рассматривать как вариант [[Метод Гаусса|метода Гаусса]], который требует, фактически, того же числа арифметических операций.
Отсюда следует, что для <math>n \times n</math> матрицы с максимальным (абсолютным) значением <math>2^L</math> для каждого элемента алгоритм Барейса работает за [[«O» большое и «o» малое|O(''n''<sup>3</sup>)]] элементарных операций с ограничением
== Примечания ==
{{примечания|2}}
== Литература ==
{{refbegin|colwidth=30em}}
* {{статья
|ref=Middeke, Jeffrey, Koutschan
|автор=Middeke J., Jeffrey D.J., Koutschan C.
Строка 52 ⟶ 53 :
|doi-access=free
}}
* {{статья
|автор=Erwin H. Bareiss
|ref=Bareiss
Строка 65 ⟶ 66 :
|jstor=2004533
}}
* {{статья
|автор=Erwin H. Bareiss
|ref=Bareiss
Строка 72 ⟶ 73 :
|год=1966
}}. ''(Содержит ясное описание последовательности операций)''
* {{статья
|ref=Yap
|автор=Chee Keng Yap
|