Уровень алгоритма

Участник:BDA/Ортогонализация Грама-Шмидта

Материал из Алговики
Перейти к навигации Перейти к поиску


Ортогонализация Грама-Шмидта
Последовательный алгоритм
Последовательная сложность [math]\displaystyle{ O(nm^2) }[/math]
Объём входных данных [math]\displaystyle{ nm }[/math]
Объём выходных данных [math]\displaystyle{ nm }[/math]
Параллельный алгоритм
Высота ярусно-параллельной формы [math]\displaystyle{ ? }[/math]
Ширина ярусно-параллельной формы [math]\displaystyle{ ? }[/math]


Основные авторы описания: Белов Н. А., Богомолов Д. А..

Свойства и структура алгоритма

Общее описание алгоритма

Ортогонализация ― алгоритм построения для данной линейно независимой системы векторов евклидова или эрмитова пространства V ортогональной системы ненулевых векторов, порождающих то же самое подпространство в V.

Ортогонализация Грама–Шмидта[1] (процесс Грама–Шмидта) ― наиболее известный алгоритм ортогонализации. Назван в честь Йоргена Педерсена Грама[2] и Эрхарда Шмидта[3], однако ранее уже появлялся в работах Лапласа и Коши. Является частным случаем разложения Ивасавы, так как может быть представлен как разложение невырожденной квадратной матрицы в произведение ортогональной (или унитарной матрицы в случае эрмитова пространства) и верхнетреугольной матрицы с положительными диагональными элементами.

Рассматриваемый алгоритм применяется для борьбы с помехами в адаптивной системе селекции движущихся целей[4], в протоколах безопасности[5], для повышения экономичности алгоритмов оценивания параметров моделей объектов управления[6] и в других областях.

Математическое описание алгоритма

Вычислительное ядро алгоритма

Основное время работы алгоритма приходится на вычисление сумм [math]\displaystyle{ \sum_{i=1}^{j-1} \mathbf{proj}_{\mathbf{b}_i} \mathbf{a}_i \forall j: j=\overline{1, m} }[/math].

Макроструктура алгоритма

Из описания алгоритма в предыдущих разделов следует, что основную часть данного метода составляют операции вычисления проекций векторов, а также их сумм.

Схема реализации последовательного алгоритма

Последовательная сложность алгоритма

Рассмотрим [math]\displaystyle{ n }[/math] векторов длины [math]\displaystyle{ m }[/math].

  1. Скалярное произведение векторов требует [math]\displaystyle{ n - 1 }[/math] сложение и [math]\displaystyle{ n }[/math] произведений.
  2. Нормализация вектора требует 1 скалярного произведения, 1 вычисления квадратного корня и [math]\displaystyle{ n }[/math] делений, то есть:
    1. [math]\displaystyle{ n-1 }[/math] ([math]\displaystyle{ + }[/math]);
    2. [math]\displaystyle{ n }[/math] ([math]\displaystyle{ \times }[/math]);
    3. [math]\displaystyle{ n }[/math] ([math]\displaystyle{ \div }[/math]);
    4. [math]\displaystyle{ 1 }[/math] ([math]\displaystyle{ \sqrt{} }[/math]).
  3. Вычитание проекции вектора требует 1 скалярного произведения, [math]\displaystyle{ n }[/math] сложений и [math]\displaystyle{ n }[/math] умножений, то есть:
    1. [math]\displaystyle{ 2n-1 }[/math] ([math]\displaystyle{ + }[/math]);
    2. [math]\displaystyle{ 2n }[/math] ([math]\displaystyle{ \times }[/math]).
  4. Вычисление [math]\displaystyle{ i }[/math]-го вектора требует [math]\displaystyle{ i-1 }[/math] вычитаний проекций с нормализацией, то есть:
    1. [math]\displaystyle{ (2n-1)(i-1)+n-1 }[/math] ([math]\displaystyle{ + }[/math]);
    2. [math]\displaystyle{ 2n(i-1)+n }[/math] ([math]\displaystyle{ \times }[/math]);
    3. [math]\displaystyle{ n }[/math] ([math]\displaystyle{ \div }[/math]);
    4. [math]\displaystyle{ 1 }[/math] ([math]\displaystyle{ \sqrt{} }[/math]).
  5. Мы вычисляем вектора от [math]\displaystyle{ i=1 }[/math] до [math]\displaystyle{ m }[/math], поэтому [math]\displaystyle{ i-1 }[/math] множителей выражаются треугольным числом [math]\displaystyle{ (m-1)\frac{m}{2} }[/math], а элементы независимых [math]\displaystyle{ i }[/math] умножаются на [math]\displaystyle{ m }[/math].
    1. [math]\displaystyle{ (2n-1)(m-1)\frac{m}{2}+(n-1)m }[/math] ([math]\displaystyle{ + }[/math]);
    2. [math]\displaystyle{ 2n(m-1)\frac{m}{2}+nm }[/math] ([math]\displaystyle{ \times }[/math]);
    3. [math]\displaystyle{ nm }[/math] ([math]\displaystyle{ \div }[/math]);
    4. [math]\displaystyle{ m }[/math] ([math]\displaystyle{ \sqrt{} }[/math]).
  6. В скалярном произведении [math]\displaystyle{ n }[/math] делений могут быть рассмотрены как [math]\displaystyle{ n }[/math] умножений:
    1. [math]\displaystyle{ (2n-1)(m-1)\frac{m}{2}+(n-1)m }[/math] ([math]\displaystyle{ + }[/math]);
    2. [math]\displaystyle{ 2n(m-1)\frac{m}{2}+2nm }[/math] ([math]\displaystyle{ \times }[/math]);
    3. [math]\displaystyle{ m }[/math] ([math]\displaystyle{ \div }[/math]);
    4. [math]\displaystyle{ m }[/math] ([math]\displaystyle{ \sqrt{} }[/math]).

