Участник:BDA/Ортогонализация Грама-Шмидта
| Ортогонализация Грама-Шмидта | |
| Последовательный алгоритм | |
| Последовательная сложность | [math]\displaystyle{ O(nm^2) }[/math] |
| Объём входных данных | [math]\displaystyle{ nm }[/math] |
| Объём выходных данных | [math]\displaystyle{ nm }[/math] |
| Параллельный алгоритм | |
| Высота ярусно-параллельной формы | [math]\displaystyle{ ? }[/math] |
| Ширина ярусно-параллельной формы | [math]\displaystyle{ ? }[/math] |
Основные авторы описания: Белов Н. А., Богомолов Д. А..
Свойства и структура алгоритма
Общее описание алгоритма
Математическое описание алгоритма
Вычислительное ядро алгоритма
Основное время работы алгоритма приходится на вычисление сумм [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].
- Скалярное произведение векторов требует [math]\displaystyle{ n - 1 }[/math] сложение и [math]\displaystyle{ n }[/math] произведений.
- Нормализация вектора требует 1 скалярного произведения, 1 вычисления квадратного корня и [math]\displaystyle{ n }[/math] делений, то есть:
- [math]\displaystyle{ n-1 }[/math] ([math]\displaystyle{ + }[/math]);
- [math]\displaystyle{ n }[/math] ([math]\displaystyle{ \times }[/math]);
- [math]\displaystyle{ n }[/math] ([math]\displaystyle{ \div }[/math]);
- [math]\displaystyle{ 1 }[/math] ([math]\displaystyle{ \sqrt{} }[/math]).
- Вычитание проекции вектора требует 1 скалярного произведения, [math]\displaystyle{ n }[/math] сложений и [math]\displaystyle{ n }[/math] умножений, то есть:
- [math]\displaystyle{ 2n-1 }[/math] ([math]\displaystyle{ + }[/math]);
- [math]\displaystyle{ 2n }[/math] ([math]\displaystyle{ \times }[/math]).
- Вычисление [math]\displaystyle{ i }[/math]-го вектора требует [math]\displaystyle{ i-1 }[/math] вычитаний проекций с нормализацией, то есть:
- [math]\displaystyle{ (2n-1)(i-1)+n-1 }[/math] ([math]\displaystyle{ + }[/math]);
- [math]\displaystyle{ 2n(i-1)+n }[/math] ([math]\displaystyle{ \times }[/math]);
- [math]\displaystyle{ n }[/math] ([math]\displaystyle{ \div }[/math]);
- [math]\displaystyle{ 1 }[/math] ([math]\displaystyle{ \sqrt{} }[/math]).
- Мы вычисляем вектора от [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].
- [math]\displaystyle{ (2n-1)(m-1)\frac{m}{2}+(n-1)m }[/math] ([math]\displaystyle{ + }[/math]);
- [math]\displaystyle{ 2n(m-1)\frac{m}{2}+nm }[/math] ([math]\displaystyle{ \times }[/math]);
- [math]\displaystyle{ nm }[/math] ([math]\displaystyle{ \div }[/math]);
- [math]\displaystyle{ m }[/math] ([math]\displaystyle{ \sqrt{} }[/math]).
- В скалярном произведении [math]\displaystyle{ n }[/math] делений могут быть рассмотрены как [math]\displaystyle{ n }[/math] умножений:
- [math]\displaystyle{ (2n-1)(m-1)\frac{m}{2}+(n-1)m }[/math] ([math]\displaystyle{ + }[/math]);
- [math]\displaystyle{ 2n(m-1)\frac{m}{2}+2nm }[/math] ([math]\displaystyle{ \times }[/math]);
- [math]\displaystyle{ m }[/math] ([math]\displaystyle{ \div }[/math]);
- [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 ноября.