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

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

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


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


Основные авторы описания: А.В.Кибанов, Т.З.Аджиева,.

[math]\displaystyle{ \begin{vmatrix} (a_1,a_1) & \cdots & (a_1,a_n-1) &a_1 \\ \cdots & \cdots & \cdots & \cdots \\ (a_{i},a_1) & \cdots & (a_i,a_n-1) &a_i \\ \cdots & \cdots & \cdots \\ (a_{k},a_1) & \cdots & (a_k,a_n-1) &a_k \end{vmatrix} }[/math]


ЧАСТЬ. Свойства и структура алгоритма

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

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

Исходные данные: [math]\displaystyle{ k }[/math] векторов [math]\displaystyle{ \mathbf{a_1},\mathbf{a_2},...,\mathbf{a_n} }[/math] длины [math]\displaystyle{ n }[/math] [math]\displaystyle{ \left(\alpha_{ij}\right. }[/math], [math]\displaystyle{ j=1,2,...,n }[/math], — координаты вектора [math]\displaystyle{ \left.\mathbf{a_i}\right) }[/math] .

Вычисляемые данные:

[math]\displaystyle{ k }[/math] ортогональных векторов [math]\displaystyle{ \mathbf{b_1},\mathbf{b_2},...,\mathbf{b_n} }[/math] длины [math]\displaystyle{ n }[/math], причем [math]\displaystyle{ \mathbf{b_1}=\mathbf{a_1} }[/math] либо

[math]\displaystyle{ k }[/math] ортонормированных векторов [math]\displaystyle{ \mathbf{e_1},\mathbf{e_2},...,\mathbf{e_n} }[/math] длины [math]\displaystyle{ n }[/math], причем [math]\displaystyle{ \mathbf{e_1}=\frac{\mathbf{a_1}}{|\mathbf{a_1}|} }[/math]

Формулы процесса ортогонализации:

[math]\displaystyle{ \begin{align} \mathbf{b_{1}} & =\mathbf{a_{1}}, \\ \mathbf{b_{2}}& =\mathbf{a_{2}}-proj_{\mathbf{b_1}}\mathbf{a_{1}}, \\ & ...\\ \mathbf{b_{{i} }} & = \mathbf{a_{i}}-\sum\limits_{j=1}^{i-1} proj_{\mathbf{b_j}}\mathbf{a_{j}},\\ & ...\\ \mathbf{b_{n}} & =\mathbf{ a_{n}}-\sum\limits_{j=1}^{n-1} proj_{\mathbf{b_j}}\mathbf{a_{j}},\\ \end{align} }[/math]

Здесь [math]\displaystyle{ proj_{\mathbf{b_j}}\mathbf{a_{j}} }[/math], для [math]\displaystyle{ j=1,...,n-1 }[/math] — проекция вектора [math]\displaystyle{ \mathbf{a_{j}} }[/math] на направление вектора [math]\displaystyle{ \mathbf{b_{j}} }[/math]. Это число, равное по величине проекции вектора [math]\displaystyle{ \mathbf{a_{j}} }[/math] на ось, проходящую через вектор [math]\displaystyle{ \mathbf{b_j} }[/math].

Формула для ее вычисления, полученная из определения скалярного произведения:

[math]\displaystyle{ \begin{vmatrix} (a_1,a_1) & \cdots & (a_1,a_n-1) &a_1 \\ \cdots & \cdots & \cdots & \cdots \\ (a_{i},a_1) & \cdots & (a_i,a_n-1) &a_i \\ \cdots & \cdots & \cdots \\ (a_{k},a_1) & \cdots & (a_k,a_n-1) &a_k \end{vmatrix} }[/math] (В правой части этого равенства определитель следует формально разложить по последнему столбцу). В этом случае знаменатель в формуле для вычисления проекции [math]\displaystyle{ |\mathbf{e_i}|=1 }[/math] для [math]\displaystyle{ i=1,...,n-1 }[/math], что существенно упрощает вычисления алгоритма.

Произведение длин [math]\displaystyle{ \mathbf{\left\|b_1\right\|},\left\|\mathbf{b_2}\right\|,… ,\left|\mathbf{b_k}\right\| }[/math] равно объему параллелепипеда, построенного на векторах системы [math]\displaystyle{ \left\{\mathbf{a_i}\right\} }[/math], как на ребрах

Иногда полученные векторы нормируются сразу после их нахождения и находится система ортонормированных векторов [math]\displaystyle{ \mathbf{e_1},\mathbf{e_2},...,\mathbf{e_n} }[/math].

Явное выражение векторов [math]\displaystyle{ \mathbf{|b_i|}\right\|=1 }[/math] для [math]\displaystyle{ i=1,...,k }[/math] через [math]\displaystyle{ \mathbf{a_1},\mathbf{a_2},...,\mathbf{a_n} }[/math] дает формула

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

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

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

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

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

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

ЧАСТЬ Программная реализация алгоритма

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

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

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

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

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

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

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

Литература