Таким образом, требуется [math]\displaystyle{ 2nm^2 }[/math] операций. Сложность алгоритма [math]\displaystyle{ O(nm^2) }[/math].

Информационный граф

Ресурс параллелизма алгоритма

Входные и выходные данные алгоритма

Входные данные. Матрица [math]\displaystyle{ A }[/math] с элементами [math]\displaystyle{ \alpha_{ij} }[/math], где [math]\displaystyle{ i = \overline{1, n} }[/math] (размерность пространства) и [math]\displaystyle{ j = \overline{1, m} }[/math] (количество линейно-независимых векторов), при этом [math]\displaystyle{ n \leqslant m }[/math].

Объем входных данных. [math]\displaystyle{ nm }[/math]

Выходные данные. Матрица [math]\displaystyle{ B }[/math] с элементами [math]\displaystyle{ \beta_{ij} }[/math], где [math]\displaystyle{ i = \overline{1, n} }[/math] и [math]\displaystyle{ j = \overline{1, m} }[/math], тогда [math]\displaystyle{ b_{i1}, \dots, b_{im} }[/math] — система ортогональных векторов.

Объем выходных данных. [math]\displaystyle{ nm }[/math]

Свойства алгоритма

Программная реализация алгоритма

Особенности реализации последовательного алгоритма

Локальность данных и вычислений

Возможные способы и особенности параллельной реализации алгоритма

Масштабируемость алгоритма и его реализации

Срок сдачи продлен до 15 ноября.

Динамические характеристики и эффективность реализации алгоритма

Выводы для классов архитектур

Существующие реализации алгоритма

Литература

  1. ↑ Канатников А.Н., Крищенко А.П. "Линейная алгебра." ― 3-е изд., стер. ― М.: Изд-во МГТУ им. Н.Э. Баумана, 2002
  2. ↑ O'Connor, John J.; Robertson, Edmund F., "Jørgen Pedersen Gram", MacTutor History of Mathematics archive, University of St Andrews.
  3. ↑ O'Connor, John J.; Robertson, Edmund F., "Erhard Schmidt", MacTutor History of Mathematics archive, University of St Andrews.
  4. ↑ Орешкин Б.Н., Бакулев П.А. "Быстрая процедура ортогонализации Грамма–Шмидта и ее применение для борьбы с помехами в адаптивной системе селекции движущихся целей" ― Радиотехника / №12 за 2007 г.
  5. ↑ Пискова А.В., Менщиков А.А., Коробейников А.Г. "Использование ортогонализации Грама-Шмидта в алгоритме приведения базиса решетки для протоколов безопасности" ― Вопросы кибербезопасности №1(14) 2016
  6. ↑ Карелин А.Е., Светлаков А.А. "Использование ортогонализации Грама-Шмидта для повышения экономичности многоточечных алгоритмов рекуррентного оценивания параметров моделей объектов управления" ― Известия Томского политехнического университета [Известия ТПУ]. — 2006. — Т. 309, № 8. — [С. 15-19].