<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Frolov</id>
	<title>Алговики - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Frolov"/>
	<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/ru/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Frolov"/>
	<updated>2026-10-22T15:11:34Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25367</id>
		<title>Классификация алгоритмов</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25367"/>
		<updated>2018-02-27T12:16:58Z</updated>

		<summary type="html">&lt;p&gt;Frolov: /* Разложения матриц */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= Задачи алгебры =&lt;br /&gt;
==Матричные и векторные операции==&lt;br /&gt;
===Векторные операции===&lt;br /&gt;
# {{level|Суммирование сдваиванием}}&lt;br /&gt;
## {{level|Нахождение суммы элементов массива сдваиванием}}&lt;br /&gt;
## {{level|Нахождение частных сумм элементов массива сдваиванием}}&lt;br /&gt;
# {{level|Равномерная норма вектора, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Скалярное произведение векторов, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Последовательно-параллельный метод суммирования}}&lt;br /&gt;
=== Умножения матриц на вектор ===&lt;br /&gt;
==== Умножения неособенных матриц на вектор ====&lt;br /&gt;
# {{level|Умножение плотной неособенной матрицы на вектор (последовательный вещественный вариант)}}&lt;br /&gt;
==== Умножения матриц специального вида на вектор ====&lt;br /&gt;
# {{level|Преобразование Фурье}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для составной размерности}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Простой алгоритм Кули-Тьюки быстрого преобразования Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Быстрое преобразование Фурье для чётных степеней двойки}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для составной размерности с небольшими простыми делителями (2,3,5,7)}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для простой размерности}}&lt;br /&gt;
===Матричные операции===&lt;br /&gt;
# {{level|Умножение плотных матриц}}&lt;br /&gt;
## {{level|Перемножение плотных неособенных матриц (последовательный вещественный вариант)}}&lt;br /&gt;
## {{level|Метод Штрассена}}&lt;br /&gt;
==Разложения матриц==&lt;br /&gt;
{{level|Задача разложения матриц}}&lt;br /&gt;
# {{level|Треугольные разложения}}&lt;br /&gt;
## {{level|Метод Гаусса (нахождение LU-разложения)}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса без перестановок}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса}}&lt;br /&gt;
#### {{level|Компактная схема метода Гаусса и её модификации}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для плотной матрицы}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы и её модификации}}&lt;br /&gt;
###### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы, последовательный вариант}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Последовательно-параллельный алгоритм для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса с перестановками}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по столбцу}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по строке}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по главной диагонали}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по всей матрице}}&lt;br /&gt;
## {{level|Метод Холецкого (нахождение симметричного треугольного разложения)}}&lt;br /&gt;
### {{level|Разложение Холецкого (метод квадратного корня)}} базовый точечный вещественный вариант для плотной симметричной положительно-определённой матрицы&lt;br /&gt;
# {{level|Известные треугольные разложения для матриц специального вида}}&lt;br /&gt;
# {{level|Унитарно-треугольные разложения}}&lt;br /&gt;
## {{level|QR-разложения плотных неособенных матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Гивенса (вращений) QR-разложения квадратной матрицы (вещественный точечный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) QR-разложения квадратной матрицы, вещественный точечный вариант}}&lt;br /&gt;
### {{level|Метод ортогонализации}}&lt;br /&gt;
#### {{level|Классический метод ортогонализации}}&lt;br /&gt;
#### {{level|Метод ортогонализации с переортогонализацией}}&lt;br /&gt;
### {{level|Метод треугольного разложения матрицы Грама}}&lt;br /&gt;
## {{level|Методы QR-разложения плотных хессенберговых матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
# {{level|Разложения, содержащие матрицу, подобную исходной}}&lt;br /&gt;
## {{level|Разложения, содержащие хессенбергову матрицу, унитарно подобную исходной}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
## {{level|Разложения, содержащие трёхдиагональную матрицу, унитарно подобную исходной}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к трёхдиагональной форме}}&lt;br /&gt;
## {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
# {{level|Разложения с использованием унитарных преобразований, не содержащие матриц, подобной исходной}}&lt;br /&gt;
## {{level|Разложения на две унитарные и одну двухдиагональную матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
## {{level|Разложения на две унитарные и одну диагональную матрицы}}&lt;br /&gt;
### {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
#### {{level|Методы нахождения сингулярных чисел двухдиагональных матриц}}&lt;br /&gt;
##### {{level|Алгоритм dqds нахождения сингулярных чисел двухдиагональной матрицы}}&lt;br /&gt;
###### {{level|Итерация алгоритма dqds}}&lt;br /&gt;
&lt;br /&gt;
==Решение систем линейных уравнений==&lt;br /&gt;
# {{level|Прямые методы решения СЛАУ}}&lt;br /&gt;
## {{level|Linpack benchmark}}&lt;br /&gt;
## {{level|Методы решения СЛАУ с матрицами специального вида}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с треугольными матрицами}}&lt;br /&gt;
#### {{level|Прямая подстановка (вещественный вариант)|Прямая подстановка}}&lt;br /&gt;
#### {{level|Обратная подстановка (вещественный вариант)|Обратная подстановка}}&lt;br /&gt;
#### {{level|Методы решения СЛАУ с двудиагональными матрицами}}&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант обратной подстановки}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с трёхдиагональными матрицами}}&lt;br /&gt;
#### {{level|Методы, основанные на стандартном LU-разложении матрицы}}&lt;br /&gt;
##### {{level|Прогонка}}&lt;br /&gt;
###### {{level|Прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Классическая монотонная прогонка, повторный вариант}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант решения трёхдиагональной СЛАУ с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Метод редукции}}&lt;br /&gt;
###### {{level|Полный метод редукции}}&lt;br /&gt;
###### {{level|Повторный метод редукции для новой правой части}}&lt;br /&gt;
##### {{level|Встречная прогонка}}&lt;br /&gt;
###### {{level|Встречная прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Повторная встречная прогонка, точечный вариант}}&lt;br /&gt;
##### {{level|Метод циклической редукции}}&lt;br /&gt;
###### {{level|Полный метод циклической редукции}}&lt;br /&gt;
###### {{level|Повторный метод циклической редукции для новой правой части}}&lt;br /&gt;
##### {{level|Метод окаймления}}&lt;br /&gt;
### Методы решения СЛАУ с блочно-треугольными матрицами&lt;br /&gt;
#### {{level|Блочная прямая подстановка (вещественный вариант)|Блочная прямая подстановка}}&lt;br /&gt;
#### {{level|Блочная обратная подстановка (вещественный вариант)|Блочная обратная подстановка}}&lt;br /&gt;
#### Методы решения СЛАУ с блочно-двухдиагональными матрицами&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с блочно-двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант обратной подстановки для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с блочно-трёхдиагональными матрицами}}&lt;br /&gt;
#### Методы, основанные на стандартном LU-разложении матрицы&lt;br /&gt;
##### {{level|Блочная прогонка}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант решения с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Встречная прогонка, блочный вариант}}&lt;br /&gt;
##### {{level|Блочный метод циклической редукции}}&lt;br /&gt;
##### {{level|Блочный метод окаймления}}&lt;br /&gt;
## {{level|Решения СЛАУ с матрицами специального вида, имеющими известные обратные матрицы}}&lt;br /&gt;
# Итерационные методы решения СЛАУ&lt;br /&gt;
## {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
## {{level|Стабилизированный метод бисопряженных градиентов (BiCGStab)}}&lt;br /&gt;
## {{level|Алгоритм_Качмажа}}&lt;br /&gt;
==Решения спектральных задач==&lt;br /&gt;
# {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
## {{level|QR-алгоритм}}&lt;br /&gt;
### {{level|QR-алгоритм, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|QR-алгоритм для хессенберговой матрицы, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для симметричных матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для комплексных эрмитовых матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для решения спектральной задачи у симметричных матриц}}&lt;br /&gt;
### {{level|Классический метод Якоби (вращений) для симметричных матриц с выбором по всей матрице}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением и барьерами}}&lt;br /&gt;
## {{level|Метод Ланцоша}}&lt;br /&gt;
### {{level|Алгоритм Ланцоша для точной арифметики (без переортогонализации)}}&lt;br /&gt;
# {{level|Частичная спектральная задача}}&lt;br /&gt;
## {{level|Метод бисекций}}&lt;br /&gt;
# {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для нахождения сингулярных значений неособенных матриц}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для нахождения сингулярных значений с циклическим перебором}}&lt;br /&gt;
### {{level|Метод Якоби для нахождения сингулярных значений со специальным подбором вращений}}&lt;br /&gt;
## {{level|QR-алгоритм в приложении к сингулярному разложению}}&lt;br /&gt;
==Алгебра многочленов==&lt;br /&gt;
# {{level|Схема Горнера, вещественная версия, последовательный вариант}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Алгоритмы на списках и массивах =&lt;br /&gt;
==Алгоритмы поиска==&lt;br /&gt;
# {{level|Линейный поиск - находит элемент в любом списке|Линейный поиск}}, &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
# {{level|Двоичный поиск - находит элемент в отсортированном списке|Двоичный поиск}}, &amp;lt;math&amp;gt;O(\log(n))&amp;lt;/math&amp;gt;&lt;br /&gt;
==Алгоритмы сортировки==&lt;br /&gt;
# {{level|Сортировка с помощью двоичного дерева}}&lt;br /&gt;
# {{level|Сортировка пузырьком}}&lt;br /&gt;
# {{level|Сортировка слиянием (последовательный и параллельный варианты)}}&lt;br /&gt;
==Алгоритмы на графах==&lt;br /&gt;
# Обход графа&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}}&lt;br /&gt;
## {{level|Поиск в глубину (DFS)}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути от одной вершины (SSSP)}}&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}} (для невзвешенных графов)&lt;br /&gt;
## {{level|Алгоритм Дейкстры}}&lt;br /&gt;
## {{level|Алгоритм Беллмана-Форда}}&lt;br /&gt;
## {{level|Алгоритм Δ-шагания}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути для всех пар вершин (APSP)}}&lt;br /&gt;
## {{level|Алгоритм Джонсона}}&lt;br /&gt;
## {{level|Алгоритм Флойда-Уоршелла}}&lt;br /&gt;
# {{level|Поиск транзитивного замыкания орграфа}}&lt;br /&gt;
## {{level|Алгоритм Пурдома}}&lt;br /&gt;
# {{level|Определение диаметра графа}}&lt;br /&gt;
# {{level|Построение минимального остовного дерева (MST)}}&lt;br /&gt;
## {{level|Алгоритм Борувки}}&lt;br /&gt;
## {{level|Алгоритм Крускала}}&lt;br /&gt;
## {{level|Алгоритм Прима}}&lt;br /&gt;
## {{level|Алгоритм GHS}}&lt;br /&gt;
# {{level|Поиск изоморфных подграфов}}&lt;br /&gt;
## {{level|Алгоритм Ульмана}}&lt;br /&gt;
## {{level|Алгоритм VF2}}&lt;br /&gt;
# {{level|Связность в графах}}&lt;br /&gt;
## {{level|Алгоритм Шилоаха-Вишкина поиска компонент связности}}&lt;br /&gt;
## {{level|Система непересекающихся множеств}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм DCSC поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна-Вишкина поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска «мостов» в графе}}&lt;br /&gt;
## {{level|Определение вершинной связности графа}}&lt;br /&gt;
## {{level|Алгоритм Габова определения рёберной связности графа}}&lt;br /&gt;
# {{level|Поиск максимального потока в транспортной сети}}&lt;br /&gt;
## {{level|Алгоритм Форда-Фалкерсона}}&lt;br /&gt;
## {{level|Алгоритм проталкивания предпотока}}&lt;br /&gt;
# {{level|Поиск потока минимальной стоимости в транспортной сети}}&lt;br /&gt;
# {{level|Задача о назначениях}}&lt;br /&gt;
## {{level|Венгерский алгоритм}}&lt;br /&gt;
## {{level|Алгоритм аукциона}}&lt;br /&gt;
## {{level|Алгоритм Гопкрофта-Карпа}}&lt;br /&gt;
# {{level|Вычисление betweenness centrality|Вычисление центральности вершин}}&lt;br /&gt;
=Вычислительная геометрия=&lt;br /&gt;
# {{level|Поиск диаметра множества точек}}&lt;br /&gt;
# {{level|Построение выпуклой оболочки набора точек}}&lt;br /&gt;
# {{level|Триангуляция Делоне}}&lt;br /&gt;
# {{level|Диаграмма Вороного}}&lt;br /&gt;
# {{level|Принадлежность точки многоугольнику}}&lt;br /&gt;
# {{level|Пересечения выпуклых многоугольников}} &lt;br /&gt;
# {{level|Пересечение звёздных многоугольников}}&lt;br /&gt;
==Компьютерная графика==&lt;br /&gt;
# {{level|Алгоритмы построения отрезка - алгоритмы для аппроксимации отрезка на дискретной графической поверхности}}&lt;br /&gt;
# {{level|Алгоритм определения видимых частей трёхмерной сцены}}&lt;br /&gt;
# {{level|Трассировка лучей - рендеринг реалистичных изображений}}&lt;br /&gt;
# {{level|Глобальное освещение - рассматривает прямое освещение и отражение от других объектов}}&lt;br /&gt;
&lt;br /&gt;
=Исследование и моделирование компьютеров=&lt;br /&gt;
==Тесты производительности компьютеров==&lt;br /&gt;
# {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
# {{level|Linpack benchmark}}&lt;br /&gt;
==Алгоритмы моделирования квантовых систем==&lt;br /&gt;
# {{level|Алгоритмы моделирования квантовых вычислений}}&lt;br /&gt;
## {{level|Однокубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Двухкубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Моделирование квантового преобразования Фурье}}&lt;br /&gt;
==Алгоритмы машинного обучения==&lt;br /&gt;
# {{level|Алгоритм k средних (k-means)}}&lt;br /&gt;
===Нейронные сети===&lt;br /&gt;
# {{level|Распознавание образов}}&lt;br /&gt;
## {{level|Распознавание текста}}&lt;br /&gt;
## {{level|Распознавание речи}}&lt;br /&gt;
## {{level|Распознавание лиц}}&lt;br /&gt;
===Алгоритмы теории игр===&lt;br /&gt;
&lt;br /&gt;
= Прикладные задачи из разных областей =&lt;br /&gt;
==Алгоритмы оптимизации==&lt;br /&gt;
# {{level|Линейное программирование}}&lt;br /&gt;
# {{level|Симплекс-метод}}&lt;br /&gt;
# {{level|Метод ветвей и границ}}&lt;br /&gt;
# {{level|Генетические алгоритмы}}&lt;br /&gt;
# {{level|Муравьиные алгоритмы}}&lt;br /&gt;
# {{level|Комбинированные алгоритмы}}&lt;br /&gt;
# {{level|Стохастическое двойственное динамическое программирование (SDDP)}}&lt;br /&gt;
==Решение систем нелинейных уравнений==&lt;br /&gt;
# {{level|Метод Ньютона для систем нелинейных уравнений}}&lt;br /&gt;
==Численные методы интегрирования==&lt;br /&gt;
# {{level|Квадратурные формулы}}&lt;br /&gt;
# {{level|Квадратурные (кубатурные) методы численного интегрирования по отрезку (многомерному кубу)}}&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод прямоугольников|Метод прямоугольников]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод трапеций|Метод трапеций]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод парабол (метод Симпсона)|Метод парабол (метод Симпсона)]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод Гаусса|Метод Гаусса]]&lt;br /&gt;
==Алгоритмы решения уравнений математической физики==&lt;br /&gt;
# {{level|Уравнение Пуассона, решение дискретным преобразованием Фурье}}&lt;br /&gt;
=Криптографические алгоритмы=&lt;br /&gt;
# {{level|Метод встречи посередине}}&lt;br /&gt;
=Другие алгоритмы=&lt;br /&gt;
&lt;br /&gt;
[[en:Algorithm classification]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Алгоритмы|*]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25366</id>
		<title>Классификация алгоритмов</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25366"/>
		<updated>2018-02-27T12:15:13Z</updated>

		<summary type="html">&lt;p&gt;Frolov: /* Разложения матриц */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= Задачи алгебры =&lt;br /&gt;
==Матричные и векторные операции==&lt;br /&gt;
===Векторные операции===&lt;br /&gt;
# {{level|Суммирование сдваиванием}}&lt;br /&gt;
## {{level|Нахождение суммы элементов массива сдваиванием}}&lt;br /&gt;
## {{level|Нахождение частных сумм элементов массива сдваиванием}}&lt;br /&gt;
# {{level|Равномерная норма вектора, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Скалярное произведение векторов, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Последовательно-параллельный метод суммирования}}&lt;br /&gt;
=== Умножения матриц на вектор ===&lt;br /&gt;
==== Умножения неособенных матриц на вектор ====&lt;br /&gt;
# {{level|Умножение плотной неособенной матрицы на вектор (последовательный вещественный вариант)}}&lt;br /&gt;
==== Умножения матриц специального вида на вектор ====&lt;br /&gt;
# {{level|Преобразование Фурье}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для составной размерности}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Простой алгоритм Кули-Тьюки быстрого преобразования Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Быстрое преобразование Фурье для чётных степеней двойки}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для составной размерности с небольшими простыми делителями (2,3,5,7)}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для простой размерности}}&lt;br /&gt;
===Матричные операции===&lt;br /&gt;
# {{level|Умножение плотных матриц}}&lt;br /&gt;
## {{level|Перемножение плотных неособенных матриц (последовательный вещественный вариант)}}&lt;br /&gt;
## {{level|Метод Штрассена}}&lt;br /&gt;
==Разложения матриц==&lt;br /&gt;
{{level|Задача разложения матриц}}&lt;br /&gt;
# {{level|Треугольные разложения}}&lt;br /&gt;
## {{level|Метод Гаусса (нахождение LU-разложения)}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса без перестановок}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса}}&lt;br /&gt;
#### {{level|Компактная схема метода Гаусса и её модификации}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для плотной матрицы}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы и её модификации}}&lt;br /&gt;
###### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы, последовательный вариант}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Последовательно-параллельный алгоритм для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса с перестановками}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по столбцу}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по строке}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по главной диагонали}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по всей матрице}}&lt;br /&gt;
## {{level|Метод Холецкого (нахождение симметричного треугольного разложения)}}&lt;br /&gt;
### {{level|Разложение Холецкого (метод квадратного корня)}} базовый точечный вещественный вариант для плотной симметричной положительно-определённой матрицы&lt;br /&gt;
# {{level|Известные треугольные разложения для матриц специального вида}}&lt;br /&gt;
# {{level|Унитарно-треугольные разложения}}&lt;br /&gt;
## {{level|QR-разложения плотных неособенных матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Гивенса (вращений) QR-разложения квадратной матрицы (вещественный точечный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) QR-разложения квадратной матрицы, вещественный точечный вариант}}&lt;br /&gt;
### {{level|Метод ортогонализации}}&lt;br /&gt;
#### {{level|Классический метод ортогонализации}}&lt;br /&gt;
#### {{level|Метод ортогонализации с переортогонализацией}}&lt;br /&gt;
### {{level|Метод треугольного разложения матрицы Грама}}&lt;br /&gt;
## {{level|Методы QR-разложения плотных хессенберговых матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
# {{level|Разложения, содержащие матрицу, подобную исходной}}&lt;br /&gt;
## {{level|Разложения, содержащие хессенбергову матрицу, унитарно подобную исходной}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
## {{level|Разложения, содержащие трёхдиагональную матрицу, унитарно подобную исходной}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к трёхдиагональной форме}}&lt;br /&gt;
## {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
# {{level|Разложения с использованием унитарных преобразований, не содержащие матриц, подобной исходной}}&lt;br /&gt;
## {{level|Неподобные разложения на унитарные и двухдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
## {{level|Разложения на унитарные и диагональные матрицы}}&lt;br /&gt;
### {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
#### {{level|Методы нахождения сингулярных чисел двухдиагональных матриц}}&lt;br /&gt;
##### {{level|Алгоритм dqds нахождения сингулярных чисел двухдиагональной матрицы}}&lt;br /&gt;
###### {{level|Итерация алгоритма dqds}}&lt;br /&gt;
&lt;br /&gt;
==Решение систем линейных уравнений==&lt;br /&gt;
# {{level|Прямые методы решения СЛАУ}}&lt;br /&gt;
## {{level|Linpack benchmark}}&lt;br /&gt;
## {{level|Методы решения СЛАУ с матрицами специального вида}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с треугольными матрицами}}&lt;br /&gt;
#### {{level|Прямая подстановка (вещественный вариант)|Прямая подстановка}}&lt;br /&gt;
#### {{level|Обратная подстановка (вещественный вариант)|Обратная подстановка}}&lt;br /&gt;
#### {{level|Методы решения СЛАУ с двудиагональными матрицами}}&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант обратной подстановки}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с трёхдиагональными матрицами}}&lt;br /&gt;
#### {{level|Методы, основанные на стандартном LU-разложении матрицы}}&lt;br /&gt;
##### {{level|Прогонка}}&lt;br /&gt;
###### {{level|Прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Классическая монотонная прогонка, повторный вариант}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант решения трёхдиагональной СЛАУ с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Метод редукции}}&lt;br /&gt;
###### {{level|Полный метод редукции}}&lt;br /&gt;
###### {{level|Повторный метод редукции для новой правой части}}&lt;br /&gt;
##### {{level|Встречная прогонка}}&lt;br /&gt;
###### {{level|Встречная прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Повторная встречная прогонка, точечный вариант}}&lt;br /&gt;
##### {{level|Метод циклической редукции}}&lt;br /&gt;
###### {{level|Полный метод циклической редукции}}&lt;br /&gt;
###### {{level|Повторный метод циклической редукции для новой правой части}}&lt;br /&gt;
##### {{level|Метод окаймления}}&lt;br /&gt;
### Методы решения СЛАУ с блочно-треугольными матрицами&lt;br /&gt;
#### {{level|Блочная прямая подстановка (вещественный вариант)|Блочная прямая подстановка}}&lt;br /&gt;
#### {{level|Блочная обратная подстановка (вещественный вариант)|Блочная обратная подстановка}}&lt;br /&gt;
#### Методы решения СЛАУ с блочно-двухдиагональными матрицами&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с блочно-двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант обратной подстановки для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с блочно-трёхдиагональными матрицами}}&lt;br /&gt;
#### Методы, основанные на стандартном LU-разложении матрицы&lt;br /&gt;
##### {{level|Блочная прогонка}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант решения с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Встречная прогонка, блочный вариант}}&lt;br /&gt;
##### {{level|Блочный метод циклической редукции}}&lt;br /&gt;
##### {{level|Блочный метод окаймления}}&lt;br /&gt;
## {{level|Решения СЛАУ с матрицами специального вида, имеющими известные обратные матрицы}}&lt;br /&gt;
# Итерационные методы решения СЛАУ&lt;br /&gt;
## {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
## {{level|Стабилизированный метод бисопряженных градиентов (BiCGStab)}}&lt;br /&gt;
## {{level|Алгоритм_Качмажа}}&lt;br /&gt;
==Решения спектральных задач==&lt;br /&gt;
# {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
## {{level|QR-алгоритм}}&lt;br /&gt;
### {{level|QR-алгоритм, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|QR-алгоритм для хессенберговой матрицы, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для симметричных матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для комплексных эрмитовых матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для решения спектральной задачи у симметричных матриц}}&lt;br /&gt;
### {{level|Классический метод Якоби (вращений) для симметричных матриц с выбором по всей матрице}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением и барьерами}}&lt;br /&gt;
## {{level|Метод Ланцоша}}&lt;br /&gt;
### {{level|Алгоритм Ланцоша для точной арифметики (без переортогонализации)}}&lt;br /&gt;
# {{level|Частичная спектральная задача}}&lt;br /&gt;
## {{level|Метод бисекций}}&lt;br /&gt;
# {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для нахождения сингулярных значений неособенных матриц}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для нахождения сингулярных значений с циклическим перебором}}&lt;br /&gt;
### {{level|Метод Якоби для нахождения сингулярных значений со специальным подбором вращений}}&lt;br /&gt;
## {{level|QR-алгоритм в приложении к сингулярному разложению}}&lt;br /&gt;
==Алгебра многочленов==&lt;br /&gt;
# {{level|Схема Горнера, вещественная версия, последовательный вариант}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Алгоритмы на списках и массивах =&lt;br /&gt;
==Алгоритмы поиска==&lt;br /&gt;
# {{level|Линейный поиск - находит элемент в любом списке|Линейный поиск}}, &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
# {{level|Двоичный поиск - находит элемент в отсортированном списке|Двоичный поиск}}, &amp;lt;math&amp;gt;O(\log(n))&amp;lt;/math&amp;gt;&lt;br /&gt;
==Алгоритмы сортировки==&lt;br /&gt;
# {{level|Сортировка с помощью двоичного дерева}}&lt;br /&gt;
# {{level|Сортировка пузырьком}}&lt;br /&gt;
# {{level|Сортировка слиянием (последовательный и параллельный варианты)}}&lt;br /&gt;
==Алгоритмы на графах==&lt;br /&gt;
# Обход графа&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}}&lt;br /&gt;
## {{level|Поиск в глубину (DFS)}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути от одной вершины (SSSP)}}&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}} (для невзвешенных графов)&lt;br /&gt;
## {{level|Алгоритм Дейкстры}}&lt;br /&gt;
## {{level|Алгоритм Беллмана-Форда}}&lt;br /&gt;
## {{level|Алгоритм Δ-шагания}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути для всех пар вершин (APSP)}}&lt;br /&gt;
## {{level|Алгоритм Джонсона}}&lt;br /&gt;
## {{level|Алгоритм Флойда-Уоршелла}}&lt;br /&gt;
# {{level|Поиск транзитивного замыкания орграфа}}&lt;br /&gt;
## {{level|Алгоритм Пурдома}}&lt;br /&gt;
# {{level|Определение диаметра графа}}&lt;br /&gt;
# {{level|Построение минимального остовного дерева (MST)}}&lt;br /&gt;
## {{level|Алгоритм Борувки}}&lt;br /&gt;
## {{level|Алгоритм Крускала}}&lt;br /&gt;
## {{level|Алгоритм Прима}}&lt;br /&gt;
## {{level|Алгоритм GHS}}&lt;br /&gt;
# {{level|Поиск изоморфных подграфов}}&lt;br /&gt;
## {{level|Алгоритм Ульмана}}&lt;br /&gt;
## {{level|Алгоритм VF2}}&lt;br /&gt;
# {{level|Связность в графах}}&lt;br /&gt;
## {{level|Алгоритм Шилоаха-Вишкина поиска компонент связности}}&lt;br /&gt;
## {{level|Система непересекающихся множеств}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм DCSC поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна-Вишкина поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска «мостов» в графе}}&lt;br /&gt;
## {{level|Определение вершинной связности графа}}&lt;br /&gt;
## {{level|Алгоритм Габова определения рёберной связности графа}}&lt;br /&gt;
# {{level|Поиск максимального потока в транспортной сети}}&lt;br /&gt;
## {{level|Алгоритм Форда-Фалкерсона}}&lt;br /&gt;
## {{level|Алгоритм проталкивания предпотока}}&lt;br /&gt;
# {{level|Поиск потока минимальной стоимости в транспортной сети}}&lt;br /&gt;
# {{level|Задача о назначениях}}&lt;br /&gt;
## {{level|Венгерский алгоритм}}&lt;br /&gt;
## {{level|Алгоритм аукциона}}&lt;br /&gt;
## {{level|Алгоритм Гопкрофта-Карпа}}&lt;br /&gt;
# {{level|Вычисление betweenness centrality|Вычисление центральности вершин}}&lt;br /&gt;
=Вычислительная геометрия=&lt;br /&gt;
# {{level|Поиск диаметра множества точек}}&lt;br /&gt;
# {{level|Построение выпуклой оболочки набора точек}}&lt;br /&gt;
# {{level|Триангуляция Делоне}}&lt;br /&gt;
# {{level|Диаграмма Вороного}}&lt;br /&gt;
# {{level|Принадлежность точки многоугольнику}}&lt;br /&gt;
# {{level|Пересечения выпуклых многоугольников}} &lt;br /&gt;
# {{level|Пересечение звёздных многоугольников}}&lt;br /&gt;
==Компьютерная графика==&lt;br /&gt;
# {{level|Алгоритмы построения отрезка - алгоритмы для аппроксимации отрезка на дискретной графической поверхности}}&lt;br /&gt;
# {{level|Алгоритм определения видимых частей трёхмерной сцены}}&lt;br /&gt;
# {{level|Трассировка лучей - рендеринг реалистичных изображений}}&lt;br /&gt;
# {{level|Глобальное освещение - рассматривает прямое освещение и отражение от других объектов}}&lt;br /&gt;
&lt;br /&gt;
=Исследование и моделирование компьютеров=&lt;br /&gt;
==Тесты производительности компьютеров==&lt;br /&gt;
# {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
# {{level|Linpack benchmark}}&lt;br /&gt;
==Алгоритмы моделирования квантовых систем==&lt;br /&gt;
# {{level|Алгоритмы моделирования квантовых вычислений}}&lt;br /&gt;
## {{level|Однокубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Двухкубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Моделирование квантового преобразования Фурье}}&lt;br /&gt;
==Алгоритмы машинного обучения==&lt;br /&gt;
# {{level|Алгоритм k средних (k-means)}}&lt;br /&gt;
===Нейронные сети===&lt;br /&gt;
# {{level|Распознавание образов}}&lt;br /&gt;
## {{level|Распознавание текста}}&lt;br /&gt;
## {{level|Распознавание речи}}&lt;br /&gt;
## {{level|Распознавание лиц}}&lt;br /&gt;
===Алгоритмы теории игр===&lt;br /&gt;
&lt;br /&gt;
= Прикладные задачи из разных областей =&lt;br /&gt;
==Алгоритмы оптимизации==&lt;br /&gt;
# {{level|Линейное программирование}}&lt;br /&gt;
# {{level|Симплекс-метод}}&lt;br /&gt;
# {{level|Метод ветвей и границ}}&lt;br /&gt;
# {{level|Генетические алгоритмы}}&lt;br /&gt;
# {{level|Муравьиные алгоритмы}}&lt;br /&gt;
# {{level|Комбинированные алгоритмы}}&lt;br /&gt;
# {{level|Стохастическое двойственное динамическое программирование (SDDP)}}&lt;br /&gt;
==Решение систем нелинейных уравнений==&lt;br /&gt;
# {{level|Метод Ньютона для систем нелинейных уравнений}}&lt;br /&gt;
==Численные методы интегрирования==&lt;br /&gt;
# {{level|Квадратурные формулы}}&lt;br /&gt;
# {{level|Квадратурные (кубатурные) методы численного интегрирования по отрезку (многомерному кубу)}}&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод прямоугольников|Метод прямоугольников]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод трапеций|Метод трапеций]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод парабол (метод Симпсона)|Метод парабол (метод Симпсона)]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод Гаусса|Метод Гаусса]]&lt;br /&gt;
==Алгоритмы решения уравнений математической физики==&lt;br /&gt;
# {{level|Уравнение Пуассона, решение дискретным преобразованием Фурье}}&lt;br /&gt;
=Криптографические алгоритмы=&lt;br /&gt;
# {{level|Метод встречи посередине}}&lt;br /&gt;
=Другие алгоритмы=&lt;br /&gt;
&lt;br /&gt;
[[en:Algorithm classification]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Алгоритмы|*]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=QR-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC&amp;diff=25365</id>
		<title>QR-алгоритм</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=QR-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC&amp;diff=25365"/>
		<updated>2018-02-27T12:12:27Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-m}}&lt;br /&gt;
&lt;br /&gt;
Авторы описания: [[Участник:Смирнова_Александра|Смирнова А.С.]] ([[QR-алгоритм#Математическое описание|Раздел 2]]), [[Участник:Frolov|Фролов А.В.]] (общая редактура и правка)&lt;br /&gt;
&lt;br /&gt;
[[Спектральное разложение (нахождение собственных значений и векторов)|Задача нахождения собственных значений и собственных векторов]] для матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; заключается в поиске таких соответствующих друг другу чисел &amp;lt;math&amp;gt;\lambda&amp;lt;/math&amp;gt; и &#039;&#039;ненулевых&#039;&#039; векторов &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, которые удовлетворяют уравнению &amp;lt;math style=&amp;quot;vertical-align:0%&amp;quot;&amp;gt;Ax=\lambda x&amp;lt;/math&amp;gt;, при этом числа &amp;lt;math&amp;gt;\lambda&amp;lt;/math&amp;gt; называются собственными значениями, а вектора &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; - собственными векторами&amp;lt;ref&amp;gt;В.В.Воеводин, Ю.А.Кузнецов. Матрицы и вычисления. М.: Наука, 1984.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Данная задача является одной из самых сложных задач линейной алгебры&amp;lt;ref name=&amp;quot;VOLA&amp;quot;&amp;gt;Воеводин В.В. Вычислительные основы линейной алгебры. М.: Наука, 1977.&amp;lt;/ref&amp;gt;. Собственные вектора и собственные значения применяются в различных областях науки: в аналитической геометрии, при решении систем интегральных уравнений, в математической физике. Однако не существует прямых методов вычисления собственных значений для матриц общего вида, поэтому данная задача на практике решается численными итерационными методами. Одним из них является &#039;&#039;&#039;QR-алгоритм&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Общее описание метода ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QR-алгоритм&#039;&#039;&#039; — это численный &#039;&#039;&#039;метод&#039;&#039;&#039; в линейной алгебре, предназначенный для решения полной проблемы собственных значений, то есть отыскания всех собственных чисел матрицы. При этом QR-алгоритм позволяет найти сразу и собственные вектора матрицы. Он был разработан в конце 1950-х годов независимо В.Н. Кублановской(Россия)&amp;lt;ref&amp;gt;Кублановская В.Н. О некоторых алгоритмах для решения полной проблемы собственных значений // Ж. вычисл.&lt;br /&gt;
матем. и матем. физ. 1961. Т. 1. № 4. С. 555–570&amp;lt;/ref&amp;gt; и Дж. Фрэнсисом(Англия)&amp;lt;ref&amp;gt;J.G.F. Francis, &amp;quot;The QR Transformation, I&amp;quot;, &#039;&#039;The Computer Journal&#039;&#039;, 1961, vol. 4, no. 3, pp. 265-271&amp;lt;/ref&amp;gt;. Открытию QR-алгоритма предшествовал LR-алгоритм, который использовал LU-разложение вместо QR-разложения. В настоящее время LR-алгоритм используется очень редко ввиду своей меньшей эффективности, однако он был важным шагом на пути к открытию QR-алгоритма&amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/QR_algorithm Wikipedia: QR-algorithm]&amp;lt;/ref&amp;gt;. В настоящее время под QR-алгоритмом понимается не только исходно разработанный В.Н.Кублановской и Дж. Фрэнсисом алгоритм, но и всю совокупность более поздних приёмов его ускорения.&lt;br /&gt;
&lt;br /&gt;
Суть базового QR-алгоритма заключается в итерационном приведении матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; к некоторой унитарно подобной ей матрице &amp;lt;math&amp;gt;A_N&amp;lt;/math&amp;gt; при помощи QR-разложения. Матрица &amp;lt;math&amp;gt;A_N&amp;lt;/math&amp;gt; является правой верхней треугольной матрицей, а значит ее диагональ содержит собственные значения. В силу подобия матриц &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;A_N&amp;lt;/math&amp;gt; их наборы собственных значений совпадают. Таким образом задача поиска собственных значений матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; сводится к задаче выведения матрицы &amp;lt;math&amp;gt;A_N&amp;lt;/math&amp;gt; и поиска собственных значений для нее, что является тривиальной задачей.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание базового метода ==&lt;br /&gt;
&lt;br /&gt;
Известно, что произвольная квадратная матрица может быть представлена в виде произведения унитарной (&#039;&#039;в вещественном случае ортогональной&#039;&#039;) и верхней треугольной матриц. Такое разложение называется [[QR-разложения плотных неособенных матриц|QR-разложением]]. &lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;A_0 = A&amp;lt;/math&amp;gt; — исходная матрица.&lt;br /&gt;
Для &amp;lt;math&amp;gt;k = 0, 1, 2, \ldots&amp;lt;/math&amp;gt; выполняется QR-разложение:&lt;br /&gt;
* &amp;lt;math&amp;gt;A_{k} = Q_kR_k&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; — унитарная (&#039;&#039;ортогональная&#039;&#039;) матрица, &amp;lt;math&amp;gt;R_k&amp;lt;/math&amp;gt; — верхняя треугольная матрица, и затем найденные матрицы перемножаются в обратном порядке:&lt;br /&gt;
* &amp;lt;math&amp;gt;A_{k+1} = R_kQ_k&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Поскольку &amp;lt;math&amp;gt;A_{k+1} = R_kQ_k = Q_k^{*}A_{k}Q_k&amp;lt;/math&amp;gt;, то матрицы &amp;lt;math&amp;gt;A_{k+1}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;A_k&amp;lt;/math&amp;gt; унитарно подобны для любого &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Поэтому матрицы &amp;lt;math&amp;gt;A_1, A_2, \ldots&amp;lt;/math&amp;gt; унитарно подобны исходной матрице &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; и имеют те же собственные значения.&lt;br /&gt;
&lt;br /&gt;
В специальной литературе по численным методам приводится доказательство&amp;lt;ref name=&amp;quot;VOLA&amp;quot; /&amp;gt; сходимости получающихся матриц к клеточной правой треугольной матрице с диагональными клетками, размеры которых зависят от размеров канонических ящиков Жордана исходной матрицы. Таким образом, проблема собственных значений матрицы сводится к проблемам собственных значений матриц меньшего размера. QR-алгоритм в узком смысле и есть эта процедура. Однако обычно к нему относят не только её, но и весь комплекс приёмов ускорения этого итерационного метода. &lt;br /&gt;
&lt;br /&gt;
=== Особенности вещественного несимметричного варианта QR-алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Если вещественная матрица &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; имеет различные вещественные собственные значения, то, как было описано ранее, QR-алгоритм сходится к матрице с верхней треугольной формой, на диагонали которой находятся собственные значения. Однако вещественная матрица может иметь комплексные собственные значения. В данном случае алгоритм будет сходиться не к верхней треугольной матрице, а к блочной верхней треугольной матрице, которая на диагонали содержит блоки 1-го и 2-го порядка. Блоки 1-го порядка содержат различные вещественные собственные значения, блоки 2-го порядка соответствуют парам комплексных сопряженных собственных значений&amp;lt;ref name = &amp;quot;Dem&amp;quot;&amp;gt; Деммель Д. Вычислительная линейная алгебра. – 2001. - С.261-264. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A_N=  &lt;br /&gt;
\begin{bmatrix}&lt;br /&gt;
 \blacksquare&amp;amp;  \bullet&amp;amp;  \bullet&amp;amp;  \cdots&amp;amp;  \cdots&amp;amp;  \cdots&amp;amp;  \cdots&amp;amp;  \cdots&amp;amp; \bullet\\ &lt;br /&gt;
 0&amp;amp;  \blacksquare&amp;amp;  \blacksquare&amp;amp;  \bullet&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp; \vdots\\ &lt;br /&gt;
 0&amp;amp;  \blacksquare&amp;amp;  \blacksquare&amp;amp;  \bullet&amp;amp;  \bullet&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp; \vdots\\ &lt;br /&gt;
 \vdots&amp;amp;  0&amp;amp;  0&amp;amp;  \blacksquare&amp;amp;  \bullet&amp;amp;  \bullet&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp; \vdots\\ &lt;br /&gt;
 \vdots&amp;amp;  \ddots&amp;amp;  0&amp;amp;  0&amp;amp;  \blacksquare&amp;amp;  \bullet&amp;amp;  \bullet&amp;amp;  \ddots&amp;amp; \vdots\\ &lt;br /&gt;
 \vdots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  0&amp;amp;  0&amp;amp;  \blacksquare&amp;amp;  \blacksquare&amp;amp;  \ddots&amp;amp; \vdots\\ &lt;br /&gt;
 \vdots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  0&amp;amp;  \blacksquare&amp;amp;  \blacksquare&amp;amp;  \ddots&amp;amp; \bullet\\ &lt;br /&gt;
 \vdots&amp;amp;   \ddots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp; \bullet\\ &lt;br /&gt;
 0&amp;amp;  \cdots&amp;amp;  \cdots&amp;amp;  \cdots&amp;amp;  \cdots&amp;amp;  \cdots&amp;amp;  0&amp;amp;  0&amp;amp; \blacksquare&lt;br /&gt;
\end{bmatrix}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Надо сказать, что при применении QR-алгоритма к симметричным матрицам такой проблемы не возникает, поскольку у них нет комплексных собственных значений. Кроме этого, приведение к хессенберговой форме в силу симметрии автоматически даст трёхдиагональную форму и, как следствие, линейную сложность одной итерации, что существенно ускоряет исполнение в сравнении с матрицами общего вида. В существующих пакетах программ для того, чтобы не выполнять итерации в комплексной арифметике, выполняют т.н. неявный двойной сдвиг&amp;lt;ref name = &amp;quot;Dem&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ускорение сходимости QR-алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Применение приёмов ускорения даёт QR-алгоритму существенные преимущества перед альтернативными методами решения проблемы собственных значений. Приёмы делятся по своей сути на две группы - приёмы ускорения одной итерации алгоритма и приёмы ускорения сходимости итерационного процесса, то есть уменьшения числа итераций. &lt;br /&gt;
&lt;br /&gt;
=== Использование хессенберговой формы матрицы ===&lt;br /&gt;
&lt;br /&gt;
Хессенбергова (почти треугольная) форма матрицы интересна в приложении к QR-алгоритму тем, что в случае, если &amp;lt;math&amp;gt;A_0 = A&amp;lt;/math&amp;gt; имеет эту форму, то имеют её и все матрицы &amp;lt;math&amp;gt;A_k&amp;lt;/math&amp;gt;. Если теперь посмотреть на методы [[QR-разложения плотных неособенных матриц]], то видно, что выполнение разложения &amp;lt;math&amp;gt;A_k = Q_kR_k&amp;lt;/math&amp;gt; в случае плотной неособенной &amp;lt;math&amp;gt;A_k&amp;lt;/math&amp;gt;требует (в последовательном варианте) &amp;lt;math&amp;gt;O(n^3)&amp;lt;/math&amp;gt; операций, как и последующий процесс вычисления &amp;lt;math&amp;gt;A_{k+1} = R_kQ_k&amp;lt;/math&amp;gt;. В случае же, если матрицы хессенберговы, то как [[Методы QR-разложения плотных хессенберговых матриц|QR-разложения плотных хессенберговых матриц]], так и вычисления &amp;lt;math&amp;gt;A_{k+1} = R_kQ_k&amp;lt;/math&amp;gt; потребуют уже по &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt; операций. Это позволяет экономить если не время (критические пути графа алгоритма линейны для лучших методов QR-разложения и для плотной матрицы, и для хессенберговой), то довольно большие вычислительные ресурсы. &lt;br /&gt;
&lt;br /&gt;
Поэтому естественным приёмом ускорения итераций QR-алгоритма является начальное [[Разложения, содержащие хессенбергову матрицу, унитарно подобную исходной|унитарно подобное приведение матрицы к хессенбергову виду]]. После этого все процедуры QR-алгоритма следует проводить уже с матрицами хессенберговой формы.&lt;br /&gt;
&lt;br /&gt;
В случае, если исходная матрица эрмитова (в вещественном случае - симметричная), то унитарно подобное приведение к хессенберговому виду становится [[Разложения, содержащие трёхдиагональную матрицу, унитарно подобную исходной|приведением к трёхдиагональному симметричному виду]]. В этом случае QR-алгоритм становится ещё &lt;br /&gt;
быстрее, благодаря существенно большему количеству нулей в структурах образующихся матриц..&lt;br /&gt;
&lt;br /&gt;
=== Сдвиги QR-алгоритма ===&lt;br /&gt;
&lt;br /&gt;
QR-алгоритм со сдвигами позволяет сократить количество итераций, необходимых для сходимости&amp;lt;ref name=&amp;quot;bahvalov&amp;quot;&amp;gt;Бахвалов Н.С., Жидков Н.П., Кобельков. Г.М. &amp;quot;Численные методы&amp;quot;— 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;. Пусть у нас есть матрица &amp;lt;math&amp;gt;A_k&amp;lt;/math&amp;gt;, тогда процесс перехода к матрице &amp;lt;math&amp;gt;A_{k+1}&amp;lt;/math&amp;gt; выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
* На каждом шаге подбирается число &amp;lt;math&amp;gt;\nu_k&amp;lt;/math&amp;gt; и ищется следующее QR-разложение: &amp;lt;math&amp;gt;A_k-\nu_kE=Q_kR_k&amp;lt;/math&amp;gt;.&lt;br /&gt;
* Вычисляется матрица &amp;lt;math&amp;gt;A_{k+1}&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;A_{k+1} = R_kQ_k+\nu_kE&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
При этом сохраняется свойство подобия матриц &amp;lt;math&amp;gt;A_k&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;A_{k+1}&amp;lt;/math&amp;gt;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A_{k+1} = R_kQ_k+\nu_kE=Q_{k}^{T}Q_kR_kQ_k+\nu_kE=Q_{k}^{T}(A_k-\nu_kE)Q_k+\nu_kE=Q_{k}^{T}A_kQ_k-Q_{k}^{T}(\nu_kE)Q_k+\nu_kE=Q_{k}^{T}A_kQ_k-\nu_kE+\nu_kE=Q_{k}^{T}A_kQ_k&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Подбор параметра &amp;lt;math&amp;gt;\nu_k&amp;lt;/math&amp;gt; осуществляется в зависимости от элементов матрицы &amp;lt;math&amp;gt;A_k&amp;lt;/math&amp;gt;. При алгоритме подбора параметров, известном, как &#039;&#039;правило Фрэнсиса&#039;&#039;, среднее количество итераций для большинства матриц получается порядка 2 на одно собственное значение. Существуют, однако, матрицы, для которых правило Фрэнсиса не даёт сходимости, поэтому если по истечении 10 итераций с обычным сдвигом не получилось сходимости, применяют так называемые &amp;quot;особые сдвиги&amp;quot;. Для симметрического же случая используется стратегия Уилкинсона&amp;lt;ref name = &amp;quot;Dem&amp;quot; /&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Указанные стратегии выбора сдвигов используется в программах библиотек LAPACK и SCALAPACK. Но они не являются наилучшими, поскольку для выбора новых сдвигов нужно провести предшествующие итерации до конца. Поэтому в публикациях XXI века уже появились описания т.н. многосдвиговых итераций. В этой стратегии выбор сдвигов также выполняется с помощью собственных чисел подматриц из нижнего правого угла обрабатываемых блоков, но их размерность уже берётся больше, чем 2&amp;lt;ref&amp;gt;R. Granat, Bo Kagstrom, D. Kressner &amp;quot;LAPACK Working Note #216: A novel parallel QR algorithm for hybrid distributed memory HPC systems&amp;quot;.&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
=== Неявное проведение итераций === &lt;br /&gt;
&lt;br /&gt;
Q-теорема&amp;lt;ref name = &amp;quot;Dem&amp;quot; /&amp;gt; помогает не вычислять в явном виде требуемые матрицы с их последующим перемножением, а выполнять эти операции неявно. При этом в соответствии с [[QR-алгоритм#Особенности вещественного несимметричного варианта QR-алгоритма|особенностями вещественного случая несимметричных матриц]] удаётся выполнять т.н. неявный двойной сдвиг с использованием двух комплексно сопряжённых сдвигов (например, из правила Фрэнсиса), оставаясь в рамках вещественной арифметрики, с помощью выполнения двусторонними преобразованиями Хаусхолдера т.н. вытеснения выступа. В вещественном случае аналогично (но с преимуществами симметрии) выполняется неявный одинарный сдвиг, вытеснением выступа двусторонними преобразованиями вращения (Гивенса). &lt;br /&gt;
&lt;br /&gt;
=== Обнуление поддиагональных элементов (дефляция) ===&lt;br /&gt;
&lt;br /&gt;
После того, как под диагональю какой-либо элемент становится менее порогового значения, его считают равным нулю. Это даёт возможность применить разделение диагональных блоков матрицы, соседствующих с ним, и раздельное вычисление их собственных чисел. Приём называется &#039;&#039;&#039;дефляцией&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== QR-алгоритм в различных вариантах ==&lt;br /&gt;
&lt;br /&gt;
В классическом (без приёмов ускорения) виде QR-алгоритм не применяется из-за медленности. Варианты метода, в основном, используются для матриц разного вида:&lt;br /&gt;
&lt;br /&gt;
=== Метод для матриц общего вида ===&lt;br /&gt;
&lt;br /&gt;
[[QR-алгоритм, используемый в SCALAPACK]] для решения проблемы собственных значений у матриц общего вида в настоящее время использует тот подход к выбору сдвигов, который не подтверждён теоретически, но имел лучшие практические показатели на момент создания библиотеки LAPACK. Это выполнение процедуры &amp;quot;двойного сдвига&amp;quot; с величинами, равными собственным значениям последней диагональной клетки размера 2х2 у всех диагональных блоков, больших размером.&lt;br /&gt;
Поскольку существуют матрицы, для которых этот выбор сдвигов не даёт сходимости, то после 10й итерации при отсутствии уменьшения поддиагональных элементов выполняется некий &amp;quot;особый&amp;quot; сдвиг.&lt;br /&gt;
&lt;br /&gt;
=== Метод для симметричных и эрмитовых матриц ===&lt;br /&gt;
&lt;br /&gt;
В случае симметрии (для вещественных матриц) или эрмитовости (для комплексных) применяемый для решения проблемы собственных значений QR-алгоритм использует особенности как самой задачи (собственные числа таких матриц вещественны), так и получаемых промежуточных результатов (хессенберговы матрицы оказываются трёхдиагональными симметричными), что сокращает расчёты.  &lt;br /&gt;
[[QR-алгоритм для симметричных матриц, используемый в SCALAPACK]] для решения проблемы собственных значений у симметричных матриц в настоящее время использует подход к выбору сдвигов, разработанный в начале 90-х гг. XX века&amp;lt;ref&amp;gt;G. HENRY, Improving Data Re-Use in Eigenvalue-Related Computations, PhD thesis, Cornell University, Ithaca, NY, January 1994&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Использование QR-алгоритма для нахождения сингулярных чисел ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=QR-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC&amp;diff=25364</id>
		<title>QR-алгоритм</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=QR-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC&amp;diff=25364"/>
		<updated>2018-02-27T12:11:07Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-m}}&lt;br /&gt;
&lt;br /&gt;
Авторы описания: [[Участник:Смирнова_Александра|Смирнова А.С.]] ([[QR-алгоритм#Математическое описание|Раздел 2]]), [[Участник:Frolov|Фролов А.В.]] (общая редактура и правка)&lt;br /&gt;
&lt;br /&gt;
[[Спектральное разложение (нахождение собственных значений и векторов)|Задача нахождения собственных значений и собственных векторов]] для матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; заключается в поиске таких соответствующих друг другу чисел &amp;lt;math&amp;gt;\lambda&amp;lt;/math&amp;gt; и &#039;&#039;ненулевых&#039;&#039; векторов &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, которые удовлетворяют уравнению &amp;lt;math style=&amp;quot;vertical-align:0%&amp;quot;&amp;gt;Ax=\lambda x&amp;lt;/math&amp;gt;, при этом числа &amp;lt;math&amp;gt;\lambda&amp;lt;/math&amp;gt; называются собственными значениями, а вектора &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; - собственными векторами&amp;lt;ref&amp;gt;В.В.Воеводин, Ю.А.Кузнецов. Матрицы и вычисления. М.: Наука, 1984.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Данная задача является одной из самых сложных задач линейной алгебры&amp;lt;ref name=&amp;quot;VOLA&amp;quot;&amp;gt;Воеводин В.В. Вычислительные основы линейной алгебры. М.: Наука, 1977.&amp;lt;/ref&amp;gt;. Собственные вектора и собственные значения применяются в различных областях науки: в аналитической геометрии, при решении систем интегральных уравнений, в математической физике. Однако не существует прямых методов вычисления собственных значений для матриц общего вида, поэтому данная задача на практике решается численными итерационными методами. Одним из них является &#039;&#039;&#039;QR-алгоритм&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Общее описание метода ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;QR-алгоритм&#039;&#039;&#039; — это численный &#039;&#039;&#039;метод&#039;&#039;&#039; в линейной алгебре, предназначенный для решения полной проблемы собственных значений, то есть отыскания всех собственных чисел матрицы. При этом QR-алгоритм позволяет найти сразу и собственные вектора матрицы. Он был разработан в конце 1950-х годов независимо В.Н. Кублановской(Россия)&amp;lt;ref&amp;gt;Кублановская В.Н. О некоторых алгоритмах для решения полной проблемы собственных значений // Ж. вычисл.&lt;br /&gt;
матем. и матем. физ. 1961. Т. 1. № 4. С. 555–570&amp;lt;/ref&amp;gt; и Дж. Фрэнсисом(Англия)&amp;lt;ref&amp;gt;J.G.F. Francis, &amp;quot;The QR Transformation, I&amp;quot;, &#039;&#039;The Computer Journal&#039;&#039;, 1961, vol. 4, no. 3, pp. 265-271&amp;lt;/ref&amp;gt;. Открытию QR-алгоритма предшествовал LR-алгоритм, который использовал LU-разложение вместо QR-разложения. В настоящее время LR-алгоритм используется очень редко ввиду своей меньшей эффективности, однако он был важным шагом на пути к открытию QR-алгоритма&amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/QR_algorithm Wikipedia: QR-algorithm]&amp;lt;/ref&amp;gt;. В настоящее время под QR-алгоритмом понимается не только исходно разработанный В.Н.Кублановской и Дж. Фрэнсисом алгоритм, но и всю совокупность более поздних приёмов его ускорения.&lt;br /&gt;
&lt;br /&gt;
Суть базового QR-алгоритма заключается в итерационном приведении матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; к некоторой унитарно подобной ей матрице &amp;lt;math&amp;gt;A_N&amp;lt;/math&amp;gt; при помощи QR-разложения. Матрица &amp;lt;math&amp;gt;A_N&amp;lt;/math&amp;gt; является правой верхней треугольной матрицей, а значит ее диагональ содержит собственные значения. В силу подобия матриц &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;A_N&amp;lt;/math&amp;gt; их наборы собственных значений совпадают. Таким образом задача поиска собственных значений матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; сводится к задаче выведения матрицы &amp;lt;math&amp;gt;A_N&amp;lt;/math&amp;gt; и поиска собственных значений для нее, что является тривиальной задачей.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание базового метода ==&lt;br /&gt;
&lt;br /&gt;
Известно, что произвольная квадратная матрица может быть представлена в виде произведения унитарной (&#039;&#039;в вещественном случае ортогональной&#039;&#039;) и верхней треугольной матриц. Такое разложение называется [[QR-разложения плотных неособенных матриц|QR-разложением]]. &lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;A_0 = A&amp;lt;/math&amp;gt; — исходная матрица.&lt;br /&gt;
Для &amp;lt;math&amp;gt;k = 0, 1, 2, \ldots&amp;lt;/math&amp;gt; выполняется QR-разложение:&lt;br /&gt;
* &amp;lt;math&amp;gt;A_{k} = Q_kR_k&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;Q_k&amp;lt;/math&amp;gt; — унитарная (&#039;&#039;ортогональная&#039;&#039;) матрица, &amp;lt;math&amp;gt;R_k&amp;lt;/math&amp;gt; — верхняя треугольная матрица, и затем найденные матрицы перемножаются в обратном порядке:&lt;br /&gt;
* &amp;lt;math&amp;gt;A_{k+1} = R_kQ_k&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Поскольку &amp;lt;math&amp;gt;A_{k+1} = R_kQ_k = Q_k^{*}A_{k}Q_k&amp;lt;/math&amp;gt;, то матрицы &amp;lt;math&amp;gt;A_{k+1}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;A_k&amp;lt;/math&amp;gt; унитарно подобны для любого &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Поэтому матрицы &amp;lt;math&amp;gt;A_1, A_2, \ldots&amp;lt;/math&amp;gt; унитарно подобны исходной матрице &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; и имеют те же собственные значения.&lt;br /&gt;
&lt;br /&gt;
В специальной литературе по численным методам приводится доказательство&amp;lt;ref name=&amp;quot;VOLA&amp;quot; /&amp;gt; сходимости получающихся матриц к клеточной правой треугольной матрице с диагональными клетками, размеры которых зависят от размеров канонических ящиков Жордана исходной матрицы. Таким образом, проблема собственных значений матрицы сводится к проблемам собственных значений матриц меньшего размера. QR-алгоритм в узком смысле и есть эта процедура. Однако обычно к нему относят не только её, но и весь комплекс приёмов ускорения этого итерационного метода. &lt;br /&gt;
&lt;br /&gt;
=== Особенности вещественного несимметричного варианта QR-алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Если вещественная матрица &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; имеет различные вещественные собственные значения, то, как было описано ранее, QR-алгоритм сходится к матрице с верхней треугольной формой, на диагонали которой находятся собственные значения. Однако вещественная матрица может иметь комплексные собственные значения. В данном случае алгоритм будет сходиться не к верхней треугольной матрице, а к блочной верхней треугольной матрице, которая на диагонали содержит блоки 1-го и 2-го порядка. Блоки 1-го порядка содержат различные вещественные собственные значения, блоки 2-го порядка соответствуют парам комплексных сопряженных собственных значений&amp;lt;ref name = &amp;quot;Dem&amp;quot;&amp;gt; Деммель Д. Вычислительная линейная алгебра. – 2001. - С.261-264. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A_N=  &lt;br /&gt;
\begin{bmatrix}&lt;br /&gt;
 \blacksquare&amp;amp;  \bullet&amp;amp;  \bullet&amp;amp;  \cdots&amp;amp;  \cdots&amp;amp;  \cdots&amp;amp;  \cdots&amp;amp;  \cdots&amp;amp; \bullet\\ &lt;br /&gt;
 0&amp;amp;  \blacksquare&amp;amp;  \blacksquare&amp;amp;  \bullet&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp; \vdots\\ &lt;br /&gt;
 0&amp;amp;  \blacksquare&amp;amp;  \blacksquare&amp;amp;  \bullet&amp;amp;  \bullet&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp; \vdots\\ &lt;br /&gt;
 \vdots&amp;amp;  0&amp;amp;  0&amp;amp;  \blacksquare&amp;amp;  \bullet&amp;amp;  \bullet&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp; \vdots\\ &lt;br /&gt;
 \vdots&amp;amp;  \ddots&amp;amp;  0&amp;amp;  0&amp;amp;  \blacksquare&amp;amp;  \bullet&amp;amp;  \bullet&amp;amp;  \ddots&amp;amp; \vdots\\ &lt;br /&gt;
 \vdots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  0&amp;amp;  0&amp;amp;  \blacksquare&amp;amp;  \blacksquare&amp;amp;  \ddots&amp;amp; \vdots\\ &lt;br /&gt;
 \vdots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  0&amp;amp;  \blacksquare&amp;amp;  \blacksquare&amp;amp;  \ddots&amp;amp; \bullet\\ &lt;br /&gt;
 \vdots&amp;amp;   \ddots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp;  \ddots&amp;amp; \bullet\\ &lt;br /&gt;
 0&amp;amp;  \cdots&amp;amp;  \cdots&amp;amp;  \cdots&amp;amp;  \cdots&amp;amp;  \cdots&amp;amp;  0&amp;amp;  0&amp;amp; \blacksquare&lt;br /&gt;
\end{bmatrix}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Надо сказать, что при применении QR-алгоритма к симметричным матрицам такой проблемы не возникает, поскольку у них нет комплексных собственных значений. Кроме этого, приведение к хессенберговой форме в силу симметрии автоматически даст трёхдиагональную форму и, как следствие, линейную сложность одной итерации, что существенно ускоряет исполнение в сравнении с матрицами общего вида. В существующих пакетах программ для того, чтобы не выполнять итерации в комплексной арифметике, выполняют т.н. неявный двойной сдвиг&amp;lt;ref name = &amp;quot;Dem&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Ускорение сходимости QR-алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Применение приёмов ускорения даёт QR-алгоритму существенные преимущества перед альтернативными методами решения проблемы собственных значений. Приёмы делятся по своей сути на две группы - приёмы ускорения одной итерации алгоритма и приёмы ускорения сходимости итерационного процесса, то есть уменьшения числа итераций. &lt;br /&gt;
&lt;br /&gt;
=== Использование хессенберговой формы матрицы ===&lt;br /&gt;
&lt;br /&gt;
Хессенбергова (почти треугольная) форма матрицы интересна в приложении к QR-алгоритму тем, что в случае, если &amp;lt;math&amp;gt;A_0 = A&amp;lt;/math&amp;gt; имеет эту форму, то имеют её и все матрицы &amp;lt;math&amp;gt;A_k&amp;lt;/math&amp;gt;. Если теперь посмотреть на методы [[QR-разложения плотных неособенных матриц]], то видно, что выполнение разложения &amp;lt;math&amp;gt;A_k = Q_kR_k&amp;lt;/math&amp;gt; в случае плотной неособенной &amp;lt;math&amp;gt;A_k&amp;lt;/math&amp;gt;требует (в последовательном варианте) &amp;lt;math&amp;gt;O(n^3)&amp;lt;/math&amp;gt; операций, как и последующий процесс вычисления &amp;lt;math&amp;gt;A_{k+1} = R_kQ_k&amp;lt;/math&amp;gt;. В случае же, если матрицы хессенберговы, то как [[Методы QR-разложения плотных хессенберговых матриц|QR-разложения плотных хессенберговых матриц]], так и вычисления &amp;lt;math&amp;gt;A_{k+1} = R_kQ_k&amp;lt;/math&amp;gt; потребуют уже по &amp;lt;math&amp;gt;O(n^2)&amp;lt;/math&amp;gt; операций. Это позволяет экономить если не время (критические пути графа алгоритма линейны для лучших методов QR-разложения и для плотной матрицы, и для хессенберговой), то довольно большие вычислительные ресурсы. &lt;br /&gt;
&lt;br /&gt;
Поэтому естественным приёмом ускорения итераций QR-алгоритма является начальное [[Подобные разложения на унитарные и хессенберговы матрицы|унитарно подобное приведение матрицы к хессенбергову виду]]. После этого все процедуры QR-алгоритма следует проводить уже с матрицами хессенберговой формы.&lt;br /&gt;
&lt;br /&gt;
В случае, если исходная матрица эрмитова (в вещественном случае - симметричная), то унитарно подобное приведение к хессенберговому виду становится [[Разложения, содержащие трёхдиагональную матрицу, унитарно подобную исходной|приведением к трёхдиагональному симметричному виду]]. В этом случае QR-алгоритм становится ещё &lt;br /&gt;
быстрее, благодаря существенно большему количеству нулей в структурах образующихся матриц..&lt;br /&gt;
&lt;br /&gt;
=== Сдвиги QR-алгоритма ===&lt;br /&gt;
&lt;br /&gt;
QR-алгоритм со сдвигами позволяет сократить количество итераций, необходимых для сходимости&amp;lt;ref name=&amp;quot;bahvalov&amp;quot;&amp;gt;Бахвалов Н.С., Жидков Н.П., Кобельков. Г.М. &amp;quot;Численные методы&amp;quot;— 6-е изд. — М. : БИНОМ. Лаборатория знаний, 2008. — 636 с.&amp;lt;/ref&amp;gt;. Пусть у нас есть матрица &amp;lt;math&amp;gt;A_k&amp;lt;/math&amp;gt;, тогда процесс перехода к матрице &amp;lt;math&amp;gt;A_{k+1}&amp;lt;/math&amp;gt; выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
* На каждом шаге подбирается число &amp;lt;math&amp;gt;\nu_k&amp;lt;/math&amp;gt; и ищется следующее QR-разложение: &amp;lt;math&amp;gt;A_k-\nu_kE=Q_kR_k&amp;lt;/math&amp;gt;.&lt;br /&gt;
* Вычисляется матрица &amp;lt;math&amp;gt;A_{k+1}&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;A_{k+1} = R_kQ_k+\nu_kE&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
При этом сохраняется свойство подобия матриц &amp;lt;math&amp;gt;A_k&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;A_{k+1}&amp;lt;/math&amp;gt;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A_{k+1} = R_kQ_k+\nu_kE=Q_{k}^{T}Q_kR_kQ_k+\nu_kE=Q_{k}^{T}(A_k-\nu_kE)Q_k+\nu_kE=Q_{k}^{T}A_kQ_k-Q_{k}^{T}(\nu_kE)Q_k+\nu_kE=Q_{k}^{T}A_kQ_k-\nu_kE+\nu_kE=Q_{k}^{T}A_kQ_k&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Подбор параметра &amp;lt;math&amp;gt;\nu_k&amp;lt;/math&amp;gt; осуществляется в зависимости от элементов матрицы &amp;lt;math&amp;gt;A_k&amp;lt;/math&amp;gt;. При алгоритме подбора параметров, известном, как &#039;&#039;правило Фрэнсиса&#039;&#039;, среднее количество итераций для большинства матриц получается порядка 2 на одно собственное значение. Существуют, однако, матрицы, для которых правило Фрэнсиса не даёт сходимости, поэтому если по истечении 10 итераций с обычным сдвигом не получилось сходимости, применяют так называемые &amp;quot;особые сдвиги&amp;quot;. Для симметрического же случая используется стратегия Уилкинсона&amp;lt;ref name = &amp;quot;Dem&amp;quot; /&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Указанные стратегии выбора сдвигов используется в программах библиотек LAPACK и SCALAPACK. Но они не являются наилучшими, поскольку для выбора новых сдвигов нужно провести предшествующие итерации до конца. Поэтому в публикациях XXI века уже появились описания т.н. многосдвиговых итераций. В этой стратегии выбор сдвигов также выполняется с помощью собственных чисел подматриц из нижнего правого угла обрабатываемых блоков, но их размерность уже берётся больше, чем 2&amp;lt;ref&amp;gt;R. Granat, Bo Kagstrom, D. Kressner &amp;quot;LAPACK Working Note #216: A novel parallel QR algorithm for hybrid distributed memory HPC systems&amp;quot;.&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
=== Неявное проведение итераций === &lt;br /&gt;
&lt;br /&gt;
Q-теорема&amp;lt;ref name = &amp;quot;Dem&amp;quot; /&amp;gt; помогает не вычислять в явном виде требуемые матрицы с их последующим перемножением, а выполнять эти операции неявно. При этом в соответствии с [[QR-алгоритм#Особенности вещественного несимметричного варианта QR-алгоритма|особенностями вещественного случая несимметричных матриц]] удаётся выполнять т.н. неявный двойной сдвиг с использованием двух комплексно сопряжённых сдвигов (например, из правила Фрэнсиса), оставаясь в рамках вещественной арифметрики, с помощью выполнения двусторонними преобразованиями Хаусхолдера т.н. вытеснения выступа. В вещественном случае аналогично (но с преимуществами симметрии) выполняется неявный одинарный сдвиг, вытеснением выступа двусторонними преобразованиями вращения (Гивенса). &lt;br /&gt;
&lt;br /&gt;
=== Обнуление поддиагональных элементов (дефляция) ===&lt;br /&gt;
&lt;br /&gt;
После того, как под диагональю какой-либо элемент становится менее порогового значения, его считают равным нулю. Это даёт возможность применить разделение диагональных блоков матрицы, соседствующих с ним, и раздельное вычисление их собственных чисел. Приём называется &#039;&#039;&#039;дефляцией&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== QR-алгоритм в различных вариантах ==&lt;br /&gt;
&lt;br /&gt;
В классическом (без приёмов ускорения) виде QR-алгоритм не применяется из-за медленности. Варианты метода, в основном, используются для матриц разного вида:&lt;br /&gt;
&lt;br /&gt;
=== Метод для матриц общего вида ===&lt;br /&gt;
&lt;br /&gt;
[[QR-алгоритм, используемый в SCALAPACK]] для решения проблемы собственных значений у матриц общего вида в настоящее время использует тот подход к выбору сдвигов, который не подтверждён теоретически, но имел лучшие практические показатели на момент создания библиотеки LAPACK. Это выполнение процедуры &amp;quot;двойного сдвига&amp;quot; с величинами, равными собственным значениям последней диагональной клетки размера 2х2 у всех диагональных блоков, больших размером.&lt;br /&gt;
Поскольку существуют матрицы, для которых этот выбор сдвигов не даёт сходимости, то после 10й итерации при отсутствии уменьшения поддиагональных элементов выполняется некий &amp;quot;особый&amp;quot; сдвиг.&lt;br /&gt;
&lt;br /&gt;
=== Метод для симметричных и эрмитовых матриц ===&lt;br /&gt;
&lt;br /&gt;
В случае симметрии (для вещественных матриц) или эрмитовости (для комплексных) применяемый для решения проблемы собственных значений QR-алгоритм использует особенности как самой задачи (собственные числа таких матриц вещественны), так и получаемых промежуточных результатов (хессенберговы матрицы оказываются трёхдиагональными симметричными), что сокращает расчёты.  &lt;br /&gt;
[[QR-алгоритм для симметричных матриц, используемый в SCALAPACK]] для решения проблемы собственных значений у симметричных матриц в настоящее время использует подход к выбору сдвигов, разработанный в начале 90-х гг. XX века&amp;lt;ref&amp;gt;G. HENRY, Improving Data Re-Use in Eigenvalue-Related Computations, PhD thesis, Cornell University, Ithaca, NY, January 1994&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Использование QR-алгоритма для нахождения сингулярных чисел ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D1%82%D1%80%D1%91%D1%85%D0%B4%D0%B8%D0%B0%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%83%D1%8E_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D1%83%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%BD%D0%BE_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25363</id>
		<title>Разложения, содержащие трёхдиагональную матрицу, унитарно подобную исходной</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D1%82%D1%80%D1%91%D1%85%D0%B4%D0%B8%D0%B0%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%83%D1%8E_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D1%83%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%BD%D0%BE_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25363"/>
		<updated>2018-02-27T12:09:50Z</updated>

		<summary type="html">&lt;p&gt;Frolov: Frolov переименовал страницу Симметричные разложения на унитарные и трёхдиагональные матрицы в [[Разложения, содержащие трёхдиагональну…&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-p}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Разложения, содержащие трёхдиагональную матрицу, унитарно подобную исходной&#039;&#039;&#039; — разложения &#039;&#039;&#039;квадратных эрмитовых&#039;&#039;&#039; матриц в произведения вида &amp;lt;math&amp;gt;A=QTQ^*&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; — симметричная трёхдиагональная вещественная, &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; — унитарная (а в вещественном случае — ортогональная) матрицы. &lt;br /&gt;
&lt;br /&gt;
Наиболее разработанными и применяемыми методами для вычисления таких разложений являются методы [[Метод Хаусхолдера (отражений) приведения к трёхдиагональному виду|Хаусхолдера]] и [[Метод Гивенса (вращений) приведения матрицы к трёхдиагональной форме|Гивенса]], оба имеют различные варианты.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D1%82%D1%80%D1%91%D1%85%D0%B4%D0%B8%D0%B0%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%83%D1%8E_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D1%83%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%BD%D0%BE_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25362</id>
		<title>Разложения, содержащие трёхдиагональную матрицу, унитарно подобную исходной</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D1%82%D1%80%D1%91%D1%85%D0%B4%D0%B8%D0%B0%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%83%D1%8E_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D1%83%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%BD%D0%BE_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25362"/>
		<updated>2018-02-27T12:09:22Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-p}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Разложения, содержащие трёхдиагональную матрицу, унитарно подобную исходной&#039;&#039;&#039; — разложения &#039;&#039;&#039;квадратных эрмитовых&#039;&#039;&#039; матриц в произведения вида &amp;lt;math&amp;gt;A=QTQ^*&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; — симметричная трёхдиагональная вещественная, &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; — унитарная (а в вещественном случае — ортогональная) матрицы. &lt;br /&gt;
&lt;br /&gt;
Наиболее разработанными и применяемыми методами для вычисления таких разложений являются методы [[Метод Хаусхолдера (отражений) приведения к трёхдиагональному виду|Хаусхолдера]] и [[Метод Гивенса (вращений) приведения матрицы к трёхдиагональной форме|Гивенса]], оба имеют различные варианты.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D1%85%D0%B5%D1%81%D1%81%D0%B5%D0%BD%D0%B1%D0%B5%D1%80%D0%B3%D0%BE%D0%B2%D1%83_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D1%83%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%BD%D0%BE_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25361</id>
		<title>Разложения, содержащие хессенбергову матрицу, унитарно подобную исходной</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D1%85%D0%B5%D1%81%D1%81%D0%B5%D0%BD%D0%B1%D0%B5%D1%80%D0%B3%D0%BE%D0%B2%D1%83_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D1%83%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%BD%D0%BE_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25361"/>
		<updated>2018-02-27T12:07:47Z</updated>

		<summary type="html">&lt;p&gt;Frolov: Frolov переименовал страницу Подобные разложения на унитарные и хессенберговы матрицы в [[Разложения, содержащие хессенбергову матрицу,…&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-p}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Разложения, содержащие хессенбергову матрицу, унитарно подобную исходной&#039;&#039;&#039; - разложения &#039;&#039;&#039;квадратных&#039;&#039;&#039; матриц в произведения вида &amp;lt;math&amp;gt;A=QHQ^*&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; - хессенбергова, &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; унитарная (а в вещественном случае - ортогональная) матрицы. &lt;br /&gt;
&lt;br /&gt;
Наиболее часто используются как первая стадия выполнения [[QR-алгоритм|QR-алгоритма]]. Основными методами приведения матриц к хессенберговому виду являются методы [[Метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме|Хаусхолдера]] и [[Метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме|Гивенса]].&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D1%85%D0%B5%D1%81%D1%81%D0%B5%D0%BD%D0%B1%D0%B5%D1%80%D0%B3%D0%BE%D0%B2%D1%83_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D1%83%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%BD%D0%BE_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25360</id>
		<title>Разложения, содержащие хессенбергову матрицу, унитарно подобную исходной</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D1%85%D0%B5%D1%81%D1%81%D0%B5%D0%BD%D0%B1%D0%B5%D1%80%D0%B3%D0%BE%D0%B2%D1%83_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D1%83%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%BD%D0%BE_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25360"/>
		<updated>2018-02-27T12:07:18Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-p}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Разложения, содержащие хессенбергову матрицу, унитарно подобную исходной&#039;&#039;&#039; - разложения &#039;&#039;&#039;квадратных&#039;&#039;&#039; матриц в произведения вида &amp;lt;math&amp;gt;A=QHQ^*&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; - хессенбергова, &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; унитарная (а в вещественном случае - ортогональная) матрицы. &lt;br /&gt;
&lt;br /&gt;
Наиболее часто используются как первая стадия выполнения [[QR-алгоритм|QR-алгоритма]]. Основными методами приведения матриц к хессенберговому виду являются методы [[Метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме|Хаусхолдера]] и [[Метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме|Гивенса]].&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25359</id>
		<title>Классификация алгоритмов</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25359"/>
		<updated>2018-02-27T12:05:50Z</updated>

		<summary type="html">&lt;p&gt;Frolov: /* Разложения матриц */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= Задачи алгебры =&lt;br /&gt;
==Матричные и векторные операции==&lt;br /&gt;
===Векторные операции===&lt;br /&gt;
# {{level|Суммирование сдваиванием}}&lt;br /&gt;
## {{level|Нахождение суммы элементов массива сдваиванием}}&lt;br /&gt;
## {{level|Нахождение частных сумм элементов массива сдваиванием}}&lt;br /&gt;
# {{level|Равномерная норма вектора, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Скалярное произведение векторов, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Последовательно-параллельный метод суммирования}}&lt;br /&gt;
=== Умножения матриц на вектор ===&lt;br /&gt;
==== Умножения неособенных матриц на вектор ====&lt;br /&gt;
# {{level|Умножение плотной неособенной матрицы на вектор (последовательный вещественный вариант)}}&lt;br /&gt;
==== Умножения матриц специального вида на вектор ====&lt;br /&gt;
# {{level|Преобразование Фурье}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для составной размерности}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Простой алгоритм Кули-Тьюки быстрого преобразования Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Быстрое преобразование Фурье для чётных степеней двойки}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для составной размерности с небольшими простыми делителями (2,3,5,7)}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для простой размерности}}&lt;br /&gt;
===Матричные операции===&lt;br /&gt;
# {{level|Умножение плотных матриц}}&lt;br /&gt;
## {{level|Перемножение плотных неособенных матриц (последовательный вещественный вариант)}}&lt;br /&gt;
## {{level|Метод Штрассена}}&lt;br /&gt;
==Разложения матриц==&lt;br /&gt;
{{level|Задача разложения матриц}}&lt;br /&gt;
# {{level|Треугольные разложения}}&lt;br /&gt;
## {{level|Метод Гаусса (нахождение LU-разложения)}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса без перестановок}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса}}&lt;br /&gt;
#### {{level|Компактная схема метода Гаусса и её модификации}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для плотной матрицы}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы и её модификации}}&lt;br /&gt;
###### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы, последовательный вариант}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Последовательно-параллельный алгоритм для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса с перестановками}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по столбцу}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по строке}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по главной диагонали}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по всей матрице}}&lt;br /&gt;
## {{level|Метод Холецкого (нахождение симметричного треугольного разложения)}}&lt;br /&gt;
### {{level|Разложение Холецкого (метод квадратного корня)}} базовый точечный вещественный вариант для плотной симметричной положительно-определённой матрицы&lt;br /&gt;
# {{level|Известные треугольные разложения для матриц специального вида}}&lt;br /&gt;
# {{level|Унитарно-треугольные разложения}}&lt;br /&gt;
## {{level|QR-разложения плотных неособенных матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Гивенса (вращений) QR-разложения квадратной матрицы (вещественный точечный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) QR-разложения квадратной матрицы, вещественный точечный вариант}}&lt;br /&gt;
### {{level|Метод ортогонализации}}&lt;br /&gt;
#### {{level|Классический метод ортогонализации}}&lt;br /&gt;
#### {{level|Метод ортогонализации с переортогонализацией}}&lt;br /&gt;
### {{level|Метод треугольного разложения матрицы Грама}}&lt;br /&gt;
## {{level|Методы QR-разложения плотных хессенберговых матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
# {{level|Разложения, содержащие матрицу, подобную исходной}}&lt;br /&gt;
## {{level|Разложения, содержащие хессенбергову матрицу, унитарно подобную исходной}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
## {{level|Разложения, содержащие трёхдиагональную матрицу, унитарно подобную исходной}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к трёхдиагональной форме}}&lt;br /&gt;
## {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
# {{level|Неподобные унитарные разложения}}&lt;br /&gt;
## {{level|Неподобные разложения на унитарные и двухдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
## {{level|Разложения на унитарные и диагональные матрицы}}&lt;br /&gt;
### {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
#### {{level|Методы нахождения сингулярных чисел двухдиагональных матриц}}&lt;br /&gt;
##### {{level|Алгоритм dqds нахождения сингулярных чисел двухдиагональной матрицы}}&lt;br /&gt;
###### {{level|Итерация алгоритма dqds}}&lt;br /&gt;
&lt;br /&gt;
==Решение систем линейных уравнений==&lt;br /&gt;
# {{level|Прямые методы решения СЛАУ}}&lt;br /&gt;
## {{level|Linpack benchmark}}&lt;br /&gt;
## {{level|Методы решения СЛАУ с матрицами специального вида}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с треугольными матрицами}}&lt;br /&gt;
#### {{level|Прямая подстановка (вещественный вариант)|Прямая подстановка}}&lt;br /&gt;
#### {{level|Обратная подстановка (вещественный вариант)|Обратная подстановка}}&lt;br /&gt;
#### {{level|Методы решения СЛАУ с двудиагональными матрицами}}&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант обратной подстановки}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с трёхдиагональными матрицами}}&lt;br /&gt;
#### {{level|Методы, основанные на стандартном LU-разложении матрицы}}&lt;br /&gt;
##### {{level|Прогонка}}&lt;br /&gt;
###### {{level|Прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Классическая монотонная прогонка, повторный вариант}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант решения трёхдиагональной СЛАУ с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Метод редукции}}&lt;br /&gt;
###### {{level|Полный метод редукции}}&lt;br /&gt;
###### {{level|Повторный метод редукции для новой правой части}}&lt;br /&gt;
##### {{level|Встречная прогонка}}&lt;br /&gt;
###### {{level|Встречная прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Повторная встречная прогонка, точечный вариант}}&lt;br /&gt;
##### {{level|Метод циклической редукции}}&lt;br /&gt;
###### {{level|Полный метод циклической редукции}}&lt;br /&gt;
###### {{level|Повторный метод циклической редукции для новой правой части}}&lt;br /&gt;
##### {{level|Метод окаймления}}&lt;br /&gt;
### Методы решения СЛАУ с блочно-треугольными матрицами&lt;br /&gt;
#### {{level|Блочная прямая подстановка (вещественный вариант)|Блочная прямая подстановка}}&lt;br /&gt;
#### {{level|Блочная обратная подстановка (вещественный вариант)|Блочная обратная подстановка}}&lt;br /&gt;
#### Методы решения СЛАУ с блочно-двухдиагональными матрицами&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с блочно-двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант обратной подстановки для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с блочно-трёхдиагональными матрицами}}&lt;br /&gt;
#### Методы, основанные на стандартном LU-разложении матрицы&lt;br /&gt;
##### {{level|Блочная прогонка}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант решения с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Встречная прогонка, блочный вариант}}&lt;br /&gt;
##### {{level|Блочный метод циклической редукции}}&lt;br /&gt;
##### {{level|Блочный метод окаймления}}&lt;br /&gt;
## {{level|Решения СЛАУ с матрицами специального вида, имеющими известные обратные матрицы}}&lt;br /&gt;
# Итерационные методы решения СЛАУ&lt;br /&gt;
## {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
## {{level|Стабилизированный метод бисопряженных градиентов (BiCGStab)}}&lt;br /&gt;
## {{level|Алгоритм_Качмажа}}&lt;br /&gt;
==Решения спектральных задач==&lt;br /&gt;
# {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
## {{level|QR-алгоритм}}&lt;br /&gt;
### {{level|QR-алгоритм, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|QR-алгоритм для хессенберговой матрицы, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для симметричных матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для комплексных эрмитовых матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для решения спектральной задачи у симметричных матриц}}&lt;br /&gt;
### {{level|Классический метод Якоби (вращений) для симметричных матриц с выбором по всей матрице}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением и барьерами}}&lt;br /&gt;
## {{level|Метод Ланцоша}}&lt;br /&gt;
### {{level|Алгоритм Ланцоша для точной арифметики (без переортогонализации)}}&lt;br /&gt;
# {{level|Частичная спектральная задача}}&lt;br /&gt;
## {{level|Метод бисекций}}&lt;br /&gt;
# {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для нахождения сингулярных значений неособенных матриц}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для нахождения сингулярных значений с циклическим перебором}}&lt;br /&gt;
### {{level|Метод Якоби для нахождения сингулярных значений со специальным подбором вращений}}&lt;br /&gt;
## {{level|QR-алгоритм в приложении к сингулярному разложению}}&lt;br /&gt;
==Алгебра многочленов==&lt;br /&gt;
# {{level|Схема Горнера, вещественная версия, последовательный вариант}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Алгоритмы на списках и массивах =&lt;br /&gt;
==Алгоритмы поиска==&lt;br /&gt;
# {{level|Линейный поиск - находит элемент в любом списке|Линейный поиск}}, &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
# {{level|Двоичный поиск - находит элемент в отсортированном списке|Двоичный поиск}}, &amp;lt;math&amp;gt;O(\log(n))&amp;lt;/math&amp;gt;&lt;br /&gt;
==Алгоритмы сортировки==&lt;br /&gt;
# {{level|Сортировка с помощью двоичного дерева}}&lt;br /&gt;
# {{level|Сортировка пузырьком}}&lt;br /&gt;
# {{level|Сортировка слиянием (последовательный и параллельный варианты)}}&lt;br /&gt;
==Алгоритмы на графах==&lt;br /&gt;
# Обход графа&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}}&lt;br /&gt;
## {{level|Поиск в глубину (DFS)}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути от одной вершины (SSSP)}}&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}} (для невзвешенных графов)&lt;br /&gt;
## {{level|Алгоритм Дейкстры}}&lt;br /&gt;
## {{level|Алгоритм Беллмана-Форда}}&lt;br /&gt;
## {{level|Алгоритм Δ-шагания}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути для всех пар вершин (APSP)}}&lt;br /&gt;
## {{level|Алгоритм Джонсона}}&lt;br /&gt;
## {{level|Алгоритм Флойда-Уоршелла}}&lt;br /&gt;
# {{level|Поиск транзитивного замыкания орграфа}}&lt;br /&gt;
## {{level|Алгоритм Пурдома}}&lt;br /&gt;
# {{level|Определение диаметра графа}}&lt;br /&gt;
# {{level|Построение минимального остовного дерева (MST)}}&lt;br /&gt;
## {{level|Алгоритм Борувки}}&lt;br /&gt;
## {{level|Алгоритм Крускала}}&lt;br /&gt;
## {{level|Алгоритм Прима}}&lt;br /&gt;
## {{level|Алгоритм GHS}}&lt;br /&gt;
# {{level|Поиск изоморфных подграфов}}&lt;br /&gt;
## {{level|Алгоритм Ульмана}}&lt;br /&gt;
## {{level|Алгоритм VF2}}&lt;br /&gt;
# {{level|Связность в графах}}&lt;br /&gt;
## {{level|Алгоритм Шилоаха-Вишкина поиска компонент связности}}&lt;br /&gt;
## {{level|Система непересекающихся множеств}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм DCSC поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна-Вишкина поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска «мостов» в графе}}&lt;br /&gt;
## {{level|Определение вершинной связности графа}}&lt;br /&gt;
## {{level|Алгоритм Габова определения рёберной связности графа}}&lt;br /&gt;
# {{level|Поиск максимального потока в транспортной сети}}&lt;br /&gt;
## {{level|Алгоритм Форда-Фалкерсона}}&lt;br /&gt;
## {{level|Алгоритм проталкивания предпотока}}&lt;br /&gt;
# {{level|Поиск потока минимальной стоимости в транспортной сети}}&lt;br /&gt;
# {{level|Задача о назначениях}}&lt;br /&gt;
## {{level|Венгерский алгоритм}}&lt;br /&gt;
## {{level|Алгоритм аукциона}}&lt;br /&gt;
## {{level|Алгоритм Гопкрофта-Карпа}}&lt;br /&gt;
# {{level|Вычисление betweenness centrality|Вычисление центральности вершин}}&lt;br /&gt;
=Вычислительная геометрия=&lt;br /&gt;
# {{level|Поиск диаметра множества точек}}&lt;br /&gt;
# {{level|Построение выпуклой оболочки набора точек}}&lt;br /&gt;
# {{level|Триангуляция Делоне}}&lt;br /&gt;
# {{level|Диаграмма Вороного}}&lt;br /&gt;
# {{level|Принадлежность точки многоугольнику}}&lt;br /&gt;
# {{level|Пересечения выпуклых многоугольников}} &lt;br /&gt;
# {{level|Пересечение звёздных многоугольников}}&lt;br /&gt;
==Компьютерная графика==&lt;br /&gt;
# {{level|Алгоритмы построения отрезка - алгоритмы для аппроксимации отрезка на дискретной графической поверхности}}&lt;br /&gt;
# {{level|Алгоритм определения видимых частей трёхмерной сцены}}&lt;br /&gt;
# {{level|Трассировка лучей - рендеринг реалистичных изображений}}&lt;br /&gt;
# {{level|Глобальное освещение - рассматривает прямое освещение и отражение от других объектов}}&lt;br /&gt;
&lt;br /&gt;
=Исследование и моделирование компьютеров=&lt;br /&gt;
==Тесты производительности компьютеров==&lt;br /&gt;
# {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
# {{level|Linpack benchmark}}&lt;br /&gt;
==Алгоритмы моделирования квантовых систем==&lt;br /&gt;
# {{level|Алгоритмы моделирования квантовых вычислений}}&lt;br /&gt;
## {{level|Однокубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Двухкубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Моделирование квантового преобразования Фурье}}&lt;br /&gt;
==Алгоритмы машинного обучения==&lt;br /&gt;
# {{level|Алгоритм k средних (k-means)}}&lt;br /&gt;
===Нейронные сети===&lt;br /&gt;
# {{level|Распознавание образов}}&lt;br /&gt;
## {{level|Распознавание текста}}&lt;br /&gt;
## {{level|Распознавание речи}}&lt;br /&gt;
## {{level|Распознавание лиц}}&lt;br /&gt;
===Алгоритмы теории игр===&lt;br /&gt;
&lt;br /&gt;
= Прикладные задачи из разных областей =&lt;br /&gt;
==Алгоритмы оптимизации==&lt;br /&gt;
# {{level|Линейное программирование}}&lt;br /&gt;
# {{level|Симплекс-метод}}&lt;br /&gt;
# {{level|Метод ветвей и границ}}&lt;br /&gt;
# {{level|Генетические алгоритмы}}&lt;br /&gt;
# {{level|Муравьиные алгоритмы}}&lt;br /&gt;
# {{level|Комбинированные алгоритмы}}&lt;br /&gt;
# {{level|Стохастическое двойственное динамическое программирование (SDDP)}}&lt;br /&gt;
==Решение систем нелинейных уравнений==&lt;br /&gt;
# {{level|Метод Ньютона для систем нелинейных уравнений}}&lt;br /&gt;
==Численные методы интегрирования==&lt;br /&gt;
# {{level|Квадратурные формулы}}&lt;br /&gt;
# {{level|Квадратурные (кубатурные) методы численного интегрирования по отрезку (многомерному кубу)}}&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод прямоугольников|Метод прямоугольников]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод трапеций|Метод трапеций]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод парабол (метод Симпсона)|Метод парабол (метод Симпсона)]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод Гаусса|Метод Гаусса]]&lt;br /&gt;
==Алгоритмы решения уравнений математической физики==&lt;br /&gt;
# {{level|Уравнение Пуассона, решение дискретным преобразованием Фурье}}&lt;br /&gt;
=Криптографические алгоритмы=&lt;br /&gt;
# {{level|Метод встречи посередине}}&lt;br /&gt;
=Другие алгоритмы=&lt;br /&gt;
&lt;br /&gt;
[[en:Algorithm classification]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Алгоритмы|*]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25358</id>
		<title>Разложения, содержащие матрицу, подобную исходной</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25358"/>
		<updated>2018-02-27T12:05:22Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-p}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Разложения, содержащие матрицу, подобную исходной&#039;&#039;&#039; - разложения &#039;&#039;&#039;квадратных&#039;&#039;&#039; матриц в произведения вида &amp;lt;math&amp;gt;A=QSQ^{-1}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; - матрица более простого вида, чем &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
В силу того, что унитарные матрицы более удобны как для обращения, так и для двусторонних преобразований, обычно используют в качестве &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; унитарные (а в вещественном случае - ортогональные) матрицы. &lt;br /&gt;
&lt;br /&gt;
Наиболее разработанными и применяемыми из данных разложений являются нахождение для неэрмитовых матриц [[Разложения, содержащие хессенбергову матрицу, унитарно подобную исходной|разложений на унитарные и хессенберговы матрицы]], а для эрмитовых - [[Разложения, содержащие трёхдиагональную матрицу, унитарно подобную исходной|симметричных разложений на унитарные и трёхдиагональные матрицы]].&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25357</id>
		<title>Разложения, содержащие матрицу, подобную исходной</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25357"/>
		<updated>2018-02-27T12:02:53Z</updated>

		<summary type="html">&lt;p&gt;Frolov: Frolov переименовал страницу Подобные разложения в Разложения, содержащие матрицу, подобную исходной без оставления перенаправления:…&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-p}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Подобные разложения&#039;&#039;&#039; - разложения &#039;&#039;&#039;квадратных&#039;&#039;&#039; матриц в произведения вида &amp;lt;math&amp;gt;A=QSQ^{-1}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; - матрица более простого вида, чем &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
В силу того, что унитарные матрицы более удобны как для обращения, так и для двусторонних преобразований, обычно используют в качестве &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; унитарные (а в вещественном случае - ортогональные) матрицы. &lt;br /&gt;
&lt;br /&gt;
Наиболее разработанными и применяемыми из подобных разложений являются нахождение для неэрмитовых матриц [[Подобные разложения на унитарные и хессенберговы матрицы|разложений на унитарные и хессенберговы матрицы]], а для эрмитовых - [[Симметричные разложения на унитарные и трёхдиагональные матрицы|симметричных разложений на унитарные и трёхдиагональные матрицы]].&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D1%82%D1%80%D1%91%D1%85%D0%B4%D0%B8%D0%B0%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%83%D1%8E_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D1%83%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%BD%D0%BE_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25346</id>
		<title>Разложения, содержащие трёхдиагональную матрицу, унитарно подобную исходной</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D1%82%D1%80%D1%91%D1%85%D0%B4%D0%B8%D0%B0%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%83%D1%8E_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D1%83%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%BD%D0%BE_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25346"/>
		<updated>2018-02-15T12:55:59Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-p}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Симметричные разложения на унитарные и трёхдиагональные матрицы&#039;&#039;&#039; — разложения &#039;&#039;&#039;квадратных эрмитовых&#039;&#039;&#039; матриц в произведения вида &amp;lt;math&amp;gt;A=QTQ^*&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; — симметричная трёхдиагональная вещественная, &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; — унитарная (а в вещественном случае — ортогональная) матрицы. &lt;br /&gt;
&lt;br /&gt;
Наиболее разработанными и применяемыми методами для вычисления подобных разложений являются методы [[Метод Хаусхолдера (отражений) приведения к трёхдиагональному виду|Хаусхолдера]] и [[Метод Гивенса (вращений) приведения матрицы к трёхдиагональной форме|Гивенса]], оба имеют различные варианты.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D1%82%D1%80%D1%91%D1%85%D0%B4%D0%B8%D0%B0%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%83%D1%8E_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D1%83%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%BD%D0%BE_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25345</id>
		<title>Разложения, содержащие трёхдиагональную матрицу, унитарно подобную исходной</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D1%82%D1%80%D1%91%D1%85%D0%B4%D0%B8%D0%B0%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%83%D1%8E_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D1%83%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%BD%D0%BE_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25345"/>
		<updated>2018-02-15T12:55:23Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-p}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Симметричные разложения на унитарные и трёхдиагональные матрицы&#039;&#039;&#039; - разложения &#039;&#039;&#039;квадратных эрмитовых&#039;&#039;&#039; матриц в произведения вида &amp;lt;math&amp;gt;A=QTQ^*&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; - симметричная трёхдиагональная вещественная, &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; — унитарная (а в вещественном случае — ортогональная) матрицы. &lt;br /&gt;
&lt;br /&gt;
Наиболее разработанными и применяемыми методами для вычисления подобных разложений являются методы [[Метод Хаусхолдера (отражений) приведения к трёхдиагональному виду|Хаусхолдера]] и [[Метод Гивенса (вращений) приведения матрицы к трёхдиагональной форме|Гивенса]], оба имеют различные варианты.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%A5%D0%B0%D1%83%D1%81%D1%85%D0%BE%D0%BB%D0%B4%D0%B5%D1%80%D0%B0_(%D0%BE%D1%82%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9)_%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B_%D0%BA_%D1%85%D0%B5%D1%81%D1%81%D0%B5%D0%BD%D0%B1%D0%B5%D1%80%D0%B3%D0%BE%D0%B2%D0%BE%D0%B9_(%D0%BF%D0%BE%D1%87%D1%82%D0%B8_%D1%82%D1%80%D0%B5%D1%83%D0%B3%D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9)_%D1%84%D0%BE%D1%80%D0%BC%D0%B5&amp;diff=25344</id>
		<title>Метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%A5%D0%B0%D1%83%D1%81%D1%85%D0%BE%D0%BB%D0%B4%D0%B5%D1%80%D0%B0_(%D0%BE%D1%82%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9)_%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B_%D0%BA_%D1%85%D0%B5%D1%81%D1%81%D0%B5%D0%BD%D0%B1%D0%B5%D1%80%D0%B3%D0%BE%D0%B2%D0%BE%D0%B9_(%D0%BF%D0%BE%D1%87%D1%82%D0%B8_%D1%82%D1%80%D0%B5%D1%83%D0%B3%D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9)_%D1%84%D0%BE%D1%80%D0%BC%D0%B5&amp;diff=25344"/>
		<updated>2018-02-15T12:53:37Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-m}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Метод Хаусхолдера&#039;&#039;&#039; (в советской математической литературе чаще называется &#039;&#039;&#039;методом отражений&#039;&#039;&#039;) используется для разложения  матриц в виде &amp;lt;math&amp;gt;A=QRQ^T&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; - ортогональная, &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; — правая почти треугольная матрица)&amp;lt;ref&amp;gt;В.В.Воеводин, Ю.А.Кузнецов. Матрицы и вычисления. М.: Наука, 1984.&amp;lt;/ref&amp;gt;. При этом матрица &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; хранится и используется не в своём явном виде, а в виде произведения матриц отражения&amp;lt;ref name=&amp;quot;VOLA&amp;quot;&amp;gt;Воеводин В.В. Вычислительные основы линейной алгебры. М.: Наука, 1977.&amp;lt;/ref&amp;gt;. Каждая из матриц отражения может быть определена одним вектором. Это позволяет в классическом исполнении метода отражений хранить результаты разложения на месте матрицы A с использованием одномерного дополнительного массива. &lt;br /&gt;
&lt;br /&gt;
Для выполнения разложения матрицы в произведение хессенберговой и двух ортогональных используются попеременные умножения слева и справа её текущих модификаций на матрицы Хаусхолдера (отражений). &lt;br /&gt;
&lt;br /&gt;
{{Шаблон:Матрица отражений}}&lt;br /&gt;
&lt;br /&gt;
Кроме [[Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме|классического метода]], есть и другие варианты метода Хаусхолдера, отличающиеся либо наличием блочных операций, либо другими нюансами.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D1%85%D0%B5%D1%81%D1%81%D0%B5%D0%BD%D0%B1%D0%B5%D1%80%D0%B3%D0%BE%D0%B2%D1%83_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D1%83%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%BD%D0%BE_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25343</id>
		<title>Разложения, содержащие хессенбергову матрицу, унитарно подобную исходной</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D1%85%D0%B5%D1%81%D1%81%D0%B5%D0%BD%D0%B1%D0%B5%D1%80%D0%B3%D0%BE%D0%B2%D1%83_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D1%83%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%BD%D0%BE_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25343"/>
		<updated>2018-02-15T12:52:51Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-p}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Подобные разложения на унитарные и хессенберговы матрицы&#039;&#039;&#039; - разложения &#039;&#039;&#039;квадратных&#039;&#039;&#039; матриц в произведения вида &amp;lt;math&amp;gt;A=QHQ^*&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; - хессенбергова, &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; унитарная (а в вещественном случае - ортогональная) матрицы. &lt;br /&gt;
&lt;br /&gt;
Наиболее часто используются как первая стадия выполнения [[QR-алгоритм|QR-алгоритма]]. Основными методами приведения матриц к хессенберговому виду являются методы [[Метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме|Хаусхолдера]] и [[Метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме|Гивенса]].&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25342</id>
		<title>Разложения, содержащие матрицу, подобную исходной</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F,_%D1%81%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%89%D0%B8%D0%B5_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%83,_%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%83%D1%8E_%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9&amp;diff=25342"/>
		<updated>2018-02-15T12:52:08Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-p}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Подобные разложения&#039;&#039;&#039; - разложения &#039;&#039;&#039;квадратных&#039;&#039;&#039; матриц в произведения вида &amp;lt;math&amp;gt;A=QSQ^{-1}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; - матрица более простого вида, чем &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
В силу того, что унитарные матрицы более удобны как для обращения, так и для двусторонних преобразований, обычно используют в качестве &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; унитарные (а в вещественном случае - ортогональные) матрицы. &lt;br /&gt;
&lt;br /&gt;
Наиболее разработанными и применяемыми из подобных разложений являются нахождение для неэрмитовых матриц [[Подобные разложения на унитарные и хессенберговы матрицы|разложений на унитарные и хессенберговы матрицы]], а для эрмитовых - [[Симметричные разложения на унитарные и трёхдиагональные матрицы|симметричных разложений на унитарные и трёхдиагональные матрицы]].&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%A5%D0%B0%D1%83%D1%81%D1%85%D0%BE%D0%BB%D0%B4%D0%B5%D1%80%D0%B0_(%D0%BE%D1%82%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9)_QR-%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D1%85%D0%B5%D1%81%D1%81%D0%B5%D0%BD%D0%B1%D0%B5%D1%80%D0%B3%D0%BE%D0%B2%D0%BE%D0%B9_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B_(%D0%B2%D0%B5%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82)&amp;diff=25341</id>
		<title>Метод Хаусхолдера (отражений) QR-разложения хессенберговой матрицы (вещественный вариант)</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%A5%D0%B0%D1%83%D1%81%D1%85%D0%BE%D0%BB%D0%B4%D0%B5%D1%80%D0%B0_(%D0%BE%D1%82%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9)_QR-%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D1%85%D0%B5%D1%81%D1%81%D0%B5%D0%BD%D0%B1%D0%B5%D1%80%D0%B3%D0%BE%D0%B2%D0%BE%D0%B9_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B_(%D0%B2%D0%B5%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82)&amp;diff=25341"/>
		<updated>2018-02-15T12:51:15Z</updated>

		<summary type="html">&lt;p&gt;Frolov: /* Литература */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-a}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Метод Хаусхолдера&#039;&#039;&#039; (в советской математической литературе чаще называется &#039;&#039;&#039;методом отражений&#039;&#039;&#039;) используется для разложения  матриц в виде &amp;lt;math&amp;gt;A=QR&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; - унитарная, &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; — правая треугольная матрица)&amp;lt;ref&amp;gt;В.В.Воеводин, Ю.А.Кузнецов. Матрицы и вычисления. М.: Наука, 1984.&amp;lt;/ref&amp;gt;. При этом матрица &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; хранится и используется не в своём явном виде, а в виде произведения матриц отражения&amp;lt;ref name=&amp;quot;VOLA&amp;quot;&amp;gt;Воеводин В.В. Вычислительные основы линейной алгебры. М.: Наука, 1977.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Шаблон:Матрица отражений}}&lt;br /&gt;
&lt;br /&gt;
Поскольку для QR-разложения хессенберговой матрицы нужно &amp;quot;обнулить&amp;quot; только элементы одной диагонали, то, в отличие от [[Метод Хаусхолдера (отражений) QR-разложения квадратной матрицы, вещественный точечный вариант|стандартной реализации метода Хаусхолдера для плотной квадратной матрицы]],  для него нужно выполнять операции отражения с базой на приведении двумерных векторов к одному из ортов, то есть этот алгоритм квадратичен по порядку выполняемых операций. Критический путь этого алгоритма, как и в случае метода Гивенса, от которого метод Хаусхолдера отличается только коэффициентами в матрицах, линеен. &lt;br /&gt;
&lt;br /&gt;
Алгоритм, однако, в своём чистом виде практически не используется. Дело в том, что в [[QR-алгоритм|QR-алгоритме]], где QR-разложения хессенберговых матриц формально используются, для экономии ресурсов они давно применяются в неявном виде, а именно в составе QR-итераций с неявным двойным сдвигом&amp;lt;ref name = &amp;quot;Dem&amp;quot;&amp;gt; Деммель Д. Вычислительная линейная алгебра. – 2001. - С.261-264. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%93%D0%B8%D0%B2%D0%B5%D0%BD%D1%81%D0%B0_(%D0%B2%D1%80%D0%B0%D1%89%D0%B5%D0%BD%D0%B8%D0%B9)_QR-%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D1%85%D0%B5%D1%81%D1%81%D0%B5%D0%BD%D0%B1%D0%B5%D1%80%D0%B3%D0%BE%D0%B2%D0%BE%D0%B9_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B_(%D0%B2%D0%B5%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82)&amp;diff=25340</id>
		<title>Метод Гивенса (вращений) QR-разложения хессенберговой матрицы (вещественный вариант)</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%93%D0%B8%D0%B2%D0%B5%D0%BD%D1%81%D0%B0_(%D0%B2%D1%80%D0%B0%D1%89%D0%B5%D0%BD%D0%B8%D0%B9)_QR-%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D1%85%D0%B5%D1%81%D1%81%D0%B5%D0%BD%D0%B1%D0%B5%D1%80%D0%B3%D0%BE%D0%B2%D0%BE%D0%B9_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B_(%D0%B2%D0%B5%D1%89%D0%B5%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82)&amp;diff=25340"/>
		<updated>2018-02-15T12:50:25Z</updated>

		<summary type="html">&lt;p&gt;Frolov: /* Литература */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-a}} &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Метод Гивенса&#039;&#039;&#039; (в отечественной математической литературе называется также &#039;&#039;&#039;методом вращений&#039;&#039;&#039;) используется для разложения  матриц в виде &amp;lt;math&amp;gt;A = QR&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; - унитарная, &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; — правая треугольная матрица)&amp;lt;ref&amp;gt;В.В.Воеводин, Ю.А.Кузнецов. Матрицы и вычисления. М.: Наука, 1984.&amp;lt;/ref&amp;gt;. При этом матрица &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; хранится и используется не в явном виде, а в виде произведения матриц вращения. Каждая из матриц вращения (Гивенса)&lt;br /&gt;
&lt;br /&gt;
{{Шаблон:Матрица_вращения}}&lt;br /&gt;
&lt;br /&gt;
может быть определена парой индексов и одним параметром. Поскольку для QR-разложения хессенберговой матрицы нужно &amp;quot;обнулить&amp;quot; только элементы одной диагонали, то, в отличие от [[Метод Гивенса (вращений) QR-разложения квадратной матрицы (вещественный точечный вариант)|стандартной реализации метода Гивенса для плотной квадратной матрицы]],  для него нужно выполнить всего &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; операций вращения, то есть этот алгоритм квадратичен по порядку выполняемых операций. Критический путь алгоритма, как и в случае плотных матриц, линеен. &lt;br /&gt;
&lt;br /&gt;
Алгоритм, однако, в своём чистом виде практически не используется. Дело в том, что в [[QR-алгоритм|QR-алгоритме]], где QR-разложения хессенберговых матриц формально используются, для экономии ресурсов они давно применяются в неявном виде, а именно в составе QR-итераций с неявным одинарным сдвигом&amp;lt;ref name = &amp;quot;Dem&amp;quot;&amp;gt; Деммель Д. Вычислительная линейная алгебра. – 2001. - С.261-264. &amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B_QR-%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BB%D0%BE%D1%82%D0%BD%D1%8B%D1%85_%D1%85%D0%B5%D1%81%D1%81%D0%B5%D0%BD%D0%B1%D0%B5%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D1%85_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86&amp;diff=25339</id>
		<title>Методы QR-разложения плотных хессенберговых матриц</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B_QR-%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BB%D0%BE%D1%82%D0%BD%D1%8B%D1%85_%D1%85%D0%B5%D1%81%D1%81%D0%B5%D0%BD%D0%B1%D0%B5%D1%80%D0%B3%D0%BE%D0%B2%D1%8B%D1%85_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86&amp;diff=25339"/>
		<updated>2018-02-15T12:49:39Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-p}}&lt;br /&gt;
&lt;br /&gt;
Задача &#039;&#039;&#039;QR-разложения плотных хессенберговых матриц&#039;&#039;&#039; встречается в качестве этапа одной итерации [[QR-алгоритм|QR-алгоритма]]. Однако для современных вариантов [[QR-алгоритм|QR-алгоритма]] её решают неявно, используя то, что на итерации затем нужно выполнить так же неявно умножение RQ. При этом, в зависимости от выбора сдвига, используются как схема с неявным одиночным сдвигом, опирающаяся на метод Гивенса, так и схема с неявным двойным сдвигом, опирающаяся на метод Хаусхолдера.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D1%82%D1%80%D0%B5%D1%83%D0%B3%D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B_%D0%93%D1%80%D0%B0%D0%BC%D0%B0&amp;diff=25338</id>
		<title>Метод треугольного разложения матрицы Грама</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D1%82%D1%80%D0%B5%D1%83%D0%B3%D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B_%D0%93%D1%80%D0%B0%D0%BC%D0%B0&amp;diff=25338"/>
		<updated>2018-02-15T12:49:02Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-m}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Метод треугольного разложения матрицы Грама&#039;&#039;&#039; для нахождения QR-разложения квадратной матрицы работает только в условиях гарантированной невырожденности исходной матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;. Состоит из трёх частей: нахождение матрицы Грама &amp;lt;math&amp;gt;A^*A&amp;lt;/math&amp;gt; столбцов исходной матрицы, [[Метод_Холецкого_(нахождение_симметричного_треугольного_разложения)|нахождение_симметричного_треугольного_разложения]] матрицы Грама &amp;lt;math&amp;gt;A^*A&amp;lt;/math&amp;gt; в виде &amp;lt;math&amp;gt;R^*R&amp;lt;/math&amp;gt;, нахождение унитарной матрицы &amp;lt;math&amp;gt;Q=AR^{-1}&amp;lt;/math&amp;gt;, например, с помощью модифицированной обратной подстановки.&lt;br /&gt;
&lt;br /&gt;
На практике не применяется не только из-за ограничения, связанного с невырожденностью, но и по той простой причине, что обусловленность матрицы Грама квадратична по сравнению с обусловленностью исходной матрицы.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%BE%D1%80%D1%82%D0%BE%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25337</id>
		<title>Метод ортогонализации</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%BE%D1%80%D1%82%D0%BE%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25337"/>
		<updated>2018-02-15T12:48:08Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-m}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:DVIN|Инжелевская Дарья Валерьевна]](текст), [[Участник:Frolov|А.В.Фролов]](общая редактура) &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ортогонализация Грама-Шмидта&#039;&#039;&#039; — это один из методов, в которых на основе множества линейно независимых векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\;\mathbf {a} _{N}}&amp;lt;/math&amp;gt; строится множество ортогональных векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {b}_{1},\;\ldots ,\;\mathbf {b} _{N}} &amp;lt;/math&amp;gt; или ортонормированных векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {e} _{1},\;\ldots ,\;\mathbf {e}_{N}} &amp;lt;/math&amp;gt;, причём так, что каждый вектор &amp;lt;math&amp;gt;{\displaystyle \mathbf {b} _{j}} &amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;{\displaystyle \mathbf {e} _{j}}&amp;lt;/math&amp;gt; может быть выражен линейной комбинацией векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\; \mathbf {a} _{j}}&amp;lt;/math&amp;gt;. Данный процесс может быть использован для получения [[QR-разложения плотных неособенных матриц|QR-разложения]], в которой систему исходных векторов образуют столбцы исходной матрицы, а столбцы матрицы Q представляют из себя набор полученных при ортогонализации векторов. Таким образом, в отличие от методов Гивенса (вращений) и Хаусхолдера (отражений), основанных на приведении матрицы левыми унитарными/ортогональными преобразованиями к треугольному виду, метод ортогонализации основан на приведении матрицы правыми неортогональными (можно сказать, треугольными) преобразованиями к унитарному/ортогональному виду.&lt;br /&gt;
&lt;br /&gt;
== Математические основы метода ==&lt;br /&gt;
&lt;br /&gt;
[[Классический метод ортогонализации|Классический метод ортогонализации QR-разложения квадратной матрицы (вещественный вариант)]] довольно прост, однако из-за неустойчивости, проявляющейся в неортогональности получаемых систем, крайне редко применяется на практике. &lt;br /&gt;
&lt;br /&gt;
Пусть имеются линейно независимые векторы &amp;lt;math&amp;gt;\mathbf{a}_1,\;\ldots,\;\mathbf{a}_N&amp;lt;/math&amp;gt;.&lt;br /&gt;
Пусть оператор проекции вектора &amp;lt;math&amp;gt;\mathbf{a}&amp;lt;/math&amp;gt; на вектор &amp;lt;math&amp;gt;\mathbf{b}&amp;lt;/math&amp;gt; определён следующим образом: &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b}}\,\mathbf{a} = {\langle \mathbf{a}, \mathbf{b} \rangle \over \langle \mathbf{b}, \mathbf{b}\rangle} \mathbf{b} ,&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
где &amp;lt;math&amp;gt;\langle \mathbf{a}, \mathbf{b} \rangle&amp;lt;/math&amp;gt; — скалярное произведение векторов &amp;lt;math&amp;gt;\mathbf{a}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\mathbf{b}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Скалярное произведение для двух векторов  &amp;lt;math&amp;gt;\mathbf{ a= [a_1, a_2, ...,a_k]}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\mathbf{ b= [b_1, b_2, ..., b_k]}&amp;lt;/math&amp;gt;  в &#039;&#039;&#039;&#039;&#039;k&#039;&#039;&#039;&#039;&#039;-мерном действительном пространстве определяется как:&lt;br /&gt;
:&amp;lt;math&amp;gt;\langle \mathbf{a}, \mathbf{b} \rangle=\sum_{i=1}^k a_ib_i=a_1b_1+a_2b_2+\cdots+ a_kb_k&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Этот оператор проецирует вектор &amp;lt;math&amp;gt;\mathbf{a}&amp;lt;/math&amp;gt; коллинеарно вектору &amp;lt;math&amp;gt;\mathbf{b}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ортогональность векторов &amp;lt;math&amp;gt;\mathbf{a}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\mathbf{b}&amp;lt;/math&amp;gt; достигается на шаге (2).&lt;br /&gt;
&lt;br /&gt;
Классический процесс Грама — Шмидта выполняется следующим образом:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;&lt;br /&gt;
{\begin{array}{lclr}&lt;br /&gt;
{\mathbf  {b}}_{1}&amp;amp;=&amp;amp;{\mathbf  {a}}_{1}&amp;amp;(1)\\&lt;br /&gt;
{\mathbf  {b}}_{2}&amp;amp;=&amp;amp;{\mathbf  {a}}_{2}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{1}}}\,{\mathbf  {a}}_{2}&amp;amp;(2)\\&lt;br /&gt;
{\mathbf  {b}}_{3}&amp;amp;=&amp;amp;{\mathbf  {a}}_{3}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{1}}}\,{\mathbf  {a}}_{3}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{2}}}\,{\mathbf  {a}}_{3}&amp;amp;(3)\\&lt;br /&gt;
{\mathbf  {b}}_{4}&amp;amp;=&amp;amp;{\mathbf  {a}}_{4}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{1}}}\,{\mathbf  {a}}_{4}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{2}}}\,{\mathbf  {a}}_{4}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{3}}}\,{\mathbf  {a}}_{4}&amp;amp;(4)\\&lt;br /&gt;
&amp;amp;\vdots &amp;amp;&amp;amp;\\{\mathbf  {b}}_{N}&amp;amp;=&amp;amp;{\mathbf  {a}}_{N}-\displaystyle \sum _{{j=1}}^{{N-1}}{\mathbf  {proj}}_{{{\mathbf  {b}}_{j}}}\,{\mathbf  {a}}_{N}&amp;amp;(N)&lt;br /&gt;
\end{array}}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
На основе каждого вектора &amp;lt;math&amp;gt;\mathbf{b}_j \;(j = 1 \ldots N)&amp;lt;/math&amp;gt; может быть получен нормированный вектор: &amp;lt;math&amp;gt;\mathbf{e}_j = {\mathbf{b}_j\over \| \mathbf{b}_j \|}&amp;lt;/math&amp;gt; (у нормированного вектора направление будет таким же, как у исходного, а норма — единичной). Норма в формуле - согласованная со скалярным произведением: &amp;lt;math&amp;gt;\| x \| = \sqrt{\langle x, x \rangle}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результаты процесса Грама — Шмидта:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{b}_1,\;\ldots,\;\mathbf{b}_N&amp;lt;/math&amp;gt; — система ортогональных векторов либо&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{e}_1,\;\ldots,\;\mathbf{e}_N&amp;lt;/math&amp;gt; — система ортонормированных векторов.&lt;br /&gt;
&lt;br /&gt;
Наиболее используемой на практике формой метода является [[Метод ортогонализации с переортогонализацией|вариант метода ортогонализации с переортогонализацией]].&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%A5%D0%B0%D1%83%D1%81%D1%85%D0%BE%D0%BB%D0%B4%D0%B5%D1%80%D0%B0_(%D0%BE%D1%82%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9)_QR-%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B&amp;diff=25336</id>
		<title>Метод Хаусхолдера (отражений) QR-разложения матрицы</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%A5%D0%B0%D1%83%D1%81%D1%85%D0%BE%D0%BB%D0%B4%D0%B5%D1%80%D0%B0_(%D0%BE%D1%82%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9)_QR-%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B&amp;diff=25336"/>
		<updated>2018-02-15T12:46:49Z</updated>

		<summary type="html">&lt;p&gt;Frolov: /* Литература */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-m}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Метод Хаусхолдера&#039;&#039;&#039; (в советской математической литературе чаще называется &#039;&#039;&#039;методом отражений&#039;&#039;&#039;) используется для разложения  матриц в виде &amp;lt;math&amp;gt;A=QR&amp;lt;/math&amp;gt;    (&amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; - унитарная, &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; — правая треугольная матрица)&amp;lt;ref&amp;gt;В.В.Воеводин, Ю.А.Кузнецов. Матрицы и вычисления. М.: Наука, 1984.&amp;lt;/ref&amp;gt;. При этом матрица &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; хранится и используется не в своём явном виде, а в виде произведения матриц отражения&amp;lt;ref name=&amp;quot;VOLA&amp;quot;&amp;gt;Воеводин В.В. Вычислительные основы линейной алгебры. М.: Наука, 1977.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Шаблон:Матрица отражений}}&lt;br /&gt;
&lt;br /&gt;
Кроме [[Метод Хаусхолдера (отражений) QR-разложения квадратной матрицы, вещественный точечный вариант|классического точечного варианта]], метод имеет много других, например, блочный.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%93%D0%B8%D0%B2%D0%B5%D0%BD%D1%81%D0%B0_(%D0%B2%D1%80%D0%B0%D1%89%D0%B5%D0%BD%D0%B8%D0%B9)_QR-%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B&amp;diff=25335</id>
		<title>Метод Гивенса (вращений) QR-разложения матрицы</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%93%D0%B8%D0%B2%D0%B5%D0%BD%D1%81%D0%B0_(%D0%B2%D1%80%D0%B0%D1%89%D0%B5%D0%BD%D0%B8%D0%B9)_QR-%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B&amp;diff=25335"/>
		<updated>2018-02-15T12:46:11Z</updated>

		<summary type="html">&lt;p&gt;Frolov: /* Литература */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-m}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Метод Гивенса&#039;&#039;&#039; (в отечественной математической литературе называется также &#039;&#039;&#039;методом вращений&#039;&#039;&#039;) используется для разложения  матриц в виде &amp;lt;math&amp;gt;A = QR&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; - унитарная, &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; — правая треугольная матрица)&amp;lt;ref&amp;gt;В.В.Воеводин, Ю.А.Кузнецов. Матрицы и вычисления. М.: Наука, 1984.&amp;lt;/ref&amp;gt;. При этом матрица &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; хранится и используется не в явном виде, а в виде произведения матриц вращения. Каждая из матриц вращения (Гивенса)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Шаблон:Матрица_вращения}}&lt;br /&gt;
&lt;br /&gt;
может быть определена парой индексов и одним параметром. Это позволяет в [[Метод Гивенса (вращений) QR-разложения квадратной матрицы (вещественный точечный вариант)|стандартной реализации метода Гивенса]] хранить результаты разложения на месте матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; без использования дополнительных массивов.&lt;br /&gt;
&lt;br /&gt;
Кроме стандартной реализации, метод Гивенса имеет и другие, отличающиеся от стандартной либо порядком вращений, либо использованием блочной группировки.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=QR-%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BB%D0%BE%D1%82%D0%BD%D1%8B%D1%85_%D0%BD%D0%B5%D0%BE%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86&amp;diff=25334</id>
		<title>QR-разложения плотных неособенных матриц</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=QR-%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BB%D0%BE%D1%82%D0%BD%D1%8B%D1%85_%D0%BD%D0%B5%D0%BE%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86&amp;diff=25334"/>
		<updated>2018-02-15T12:44:54Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-p}}&lt;br /&gt;
&lt;br /&gt;
Нахождение разложения  матриц в виде &amp;lt;math&amp;gt;A = QR&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; - унитарная, &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; — правая треугольная матрица&amp;lt;ref&amp;gt;В.В.Воеводин, Ю.А.Кузнецов. Матрицы и вычисления. М.: Наука, 1984.&amp;lt;/ref&amp;gt;., является важным этапом при решении некоторых более сложных задач. Существование такого разложения, в котором правая треугольная матрица ещё и не содержит нулей на диагонали, доказано&amp;lt;ref name=&amp;quot;VOLA&amp;quot;&amp;gt;Воеводин В.В. Вычислительные основы линейной алгебры. М.: Наука, 1977.&amp;lt;/ref&amp;gt; для невырожденных матриц. Однако в ряде случаев &amp;lt;math&amp;gt;QR&amp;lt;/math&amp;gt;-разложение (возможно, с нулями на диагонали &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;) нужно и в задачах без гарантии невырожденности. Поэтому для нахождения такого разложения разработано несколько классических методов, являющихся конструктивным доказательством существования разложения в общем случае, а также их варианты. &lt;br /&gt;
&lt;br /&gt;
== Методы нахождения QR-разложения плотных неособенных матриц ==&lt;br /&gt;
&lt;br /&gt;
Классические методы QR-разложения можно разделить на две группы: приведения матрицы унитарными преобразованиями к треугольному виду и приведения матрицы неунитарными преобразованиями к унитарному виду. К первой группе относятся методы Гивенса (вращений) и Хаусхолдера (отражений), ко второй — метод ортогонализации. Строго говоря, доказательство теоремы&amp;lt;ref name=&amp;quot;VOLA&amp;quot; /&amp;gt; о существовании даёт ещё один способ разложения — через разложение Холецкого матрицы &amp;lt;math&amp;gt;A^*A&amp;lt;/math&amp;gt; с последующей обратной подстановкой, но для вырожденных матриц он не работает, поэтому обычно не применяется. &lt;br /&gt;
&lt;br /&gt;
=== Методы приведения унитарными преобразованиями к треугольному виду ===&lt;br /&gt;
&lt;br /&gt;
==== Метод Гивенса ====&lt;br /&gt;
&lt;br /&gt;
Классический [[Метод Гивенса (вращений) QR-разложения матрицы|метод Гивенса (вращений)]] основан на преобразованиях вращения (умножения на матрицы Гивенса) слева для приведения матрицы к правому треугольному виду &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;. Имеет линейный по размеру задачи критический путь графа.&lt;br /&gt;
&lt;br /&gt;
==== Метод Хаусхолдера ====&lt;br /&gt;
&lt;br /&gt;
Классический [[Метод Хаусхолдера (отражений) QR-разложения матрицы|метод Хаусхолдера (отражений)]] основан на преобразованиях отражения (Хаусхолдера) слева для приведения матрицы к правому треугольному виду &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;. Устойчивый классический вариант имеет квадратичный по размеру задачи критический путь графа, применение сдваивания уменьшает его до &amp;lt;math&amp;gt;O (n log_{2} n)&amp;lt;/math&amp;gt;. Тем не менее, в библиотеках программ более популярен, чем метод Гивенса, из-за того, что легче опирается на базовые подпрограммы библиотеки BLAS.&lt;br /&gt;
&lt;br /&gt;
=== Другие методы ===&lt;br /&gt;
&lt;br /&gt;
==== Метод ортогонализации ====&lt;br /&gt;
&lt;br /&gt;
[[Метод ортогонализации]] основан на процессе ортогонализации столбцов матрицы. Таким образом, правыми треугольными преобразованиями матрица приводится к унитарному виду &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt;. Классический метод неустойчив, а переортогонализация делает этот метод более медленным.&lt;br /&gt;
&lt;br /&gt;
==== Метод треугольного разложения матрицы Грама ====&lt;br /&gt;
&lt;br /&gt;
Практически не применяющийся [[Метод треугольного разложения матрицы Грама|метод]] работает только в условиях гарантированной невырожденности исходной матрицы &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;. Состоит из трёх частей: нахождение матрицы Грама &amp;lt;math&amp;gt;A^*A&amp;lt;/math&amp;gt; столбцов исходной матрицы, [[Метод_Холецкого_(нахождение_симметричного_треугольного_разложения)|нахождение_симметричного_треугольного_разложения]] матрицы Грама &amp;lt;math&amp;gt;A^*A&amp;lt;/math&amp;gt; в виде &amp;lt;math&amp;gt;R^*R&amp;lt;/math&amp;gt;, нахождение унитарной матрицы &amp;lt;math&amp;gt;Q=AR^{-1}&amp;lt;/math&amp;gt;, например, с помощью модифицированной обратной подстановки.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%BD%D0%BE-%D1%82%D1%80%D0%B5%D1%83%D0%B3%D0%BE%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=25333</id>
		<title>Унитарно-треугольные разложения</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D0%BD%D0%B8%D1%82%D0%B0%D1%80%D0%BD%D0%BE-%D1%82%D1%80%D0%B5%D1%83%D0%B3%D0%BE%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=25333"/>
		<updated>2018-02-15T12:44:13Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-p}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Унитарно-треугольные разложения&#039;&#039;&#039; - разложения матриц в произведение треугольной и унитарной (в вещественном случае ортогональных). &lt;br /&gt;
&lt;br /&gt;
Наиболее разработано из них нахождение [[QR-разложения плотных неособенных матриц|QR-разложения]]. Остальные же варианты задачи (LQ, QL и т.п.) сводимы к нему.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BE%D0%BC%D0%BF%D0%B0%D0%BA%D1%82%D0%BD%D0%B0%D1%8F_%D1%81%D1%85%D0%B5%D0%BC%D0%B0_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B0_%D0%93%D0%B0%D1%83%D1%81%D1%81%D0%B0_%D0%B8_%D0%B5%D1%91_%D0%BC%D0%BE%D0%B4%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25332</id>
		<title>Компактная схема метода Гаусса и её модификации</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BE%D0%BC%D0%BF%D0%B0%D0%BA%D1%82%D0%BD%D0%B0%D1%8F_%D1%81%D1%85%D0%B5%D0%BC%D0%B0_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B0_%D0%93%D0%B0%D1%83%D1%81%D1%81%D0%B0_%D0%B8_%D0%B5%D1%91_%D0%BC%D0%BE%D0%B4%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25332"/>
		<updated>2018-02-15T12:43:07Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-m}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Компактная схема метода Гаусса&#039;&#039;&#039; - метод получения для невырожденной квадратной матрицы A её LU-разложения непосредственным решением скалярных уравнений, следующих из матричного &amp;lt;math&amp;gt;A=LU&amp;lt;/math&amp;gt;. Требует невырожденности всех главных миноров матрицы A. &lt;br /&gt;
&lt;br /&gt;
Основным вариантом является [[Компактная схема метода Гаусса для плотной матрицы]]. Для матриц с существенным регулярным разрежением (ленточных, [[Компактная схема метода Гаусса для трёхдиагональной матрицы и её модификации|трёх-]] и более диагональных и т.п.) формулы алгоритмов учитывают наличие этого разрежения.&lt;br /&gt;
&lt;br /&gt;
В случае симметричности вариантом компактной схемы метода Гаусса, использующим симметрию, является &amp;lt;math&amp;gt;LDL^*&amp;lt;/math&amp;gt;-разложение, считающееся также вариантом  [[Метод Холецкого (нахождение симметричного треугольного разложения)|метода Холецкого]].&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=LU-%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%93%D0%B0%D1%83%D1%81%D1%81%D0%B0_%D0%B1%D0%B5%D0%B7_%D0%BF%D0%B5%D1%80%D0%B5%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BE%D0%BA&amp;diff=25331</id>
		<title>LU-разложение методом Гаусса без перестановок</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=LU-%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%93%D0%B0%D1%83%D1%81%D1%81%D0%B0_%D0%B1%D0%B5%D0%B7_%D0%BF%D0%B5%D1%80%D0%B5%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BE%D0%BA&amp;diff=25331"/>
		<updated>2018-02-15T12:42:19Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-m}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Метод Гаусса без перестановок&#039;&#039;&#039; - метод получения для невырожденной квадратной матрицы A её LU-разложения (&amp;lt;math&amp;gt;A=LU&amp;lt;/math&amp;gt;). Основывается в разных вариантах либо [[LU-разложение методом Гаусса|на идее исключения ненулевых элементов с помощью элементарных преобразований]] либо [[Компактная схема метода Гаусса и её модификации|на разрешении уравнения]] &amp;lt;math&amp;gt;A=LU&amp;lt;/math&amp;gt; относительно матриц L и U.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=LU-%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%93%D0%B0%D1%83%D1%81%D1%81%D0%B0_%D1%81_%D0%BF%D0%B5%D1%80%D0%B5%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0%D0%BC%D0%B8&amp;diff=25330</id>
		<title>LU-разложение методом Гаусса с перестановками</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=LU-%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D0%93%D0%B0%D1%83%D1%81%D1%81%D0%B0_%D1%81_%D0%BF%D0%B5%D1%80%D0%B5%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0%D0%BC%D0%B8&amp;diff=25330"/>
		<updated>2018-02-15T12:41:33Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-m}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Метод Гаусса с перестановками&#039;&#039;&#039; - метод получения для некоторой перестановки &amp;lt;math&amp;gt;P_{1} A P_{2}&amp;lt;/math&amp;gt; невырожденной квадратной матрицы A LU-разложения (&amp;lt;math&amp;gt;P_{1} A P_{2} = L U&amp;lt;/math&amp;gt;). Основывается во всех своих вариантах на идее исключения ненулевых элементов с помощью элементарных преобразований.&lt;br /&gt;
&lt;br /&gt;
Существуют варианты с выбором ведущего элемента по [[LU-разложение методом Гаусса с выбором ведущего элемента по столбцу|столбцу]] (&amp;lt;math&amp;gt;P_{2}=E&amp;lt;/math&amp;gt;), [[LU-разложение методом Гаусса с выбором ведущего элемента по всей матрице|по всей матрице]] (&amp;lt;math&amp;gt;P_{1} \ne P_{2}&amp;lt;/math&amp;gt;), [[LU-разложение методом Гаусса с выбором ведущего элемента по строке|по строке]] (&amp;lt;math&amp;gt;P_{1}=E&amp;lt;/math&amp;gt;) и [[LU-разложение методом Гаусса с выбором ведущего элемента по главной диагонали|по главной диагонали]] (&amp;lt;math&amp;gt;P_{1} = P_{2}&amp;lt;/math&amp;gt;). Наиболее употребительны и чаще встречаются в библиотеках первые две модификации.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BE%D0%BC%D0%BF%D0%B0%D0%BA%D1%82%D0%BD%D0%B0%D1%8F_%D1%81%D1%85%D0%B5%D0%BC%D0%B0_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B0_%D0%93%D0%B0%D1%83%D1%81%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%82%D1%80%D1%91%D1%85%D0%B4%D0%B8%D0%B0%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B,_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82&amp;diff=25329</id>
		<title>Компактная схема метода Гаусса для трёхдиагональной матрицы, последовательный вариант</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BE%D0%BC%D0%BF%D0%B0%D0%BA%D1%82%D0%BD%D0%B0%D1%8F_%D1%81%D1%85%D0%B5%D0%BC%D0%B0_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B0_%D0%93%D0%B0%D1%83%D1%81%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%82%D1%80%D1%91%D1%85%D0%B4%D0%B8%D0%B0%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B,_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82&amp;diff=25329"/>
		<updated>2018-02-15T12:40:16Z</updated>

		<summary type="html">&lt;p&gt;Frolov: /* Литература */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Компактная схема метода Гаусса&amp;lt;br /&amp;gt; для трёхдиагональной матрицы&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;3n-3&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;3n-3&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;3n-2&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;3n-2&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:Frolov|А.В.Фролов]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритмов ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Компактная схема метода Гаусса для трёхдиагональной матрицы&#039;&#039;&#039;&amp;lt;ref&amp;gt;Воеводин В.В. Вычислительные основы линейной алгебры. М.: Наука, 1977.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Воеводин В.В., Кузнецов Ю.А. Матрицы и вычисления. М.: Наука, 1984.&amp;lt;/ref&amp;gt; вычисляет такое &amp;lt;math&amp;gt;LU&amp;lt;/math&amp;gt;-разложение трёхдиагональной матрицы &lt;br /&gt;
&lt;br /&gt;
{{Шаблон:Трёхдиагональная матрица стандартной формы}}&lt;br /&gt;
&lt;br /&gt;
на две двухдиагональные:&lt;br /&gt;
&lt;br /&gt;
{{Шаблон:L2dUniDiag}} &lt;br /&gt;
и &lt;br /&gt;
{{Шаблон:U2dCommon}}.&lt;br /&gt;
&lt;br /&gt;
При такой фиксации диагонали матрицы &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; все элементы разложения становятся строго предопределёнными, с точностью до ошибок округления. Компактная схема даёт естественные формулы нахождения остальных элементов получающихся двухдиагональных матриц.&lt;br /&gt;
&amp;lt;math&amp;gt;LU&amp;lt;/math&amp;gt;-разложение трёхдиагональной матрицы является частным случаем для [[Компактная схема метода Гаусса для плотных матриц|компактной схемы метода Гаусса]] общего вида, однако из-за специфики матрицы характеристики алгоритма кардинально меняются по сравнению с компактной схемой для плотных матриц.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Формулы алгоритма следующие:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{11} = a_{11} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{i i+1} = a_{i i+1}, \quad i \in [1, n-1] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;l_{i+1 i} = a_{i+1 i} / u_{i i} , \quad i \in [1, n-1] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{ii} = a_{ii} - l_{i i-1} u_{i-1 i}, \quad i \in [2, n] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Как видно из формул, n-1 раз повторяется одна и та же последовательность трёх операций: деление, умножение, вычитание. &lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В качестве макровершины можно взять последовательность трёх операций: деление, умножение, вычитание. Эти макровершины выполняются в алгоритме n-1 раз. &lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В схеме учтено, что ряд выходных данных вычислять не нужно - они совпадают с входными. В частности,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{11} = a_{11} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{i i+1} = a_{i i+1}, \quad i \in [1, n-1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
В начале процесса &amp;lt;math&amp;gt;i = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. Вычисляется &amp;lt;math&amp;gt;l_{i+1 i} = a_{i+1 i} / u_{i i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; увеличивается на 1&lt;br /&gt;
&lt;br /&gt;
2. Вычисляется &amp;lt;math&amp;gt;u_{ii} = a_{ii} - l_{i i-1} u_{i-1 i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если &amp;lt;math&amp;gt;i = n&amp;lt;/math&amp;gt;, то конец, иначе возврат к п.1.&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Для разложения трёхдиагональной матрицы порядка n компактной схемой метода Гаусса в последовательном варианте требуется:&lt;br /&gt;
	&lt;br /&gt;
* &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; делений,&lt;br /&gt;
* &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; умножений,&lt;br /&gt;
* &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; сложений (вычитаний).&lt;br /&gt;
&lt;br /&gt;
При классификации по последовательной сложности, таким образом, компактная схема метода Гаусса для разложения трёхдиагональной матрицы в последовательном варианте  относится к алгоритмам &#039;&#039;с линейной сложностью&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;thumb&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;thumbinner&amp;quot; style=&amp;quot;width:{{#expr: 2 * (500 + 35) + 3 * (3 - 1) + 8}}px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gallery widths=500px heights=500px&amp;gt;&lt;br /&gt;
File:3dLU.png|Рисунок 1. Граф алгоритма без отображения входных и выходных данных. / - деление, * - умножение, - - вычитание.&lt;br /&gt;
File:3dLU_input.png| Рисунок 2. Граф алгоритма с отображением входных данных. / - деление, * - умножение, - - вычитание.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как видно из рис.1, на котором одна из операций разложена на 2 составляющие, информационный граф является чисто последовательным.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
При разложении трёхдиагональной матрицы порядка n компактной схемой метода Гаусса в требуется выполнить:&lt;br /&gt;
	&lt;br /&gt;
* &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; ярусов делений,&lt;br /&gt;
* &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; ярусов умножений,&lt;br /&gt;
* &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; ярусов сложений (вычитаний).&lt;br /&gt;
&lt;br /&gt;
В каждом ярусе - ровно по одной операции. При классификации по параллельной сложности, таким образом, компактная схема метода Гаусса для разложения трёхдиагональной матрицы в последовательном варианте  относится к алгоритмам &#039;&#039;с линейной сложностью&#039;&#039;. Ширина ярусов везде равна 1, и, таким образом, весь алгоритм представляет собой сплошное &amp;quot;узкое место&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: трёхдиагональная матрица &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; (элементы &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём входных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;3n-2&amp;lt;/math&amp;gt;. В разных реализациях размещение для экономии хранения может быть выполнено разным образом. Например, каждая диагональ может быть строкой массива. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: нижняя двухдиагональная матрица &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; (элементы &amp;lt;math&amp;gt;l_{ij}&amp;lt;/math&amp;gt;, причём &amp;lt;math&amp;gt;l_{ii}=1&amp;lt;/math&amp;gt;) и верхняя двухдиагональная матрица &amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt; (элементы &amp;lt;math&amp;gt;u_{ij}&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём выходных данных&#039;&#039;&#039;: формально &amp;lt;math&amp;gt;3n-2&amp;lt;/math&amp;gt;. Однако благодаря совпадению &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; входных и выходных данных реально вычисляется лишь &amp;lt;math&amp;gt;2n-2&amp;lt;/math&amp;gt; элементов.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма===&lt;br /&gt;
&lt;br /&gt;
Соотношение последовательной и параллельной сложности в случае любых ресурсов, как хорошо видно, является &#039;&#039;&#039;единицей&#039;&#039;&#039; (алгоритм не является распараллеливаемым).&lt;br /&gt;
&lt;br /&gt;
При этом вычислительная мощность алгоритма, как отношение числа операций к суммарному объему входных и выходных данных – всего лишь &#039;&#039;&#039;константа&#039;&#039;&#039; (арифметических операций столько же, сколько данных).&lt;br /&gt;
&lt;br /&gt;
Описываемый алгоритм является полностью детерминированным. &lt;br /&gt;
&lt;br /&gt;
[[Глоссарий#Эквивалентное возмущение|Эквивалентное возмущение]] &amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt; у алгоритма не более возмущения &amp;lt;math&amp;gt;\delta A&amp;lt;/math&amp;gt;, вносимому в матрицу при вводе чисел в компьютер:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
||M||_{E} \leq ||\delta A||_{E}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритмов ==&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В простейшем варианте алгоритм на Фортране можно записать так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;fortran&amp;quot;&amp;gt;&lt;br /&gt;
	DO  I = 1, N-1&lt;br /&gt;
		A(I+1,I) = A(I+1,I)/A(I,I)&lt;br /&gt;
                A(I+1,I+1) = A(I+1,I+1) - A(I+1,I)*A(I,I+1)&lt;br /&gt;
	END DO&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Разложение размещается там же, где размещалась исходная матрица.&lt;br /&gt;
Индексация такая же как и для плотной матрицы.&lt;br /&gt;
&lt;br /&gt;
Однако чаще трёхдиагональную матрицу, естественно, хранят более экономно. Например, если диагонали нумеруются слева направо и каждая хранится в одной строке массива, то получается такая версия:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;fortran&amp;quot;&amp;gt;&lt;br /&gt;
	DO  I = 1, N-1&lt;br /&gt;
		A(1,I) = A(1,I)/A(2,I)&lt;br /&gt;
                A(2,I+1) = A(2,I+1) - A(1,I)*A(3,I)&lt;br /&gt;
	END DO&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
в которой разложение также сохраняется на месте исходных данных.&lt;br /&gt;
Элементы A(1,N) и A(3,N) при данном способе хранения не адресуются.&lt;br /&gt;
&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
&lt;br /&gt;
По приведённым фрагментам программ видно, что степень локальности данных и вычислений очень высока. Особенно это выражено для второго варианта, в котором все данные, как используемые операцией, так и вычисляемые ей, хранятся и используются &amp;quot;рядом&amp;quot;. Однако выигрыш от столь высокой локальности, однако, ограничен тем, что каждое перевычисляемое данное используется затем только однажды. Это вызвано простой причиной: количество обрабатываемых алгоритмом данных, как уже описано выше, равно количеству арифметических операций.&lt;br /&gt;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Компактная схема метода Гаусса в применении к разложению трёхдиагональной матрицы - это чисто последовательный алгоритм. Его невозможно исполнять параллельно из-за того, что каждая из операций требует в качестве данных результат предыдущей и сама, в свою очередь, отдаёт результат как входное данное для следующей. &lt;br /&gt;
&lt;br /&gt;
Варианты распараллеливания компактной схемы метода Гаусса для трёхдиагональной матрицы используют ассоциативность операций, и, следовательно, представляют собой совсем другие алгоритмы, которые можно изучить на [[Компактная схема метода Гаусса для трёхдиагональной матрицы и её модификации|соответствующей странице]]. &lt;br /&gt;
&lt;br /&gt;
Кроме этого, возможен случай, когда нужны многие разложения разных трёхдиагональных матриц, тогда этот последовательный алгоритм может быть параллельно выполнен для этих матриц на разных узлах вычислительной системы.&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
При чисто последовательном характере алгоритма его ресурсы параллельности полностью отсутствуют: выгоднее все вычисления проводить на одном процессоре.&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
Из-за последовательной структуры более или менее эффективно алгоритм в своём неизменном виде может быть выполнен только на вычислителе классической фон-неймановской архитектуры.&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;br /&gt;
[[Категория:Алгоритмы с низким уровнем параллелизма]]&lt;br /&gt;
[[Категория:Разложения матриц]]&lt;br /&gt;
[[Категория:Решение систем линейных уравнений]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BE%D0%BC%D0%BF%D0%B0%D0%BA%D1%82%D0%BD%D0%B0%D1%8F_%D1%81%D1%85%D0%B5%D0%BC%D0%B0_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B0_%D0%93%D0%B0%D1%83%D1%81%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%82%D1%80%D1%91%D1%85%D0%B4%D0%B8%D0%B0%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B_%D0%B8_%D0%B5%D1%91_%D0%BC%D0%BE%D0%B4%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25328</id>
		<title>Компактная схема метода Гаусса для трёхдиагональной матрицы и её модификации</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BE%D0%BC%D0%BF%D0%B0%D0%BA%D1%82%D0%BD%D0%B0%D1%8F_%D1%81%D1%85%D0%B5%D0%BC%D0%B0_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B0_%D0%93%D0%B0%D1%83%D1%81%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D1%82%D1%80%D1%91%D1%85%D0%B4%D0%B8%D0%B0%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B_%D0%B8_%D0%B5%D1%91_%D0%BC%D0%BE%D0%B4%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25328"/>
		<updated>2018-02-15T12:39:27Z</updated>

		<summary type="html">&lt;p&gt;Frolov: /* Литература */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-m}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:Frolov|А.В.Фролов]]&lt;br /&gt;
&lt;br /&gt;
== Компактная схема метода Гаусса для трёхдиагональной матрицы и её модификации ==&lt;br /&gt;
&lt;br /&gt;
Треугольное разложение трёхдиагональной матрицы базируется на формулах треугольного разложения для матриц общего вида&amp;lt;ref name=&amp;quot;VOLA&amp;quot;&amp;gt;Воеводин В.В. Вычислительные основы линейной алгебры. М.: Наука, 1977.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;MIV&amp;quot;&amp;gt;Воеводин В.В., Кузнецов Ю.А. Матрицы и вычисления. М.: Наука, 1984.&amp;lt;/ref&amp;gt;. Обычно встречающиеся в прикладных задачах трёхдиагональные матрицы имеют свойство диагонального преобладания, поэтому не возникает необходимости в применении перестановок для повышения устойчивости разложения. Использование свойств, базирующихся, например, на [http://stu.sernam.ru/lect_alg.php?id=71 формуле Бине-Коши] в её приложении к минорам матриц&amp;lt;ref name=&amp;quot;MIV&amp;quot; /&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{{Шаблон:Бине-Коши}}&lt;br /&gt;
&lt;br /&gt;
для миноров произведения двух матриц, показывает&amp;lt;ref name=&amp;quot;VOLA&amp;quot; /&amp;gt;, что для трёхдиагональной матрицы &lt;br /&gt;
&lt;br /&gt;
{{Шаблон:Трёхдиагональная_матрица_стандартной_формы}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;LU&amp;lt;/math&amp;gt;-разложение будет содержать &#039;&#039;&#039;две двухдиагональные матрицы&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
L = \begin{bmatrix}&lt;br /&gt;
 l_{11} &amp;amp; 0  &amp;amp; 0 &amp;amp;    \cdots &amp;amp; \cdots &amp;amp; 0 \\&lt;br /&gt;
 l_{21} &amp;amp; l_{22}  &amp;amp; 0 &amp;amp;  \cdots &amp;amp; \cdots &amp;amp; 0 \\&lt;br /&gt;
 0 &amp;amp;  l_{32} &amp;amp; l_{33}  &amp;amp;     \cdots &amp;amp; \cdots &amp;amp; 0 \\&lt;br /&gt;
 \vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \ddots &amp;amp; \ddots &amp;amp; 0 \\&lt;br /&gt;
 0 &amp;amp; \cdots &amp;amp; \cdots &amp;amp; l_{n-1 n-2} &amp;amp; l_{n-1 n-1}  &amp;amp; 0 \\&lt;br /&gt;
 0 &amp;amp; \cdots &amp;amp; \cdots &amp;amp; 0 &amp;amp; l_{n n-1}  &amp;amp; l_{n n} \\&lt;br /&gt;
\end{bmatrix}, U = \begin{bmatrix}&lt;br /&gt;
 u_{11} &amp;amp; u_{12}  &amp;amp; 0 &amp;amp;    \cdots &amp;amp; \cdots &amp;amp; 0 \\&lt;br /&gt;
 0 &amp;amp; u_{22}  &amp;amp; u_{23}&amp;amp;  \cdots &amp;amp; \cdots &amp;amp; 0 \\&lt;br /&gt;
 0 &amp;amp;  0 &amp;amp; u_{33}  &amp;amp;     \cdots &amp;amp; \cdots &amp;amp; 0 \\&lt;br /&gt;
 \vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \ddots &amp;amp; \ddots &amp;amp; 0 \\&lt;br /&gt;
 0 &amp;amp; \cdots &amp;amp; \cdots &amp;amp; 0 &amp;amp; u_{n-1 n-1}  &amp;amp; u_{n-1 n} \\&lt;br /&gt;
 0 &amp;amp; \cdots &amp;amp; \cdots &amp;amp; 0 &amp;amp; 0  &amp;amp; u_{n n} \\&lt;br /&gt;
\end{bmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поэтому формулы компактной схемы метода Гаусса и её модификаций существенно упрощаются. &lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;math&amp;gt;LU&amp;lt;/math&amp;gt;-разложение ===&lt;br /&gt;
&lt;br /&gt;
==== Компактная схема метода Гаусса для трёхдиагональной матрицы ====&lt;br /&gt;
&lt;br /&gt;
[[Компактная схема метода Гаусса для трёхдиагональной матрицы, последовательный вариант|&#039;&#039;&#039;Компактная схема метода Гаусса для трёхдиагональной матрицы&#039;&#039;&#039;]] вычисляет такое &amp;lt;math&amp;gt;LU&amp;lt;/math&amp;gt;-разложение на две двухдиагональные матрицы, в котором у нижней двухдиагональной матрицы &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; на диагонали стоят только единицы: &lt;br /&gt;
&lt;br /&gt;
{{Шаблон:L2dUniDiag}}&lt;br /&gt;
&lt;br /&gt;
Формулы метода следующие:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{11} = a_{11}&amp;lt;/math&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;math&amp;gt;u_{i i+1} = a_{i i+1}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\quad i \in [1, n-1]&amp;lt;/math&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;math&amp;gt;l_{i+1 i} = a_{i+1 i} / u_{i i} &amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\quad i \in [1, n-1] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{ii} = a_{ii} - l_{i i-1} u_{i-1 i}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\quad i \in [2, n] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подробно её свойства описаны на [[Компактная схема метода Гаусса для трёхдиагональной матрицы, последовательный вариант|соответствующей странице]]. В неизменённом виде не подлежит распараллеливанию, алгоритм чисто последовательный.Существует и блочная версия разложения - для блочно-трёхдиагональных матриц.&lt;br /&gt;
Компактная схема метода Гаусса легко подвергается модификации, в которой не в матрице &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt;, а в матрице &amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt; на диагонали только единицы. Это используется, например, в качестве части метода [[Прогонка, точечный вариант|прогонки]].&lt;br /&gt;
&lt;br /&gt;
==== Алгоритм Стоуна для &amp;lt;math&amp;gt;LU&amp;lt;/math&amp;gt;-разложения трёхдиагональной матрицы ====&lt;br /&gt;
&lt;br /&gt;
[[Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы]] является частью [[Метод сдваивания Стоуна|алгоритма Стоуна]]&amp;lt;ref&amp;gt;Stone H.S. An Efficient Parallel Algorithm for the Solution of a Tridiagonal Linear System of Equations // J. ACM, Vol. 20, No. 1 (Jan. 1973), P. 27-38.&amp;lt;/ref&amp;gt; для решения трёхдиагональных СЛАУ и является &#039;&#039;&#039;первым&#039;&#039;&#039; параллельным алгоритмом &amp;lt;math&amp;gt;LU&amp;lt;/math&amp;gt;-разложения трёхдиагональной матрицы. Математическая его основа - линейная рекуррентная формула для главных миноров раскладываемой матрицы. После записи этой рекуррентной формулы в матричном виде оказывается, что можно воспользоваться ассоциативностью операции перемножения матриц. Стоун использовал для распараллеливания схему сдваивания. Однако область устойчивости этого метода гораздо уже, чем у компактной схемы метода Гаусса, несмотря на то, что искомые матрицы - те же самые. Блочная схема метода для блочно-трёхдиагональных матриц не разрабатывалась, хотя теоретически и может существовать, из-за неустойчивости схемы.  &lt;br /&gt;
&lt;br /&gt;
Подробно свойства алгоритма Стоуна описаны на [[Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы|соответствующей странице]].&lt;br /&gt;
&lt;br /&gt;
==== Последовательно-параллельный алгоритм для &amp;lt;math&amp;gt;LU&amp;lt;/math&amp;gt;-разложения трёхдиагональной матрицы ====&lt;br /&gt;
&lt;br /&gt;
[[Последовательно-параллельный алгоритм для LU-разложения трёхдиагональной матрицы]] разработан&amp;lt;ref&amp;gt;А.В.Фролов. Ещё один метод распараллеливания прогонки с использованием ассоциативности операций // Суперкомпьютерные дни в России: Труды международной конференции (28-29 сентября 2015 г., г. Москва). – М.: Изд-во МГУ, 2015. с. 151-162&amp;lt;/ref&amp;gt; для распараллеливания нахождения того же &amp;lt;math&amp;gt;LU&amp;lt;/math&amp;gt;-разложения трёхдиагональной матрицы, что получается из [[Компактная схема метода Гаусса для трёхдиагональной матрицы, последовательный вариант|компактной схемы метода Гаусса]]. Как и [[Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы|метод Стоуна]], использует ассоциативность умножения матриц, но использует также нормировку в последовательных ветвях вычислений, что даёт схеме большую область устойчивости, чем у схемы Стоуна. Для блочно-трёхдиагональных матриц существует блочная версия метода, для которой, однако, необходима невырожденность блоков не только на главной, но и на одной из побочных диагоналей матрицы.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;math&amp;gt;LDU&amp;lt;/math&amp;gt;-разложение ===&lt;br /&gt;
&lt;br /&gt;
В случае, если существует &amp;lt;math&amp;gt;LU&amp;lt;/math&amp;gt;-разложение на две двухдиагональные матрицы, в котором нижняя двухдиагональная матрица &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; имеет на главной диагонали только единицы, легко можно найти и &amp;lt;math&amp;gt;LDU&amp;lt;/math&amp;gt;-разложение, в котором и верхняя двухдиагональная матрица также имеет на главной диагонали только единицы:&lt;br /&gt;
&lt;br /&gt;
{{Шаблон:U2dUniDiag}}&lt;br /&gt;
&lt;br /&gt;
Формулы видоизменённой компактной схемы метода Гаусса для нахождения этого разложения выглядят следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{11} = a_{11} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{i i+1} = a_{i i+1} / d_{i i}, \quad i \in [1, n-1] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;l_{i+1 i} = a_{i+1 i} / d_{i i} , \quad i \in [1, n-1] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ii} = a_{ii} - l_{i i-1} a_{i-1 i}, \quad i \in [2, n] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Аналогично, добавлением делений можно видоизменить и формулы метода Стоуна и последовательно-параллельного метода разложения. &lt;br /&gt;
&lt;br /&gt;
Получаемое разложение легче использовать для решения трёхдиагональных СЛАУ, поскольку в обоих подстановках деление не будет перемежаться с операциями умножения-сложения/вычитания.&lt;br /&gt;
&lt;br /&gt;
== Компактная схема треугольного разложения для трёхдиагональной эрмитовой матрицы и её модификации ==&lt;br /&gt;
&lt;br /&gt;
Эрмитовость трёхдиагональной матрицы позволяет вычислять такое её разложение, которое можно хранить в меньшей памяти с учетом симметрии разложения. &lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;math&amp;gt;LL^*&amp;lt;/math&amp;gt;-разложение ===&lt;br /&gt;
&lt;br /&gt;
Для вычисления &amp;lt;math&amp;gt;LL^*&amp;lt;/math&amp;gt;-разложения матрицы логично использовать [[Разложение Холецкого (метод квадратного корня)|метод Холецкого]], формулы которого после коррекции будут адаптированы под трёхдиагональность исходной матрицы и двухдиагональность результата:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;l_{11} = \sqrt{a_{11}}, &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;l_{i+1 i} = \frac{a_{i+1 i}}{l_{ii}}, \quad i \in [1, n-1], &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;l_{ii} = \sqrt{a_{ii} - |l_{i i-1}|^2}, \quad i \in [2, n]. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Аналогичные изменения можно провести в методах Стоуна и последовательно-параллельного &amp;lt;math&amp;gt;LU&amp;lt;/math&amp;gt;-разложения. &lt;br /&gt;
Однако на практике использование схемы с квадратными корнями для трёхдиагональных матриц не нужно, поскольку есть более быстрое &amp;lt;math&amp;gt;LDL^*&amp;lt;/math&amp;gt;-разложение.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;math&amp;gt;LDL^*&amp;lt;/math&amp;gt;-разложение ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;LDL^*&amp;lt;/math&amp;gt;-разложение для трёхдиагональной эрмитовой матрицы - самое экономное из последовательных её разложений. Формулы разложения имеют вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{11} = a_{11} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;l_{i+1 i} = a_{i+1 i} / d_{i i} , \quad i \in [1, n-1] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;d_{ii} = a_{ii} - l_{i i-1} a_{i i-1}^*, \quad i \in [2, n] &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Аналогично, можно видоизменить и формулы метода Стоуна и последовательно-параллельного метода разложения. &lt;br /&gt;
Как и для &amp;lt;math&amp;gt;LDU&amp;lt;/math&amp;gt;-разложения, при решении СЛАУ с трёхдиагональной матрицей с помощью &amp;lt;math&amp;gt;LDL^*&amp;lt;/math&amp;gt;-разложения легче решаются полученные двухдиагональные СЛАУ.&lt;br /&gt;
&lt;br /&gt;
== Разложения для трёхдиагональных матриц специального вида ==&lt;br /&gt;
&lt;br /&gt;
Для некоторых матриц специального вида, получаемых из известных операторов математической физики, в том числе и для трёхдиагональных матриц, известны аналитические выражения для их характеристик, в том числе и значения главных миноров. Несмотря на это, широко распространено явление, когда исследователи, работающие с такими матрицами, вместо того, чтобы воспользоваться готовыми формулами разложений, применяют к ним вышеописанные методы, нерационально тратя компьютерное время. &lt;br /&gt;
&lt;br /&gt;
[[Разложения для трёхдиагональных матриц специального вида]] можно найти на специальной отдельной странице.&lt;br /&gt;
&lt;br /&gt;
== Использование разложений ==&lt;br /&gt;
&lt;br /&gt;
Обычно разложения трёхдиагональных матриц в произведение двухдиагональных (и, возможно, ещё одной диагональной) используют для [[Решения СЛАУ с трёхдиагональными матрицами|решения СЛАУ с трёхдиагональной матрицей]], полученной из какой-либо физической модели. Поэтому зачастую полезность того или иного метода разложения следует сравнивать не только с другими методами разложения трёхдиагональных матриц, но и с различными методами решения СЛАУ с такими матрицами, в том числе и не использующими такие разложения - например, такими, как [[Метод циклической редукции|метод циклической редукции]] или [[Метод окаймления|метод окаймления]].&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;br /&gt;
[[Категория:Разложения матриц]]&lt;br /&gt;
[[Категория:Решение систем линейных уравнений]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%97%D0%B0%D0%BA%D0%BE%D0%BD%D1%87%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8_%D0%B1%D0%B5%D0%B7_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%BD%D0%B0_%D0%B0%D0%BD%D0%B3%D0%BB%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA&amp;diff=25327</id>
		<title>Категория:Законченные статьи без перевода на английский язык</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%97%D0%B0%D0%BA%D0%BE%D0%BD%D1%87%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8_%D0%B1%D0%B5%D0%B7_%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4%D0%B0_%D0%BD%D0%B0_%D0%B0%D0%BD%D0%B3%D0%BB%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA&amp;diff=25327"/>
		<updated>2018-02-15T12:37:05Z</updated>

		<summary type="html">&lt;p&gt;Frolov: Новая страница: «Рабочая категория для редакторов, объединяет статьи, которые готовы к переводу.»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Рабочая категория для редакторов, объединяет статьи, которые готовы к переводу.&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D1%81%D0%B4%D0%B2%D0%B0%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%A1%D1%82%D0%BE%D1%83%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_LU-%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D1%82%D1%80%D1%91%D1%85%D0%B4%D0%B8%D0%B0%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B&amp;diff=25326</id>
		<title>Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D1%81%D0%B4%D0%B2%D0%B0%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%A1%D1%82%D0%BE%D1%83%D0%BD%D0%B0_%D0%B4%D0%BB%D1%8F_LU-%D1%80%D0%B0%D0%B7%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F_%D1%82%D1%80%D1%91%D1%85%D0%B4%D0%B8%D0%B0%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B&amp;diff=25326"/>
		<updated>2018-02-15T12:35:40Z</updated>

		<summary type="html">&lt;p&gt;Frolov: /* Литература */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Метод сдваивания Стоуна для решения двудиагональных СЛАУ&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;3(n-1)\lceil \log_2 (n-1) \rceil + o((n-1)\lceil \log_2 (n-1) \rceil)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;2 \lceil \log_2 (n-1) \rceil + 3&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;3n-2&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;2n-1&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:Frolov|А.В.Фролов]]&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритмов ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы&#039;&#039;&#039; - часть [[Метод сдваивания Стоуна|метода сдваивания Стоуна]] для решения СЛАУ&amp;lt;ref name=&amp;quot;VOLA&amp;quot;&amp;gt;Воеводин В.В. Вычислительные основы линейной алгебры. М.: Наука, 1977.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;MIV&amp;quot;&amp;gt;Воеводин В.В., Кузнецов Ю.А. Матрицы и вычисления. М.: Наука, 1984.&amp;lt;/ref&amp;gt; вида &amp;lt;math&amp;gt;Ax = b&amp;lt;/math&amp;gt;, где &lt;br /&gt;
&lt;br /&gt;
{{Шаблон:Трёхдиагональная СЛАУ в стандартном виде}}&lt;br /&gt;
&lt;br /&gt;
[[Метод сдваивания Стоуна]] впервые предложен в начале 70-х гг. 20го века&amp;lt;ref name=&amp;quot;STONE&amp;quot;&amp;gt;Stone H.S. An Efficient Parallel Algorithm for the Solution of a Tridiagonal Linear System of Equations // J. ACM, Vol. 20, No. 1 (Jan. 1973), P. 27-38.&amp;lt;/ref&amp;gt; в качестве альтернативы другим параллельным алгоритмам решения трёхдиагональных СЛАУ, например, [[Полный метод циклической редукции|методу циклической редукции]]. &lt;br /&gt;
&lt;br /&gt;
Здесь рассматривается его первая часть - &amp;lt;math&amp;gt;LU&amp;lt;/math&amp;gt;-разложение. Оно состоит в представлении матрицы &lt;br /&gt;
&lt;br /&gt;
{{Шаблон:Трёхдиагональная матрица стандартной формы}}&lt;br /&gt;
&lt;br /&gt;
в виде произведения матриц&lt;br /&gt;
&lt;br /&gt;
{{Шаблон:L2dUniDiag}}&lt;br /&gt;
&lt;br /&gt;
и &lt;br /&gt;
&lt;br /&gt;
{{Шаблон:U2dCommon}}&lt;br /&gt;
&lt;br /&gt;
Важным моментом является то, что в условиях точных вычислений алгоритм сдваивания Стоуна вычисляет то же самое разложение, что и [[Компактная схема метода Гаусса для трёхдиагональной матрицы, последовательный вариант|компактная схема метода Гаусса]].&lt;br /&gt;
&lt;br /&gt;
Теоретически метод Стоуна основан на том, что, если ввести величины &amp;lt;math&amp;gt;q_i&amp;lt;/math&amp;gt; так, что &amp;lt;math&amp;gt;q_0 = 1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;q_1 = a_{11}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;q_i = a_{ii} q_{i-1} - a_{ii-1}a_{i-1i} q_{i-2}&amp;lt;/math&amp;gt;, то после вычисления всех &amp;lt;math&amp;gt;q_i&amp;lt;/math&amp;gt; легко вычислить все &amp;lt;math&amp;gt;u_{ii} = q_i/q_{i-1}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;l_{ii-1} = a_{ii-1}/u_{i-1i-1}&amp;lt;/math&amp;gt;. При этом не нужно вычислять &amp;lt;math&amp;gt;u_{ii+1} = a_{ii+1}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Вычисление всех &amp;lt;math&amp;gt;q_i&amp;lt;/math&amp;gt; производится с использованием ассоциативности матричного умножения. Из рекуррентной связи &amp;lt;math&amp;gt;q_i = a_{ii} q_{i-1} - a_{ii-1}a_{i-1i} q_{i-2}&amp;lt;/math&amp;gt; следует  матричное равенство&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{bmatrix}&lt;br /&gt;
  q_i \\&lt;br /&gt;
 q_{i-1} \\&lt;br /&gt;
\end{bmatrix} = \begin{bmatrix}&lt;br /&gt;
  a_{ii}  &amp;amp; -a_{ii-1}a_{i-1i} \\&lt;br /&gt;
 1 &amp;amp; 0 \\&lt;br /&gt;
\end{bmatrix} \begin{bmatrix}&lt;br /&gt;
  q_{i-1} \\&lt;br /&gt;
 q_{i-2} \\&lt;br /&gt;
\end{bmatrix} = T_i \begin{bmatrix}&lt;br /&gt;
  q_{i-1} \\&lt;br /&gt;
 q_{i-2} \\&lt;br /&gt;
\end{bmatrix} = T_i T_{i-1}...T_2 \begin{bmatrix}&lt;br /&gt;
  q_{1} \\&lt;br /&gt;
 q_{0} \\&lt;br /&gt;
\end{bmatrix} = T_i T_{i-1}...T_2 \begin{bmatrix}&lt;br /&gt;
  a_{11} \\&lt;br /&gt;
 1 \\&lt;br /&gt;
\end{bmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Произведения матриц &amp;lt;math&amp;gt;T_i T_{i-1}...T_2&amp;lt;/math&amp;gt; вычисляются параллельной схемой сдваивания. При этом благодаря тому, что вторая строка всех матриц &amp;lt;math&amp;gt;T_i&amp;lt;/math&amp;gt; равна первой строке единичной матрицы, вторая строка произведения &amp;lt;math&amp;gt;T_i T_{i-1}...T_k&amp;lt;/math&amp;gt; совпадает с первой строкой произведения &lt;br /&gt;
&amp;lt;math&amp;gt;T_{i-1}...T_k&amp;lt;/math&amp;gt;, что позволяет сэкономить вычисления вдвое против перемножения неособенных матриц этого же порядка.&lt;br /&gt;
&lt;br /&gt;
[[file:DoublingPartUniver.png|thumb|right|600px|Рисунок 1. Граф вычисления произведений матриц &amp;lt;math&amp;gt;T_{i}&amp;lt;/math&amp;gt; при &amp;lt;math&amp;gt;n=9&amp;lt;/math&amp;gt;. Каждая вершина на первом ярусе соответствует составной операции, состоящей из одного умножения и одной операции &amp;lt;math&amp;gt;a+bc&amp;lt;/math&amp;gt;, на остальных ярусах - из двух операций &amp;lt;math&amp;gt;ab+cd&amp;lt;/math&amp;gt;. В чёрных вершинах вычисляются используемые далее результаты, в светлых - промежуточные]]&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Вначале полагается для всех &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; от 2 до &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;p_i = a_{ii}, r_i = -a_{ii-1}a_{i-1i}&amp;lt;/math&amp;gt;, &lt;br /&gt;
&lt;br /&gt;
а также&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;p_1 = 0, r_1 = 1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Затем вычисления на каждом шаге (номер шага обозначим &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;) ведутся так: &lt;br /&gt;
&lt;br /&gt;
начиная с &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; с 2, пропускают &amp;lt;math&amp;gt;2^{k-1}&amp;lt;/math&amp;gt; чисел, а потом для &amp;lt;math&amp;gt;2^{k-1}&amp;lt;/math&amp;gt; чисел &lt;br /&gt;
берут ближайшее для них снизу &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; вида &amp;lt;math&amp;gt;j = 1 + 2^{k} m &amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Для первого шага перевычисляются новые значения  &amp;lt;math&amp;gt;p_i, r_i&amp;lt;/math&amp;gt; по формулам:&lt;br /&gt;
&amp;lt;math&amp;gt;p^{new}_i = p_i p_{i-1}, r^{new}_i = p_i r_{i-1} + r_i&amp;lt;/math&amp;gt;, &lt;br /&gt;
а для остальных шагов - по формулам &amp;lt;math&amp;gt;p^{new}_i = p_i p_{j}+r_i p_{j-1}, r^{new}_i = p_i r_{j} + r_i r_{j-1}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Затем опять пропускают &amp;lt;math&amp;gt;2^{k-1}&amp;lt;/math&amp;gt; чисел, повторяют для &amp;lt;math&amp;gt;2^{k-1}&amp;lt;/math&amp;gt; чисел такие же вычисления, и так до исчерпания диапазона всего значений &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; от 2 до &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Шаги повторяют до тех пор, пока не оказывается, что нужно пропустить все значения &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; от 2 до &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. После этого выполняют вычисления&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;q_i = p_i a_{11} + r_i&amp;lt;/math&amp;gt; для всех &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; от 1 до &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; и затем &amp;lt;math&amp;gt;u_{ii} = q_i/q_{i-1}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;l_{ii-1} = a_{ii-1}/u_{i-1i-1}&amp;lt;/math&amp;gt; для всех &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; от 2 до &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро алгоритма составляют в основной части операции типа &amp;lt;math&amp;gt;ab+cd&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;ab+c&amp;lt;/math&amp;gt;, с небольшой добавкой отдельных умножений и делений. Изолированные длинные ветви вычислений отсутствуют.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
На макроуровне можно выделить такие 4 макрооперации: вычисление элементов матриц &amp;lt;math&amp;gt;T_i&amp;lt;/math&amp;gt;, вычисление сдваиванием произведений матриц &amp;lt;math&amp;gt;T_{i}&amp;lt;/math&amp;gt;, вычисление результатов.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Метод Стоуна изначально спроектирован для параллельного исполнения, поскольку является по отношению к, например, классической прогонке, алгоритмом с избыточными вычислениями. Смысла в его последовательной реализации нет ещё и из-за того, что он неустойчив.&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Для полного выполнения алгоритма Стоуна и получения разложения трёхдиагональной матрицы на две двудиагональные нужно выполнить:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;2n-2&amp;lt;/math&amp;gt; делений, &lt;br /&gt;
* &amp;lt;math&amp;gt;2(n-1)\lceil \log_2 (n-1) \rceil + o((n-1)\lceil \log_2 (n-1) \rceil)&amp;lt;/math&amp;gt; умножений,&lt;br /&gt;
* &amp;lt;math&amp;gt;(n-1)\lceil \log_2 (n-1) \rceil +o((n-1)\lceil \log_2 (n-1) \rceil)&amp;lt;/math&amp;gt; сложений. &lt;br /&gt;
&lt;br /&gt;
Поэтому алгоритм должен быть отнесён к алгоритмам &#039;&#039;линейно-логарифмической сложности&#039;&#039; по количеству последовательных операций.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
Как уже отмечено, макроструктура алгоритма состоит из 4 частей.&lt;br /&gt;
&lt;br /&gt;
В первой части производится вычисление недиагональных элементов матриц &amp;lt;math&amp;gt;T_{i}&amp;lt;/math&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Во второй части - вычисление сдваиванием произведений матриц &amp;lt;math&amp;gt;T_{i}&amp;lt;/math&amp;gt;, оно показано на рисунке 1 и использует результаты 1й части. &lt;br /&gt;
&lt;br /&gt;
В третьей, последней, части - вычисление результатов, с использованием результатов 2й части. &lt;br /&gt;
&lt;br /&gt;
Внутренние графы 1й и 3й частей - пусты, их операции в зависимости только со 2й частью.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
На критическом пути алгоритма Стоуна для LU-разложения трёхдиагональной матрицы нужно выполнить:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt; ярус делений, &lt;br /&gt;
* &amp;lt;math&amp;gt;\lceil \log_2 (n-1) \rceil+1&amp;lt;/math&amp;gt; ярусов умножений,&lt;br /&gt;
* &amp;lt;math&amp;gt;\lceil \log_2 (n-1) \rceil+1&amp;lt;/math&amp;gt; ярусов сложений. &lt;br /&gt;
&lt;br /&gt;
Поэтому алгоритм должен быть отнесён к алгоритмам &#039;&#039;логарифмической сложности&#039;&#039; по количеству последовательных операций. Ширина яруса равна &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, поэтому алгоритм должен быть отнесён к алгоритмам &#039;&#039;линейной сложности&#039;&#039; по ширине ярусов.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: трёхдиагональная матрица &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; (элементы &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём входных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;3n-2&amp;lt;/math&amp;gt;. В разных реализациях размещение для экономии хранения может быть выполнено разным образом. Например, каждая диагональ может быть строкой массива. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: нижняя двухдиагональная матрица &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; (элементы &amp;lt;math&amp;gt;l_{ij}&amp;lt;/math&amp;gt;, причём &amp;lt;math&amp;gt;l_{ii}=1&amp;lt;/math&amp;gt;) и верхняя двухдиагональная матрица &amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt; (элементы &amp;lt;math&amp;gt;u_{ij}&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём выходных данных&#039;&#039;&#039;: формально &amp;lt;math&amp;gt;3n-2&amp;lt;/math&amp;gt;. Однако благодаря совпадению &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; входных и выходных данных реально вычисляется лишь &amp;lt;math&amp;gt;2n-2&amp;lt;/math&amp;gt; элементов.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Соотношение последовательной и параллельной сложности, как хорошо видно, равно &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При этом вычислительная мощность алгоритма как отношение числа операций к суммарному объему входных и выходных данных является &#039;&#039;логарифмической&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Алгоритм в рамках выбранной версии полностью детерминирован.&lt;br /&gt;
&lt;br /&gt;
Устойчивость алгоритма остаётся только при условии невозрастания ведущих главных миноров матрицы. При росте миноров область устойчивости алгоритма очень мала.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Из-за большой избыточности вычислений алгоритм сдваивания Стоуна никогда не предназначался для последовательной реализации. После обнаружения его неустойчивости стало ясно, что и в будущем он не будет реализован на последовательных архитектурах.&lt;br /&gt;
&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
&lt;br /&gt;
Хотя исследование локальности и не имеет смысла из-за неустойчивости, можно сказать, что, как видно по графу алгоритма, ряд дуг длинны как по времени (по различию номеров ярусов операций, являющихся началом и концом дуги), так и по пространству (исключением является только размещение в гиперкубе, физически невозможное). Эта неустранимая нелокальность должна тормозить исполнение алгоритма. Реальное же исследование последовательного кода на обращения в память проводить бессмысленно, поскольку последовательный код не применяется и не будет применяться никем.&lt;br /&gt;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Из-за неустойчивости алгоритма любые способы реализации теряют смысл. &lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
Из-за неустойчивости алгоритма не имеют смысла любые разговоры о масштабируемости любых его реализаций. &lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Из-за неустойчивости алгоритма не имеют смысла любые замеры эффективности любых его реализаций и их динамических характеристик. Кроме того, из-за избыточности вычислений ясно, что реальная эффективность будет существенно ограничена даже при малых размерах задач, где неустойчивость ещё не сказывается.&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
На области относительно приемлемых ошибок (малые размеры задач) у метода всё равно нет шансов на нормальную реализацию - быстрее будет СЛАУ прогонкой на обычной персоналке решить.&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Из-за неустойчивости алгоритма его не используют на практике, поэтому планировавшаяся в исходной публикации&amp;lt;ref name=&amp;quot;STONE&amp;quot; /&amp;gt; замена более популярной [[Полный метод циклической редукции|циклической редукции]] не удалась.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;br /&gt;
[[Категория:Законченные статьи без перевода на английский язык]]&lt;br /&gt;
[[Категория:Метод сдваивания]]&lt;br /&gt;
[[Категория:Неустойчивые_параллельные_методы]]&lt;br /&gt;
[[Категория:Алгоритмы с избыточными вычислениями]]&lt;br /&gt;
[[Категория:Разложения матриц]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25325</id>
		<title>Классификация алгоритмов</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25325"/>
		<updated>2018-02-05T11:16:39Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= Задачи алгебры =&lt;br /&gt;
==Матричные и векторные операции==&lt;br /&gt;
===Векторные операции===&lt;br /&gt;
# {{level|Суммирование сдваиванием}}&lt;br /&gt;
## {{level|Нахождение суммы элементов массива сдваиванием}}&lt;br /&gt;
## {{level|Нахождение частных сумм элементов массива сдваиванием}}&lt;br /&gt;
# {{level|Равномерная норма вектора, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Скалярное произведение векторов, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Последовательно-параллельный метод суммирования}}&lt;br /&gt;
=== Умножения матриц на вектор ===&lt;br /&gt;
==== Умножения неособенных матриц на вектор ====&lt;br /&gt;
# {{level|Умножение плотной неособенной матрицы на вектор (последовательный вещественный вариант)}}&lt;br /&gt;
==== Умножения матриц специального вида на вектор ====&lt;br /&gt;
# {{level|Преобразование Фурье}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для составной размерности}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Простой алгоритм Кули-Тьюки быстрого преобразования Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Быстрое преобразование Фурье для чётных степеней двойки}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для составной размерности с небольшими простыми делителями (2,3,5,7)}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для простой размерности}}&lt;br /&gt;
===Матричные операции===&lt;br /&gt;
# {{level|Умножение плотных матриц}}&lt;br /&gt;
## {{level|Перемножение плотных неособенных матриц (последовательный вещественный вариант)}}&lt;br /&gt;
## {{level|Метод Штрассена}}&lt;br /&gt;
==Разложения матриц==&lt;br /&gt;
{{level|Задача разложения матриц}}&lt;br /&gt;
# {{level|Треугольные разложения}}&lt;br /&gt;
## {{level|Метод Гаусса (нахождение LU-разложения)}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса без перестановок}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса}}&lt;br /&gt;
#### {{level|Компактная схема метода Гаусса и её модификации}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для плотной матрицы}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы и её модификации}}&lt;br /&gt;
###### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы, последовательный вариант}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Последовательно-параллельный алгоритм для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса с перестановками}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по столбцу}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по строке}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по главной диагонали}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по всей матрице}}&lt;br /&gt;
## {{level|Метод Холецкого (нахождение симметричного треугольного разложения)}}&lt;br /&gt;
### {{level|Разложение Холецкого (метод квадратного корня)}} базовый точечный вещественный вариант для плотной симметричной положительно-определённой матрицы&lt;br /&gt;
# {{level|Известные треугольные разложения для матриц специального вида}}&lt;br /&gt;
# {{level|Унитарно-треугольные разложения}}&lt;br /&gt;
## {{level|QR-разложения плотных неособенных матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Гивенса (вращений) QR-разложения квадратной матрицы (вещественный точечный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) QR-разложения квадратной матрицы, вещественный точечный вариант}}&lt;br /&gt;
### {{level|Метод ортогонализации}}&lt;br /&gt;
#### {{level|Классический метод ортогонализации}}&lt;br /&gt;
#### {{level|Метод ортогонализации с переортогонализацией}}&lt;br /&gt;
### {{level|Метод треугольного разложения матрицы Грама}}&lt;br /&gt;
## {{level|Методы QR-разложения плотных хессенберговых матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
# {{level|Подобные разложения}}&lt;br /&gt;
## {{level|Подобные разложения на унитарные и хессенберговы матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
## {{level|Симметричные разложения на унитарные и трёхдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к трёхдиагональной форме}}&lt;br /&gt;
## {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
# {{level|Неподобные унитарные разложения}}&lt;br /&gt;
## {{level|Неподобные разложения на унитарные и двухдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
## {{level|Разложения на унитарные и диагональные матрицы}}&lt;br /&gt;
### {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
#### {{level|Методы нахождения сингулярных чисел двухдиагональных матриц}}&lt;br /&gt;
##### {{level|Алгоритм dqds нахождения сингулярных чисел двухдиагональной матрицы}}&lt;br /&gt;
###### {{level|Итерация алгоритма dqds}}&lt;br /&gt;
==Решение систем линейных уравнений==&lt;br /&gt;
# {{level|Прямые методы решения СЛАУ}}&lt;br /&gt;
## {{level|Linpack benchmark}}&lt;br /&gt;
## {{level|Методы решения СЛАУ с матрицами специального вида}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с треугольными матрицами}}&lt;br /&gt;
#### {{level|Прямая подстановка (вещественный вариант)|Прямая подстановка}}&lt;br /&gt;
#### {{level|Обратная подстановка (вещественный вариант)|Обратная подстановка}}&lt;br /&gt;
#### {{level|Методы решения СЛАУ с двудиагональными матрицами}}&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант обратной подстановки}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с трёхдиагональными матрицами}}&lt;br /&gt;
#### {{level|Методы, основанные на стандартном LU-разложении матрицы}}&lt;br /&gt;
##### {{level|Прогонка}}&lt;br /&gt;
###### {{level|Прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Классическая монотонная прогонка, повторный вариант}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант решения трёхдиагональной СЛАУ с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Метод редукции}}&lt;br /&gt;
###### {{level|Полный метод редукции}}&lt;br /&gt;
###### {{level|Повторный метод редукции для новой правой части}}&lt;br /&gt;
##### {{level|Встречная прогонка}}&lt;br /&gt;
###### {{level|Встречная прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Повторная встречная прогонка, точечный вариант}}&lt;br /&gt;
##### {{level|Метод циклической редукции}}&lt;br /&gt;
###### {{level|Полный метод циклической редукции}}&lt;br /&gt;
###### {{level|Повторный метод циклической редукции для новой правой части}}&lt;br /&gt;
##### {{level|Метод окаймления}}&lt;br /&gt;
### Методы решения СЛАУ с блочно-треугольными матрицами&lt;br /&gt;
#### {{level|Блочная прямая подстановка (вещественный вариант)|Блочная прямая подстановка}}&lt;br /&gt;
#### {{level|Блочная обратная подстановка (вещественный вариант)|Блочная обратная подстановка}}&lt;br /&gt;
#### Методы решения СЛАУ с блочно-двухдиагональными матрицами&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с блочно-двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант обратной подстановки для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с блочно-трёхдиагональными матрицами}}&lt;br /&gt;
#### Методы, основанные на стандартном LU-разложении матрицы&lt;br /&gt;
##### {{level|Блочная прогонка}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант решения с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Встречная прогонка, блочный вариант}}&lt;br /&gt;
##### {{level|Блочный метод циклической редукции}}&lt;br /&gt;
##### {{level|Блочный метод окаймления}}&lt;br /&gt;
## {{level|Решения СЛАУ с матрицами специального вида, имеющими известные обратные матрицы}}&lt;br /&gt;
# Итерационные методы решения СЛАУ&lt;br /&gt;
## {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
## {{level|Стабилизированный метод бисопряженных градиентов (BiCGStab)}}&lt;br /&gt;
## {{level|Алгоритм_Качмажа}}&lt;br /&gt;
==Решения спектральных задач==&lt;br /&gt;
# {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
## {{level|QR-алгоритм}}&lt;br /&gt;
### {{level|QR-алгоритм, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|QR-алгоритм для хессенберговой матрицы, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для симметричных матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для комплексных эрмитовых матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для решения спектральной задачи у симметричных матриц}}&lt;br /&gt;
### {{level|Классический метод Якоби (вращений) для симметричных матриц с выбором по всей матрице}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением и барьерами}}&lt;br /&gt;
## {{level|Метод Ланцоша}}&lt;br /&gt;
### {{level|Алгоритм Ланцоша для точной арифметики (без переортогонализации)}}&lt;br /&gt;
# {{level|Частичная спектральная задача}}&lt;br /&gt;
## {{level|Метод бисекций}}&lt;br /&gt;
# {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для нахождения сингулярных значений неособенных матриц}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для нахождения сингулярных значений с циклическим перебором}}&lt;br /&gt;
### {{level|Метод Якоби для нахождения сингулярных значений со специальным подбором вращений}}&lt;br /&gt;
## {{level|QR-алгоритм в приложении к сингулярному разложению}}&lt;br /&gt;
==Алгебра многочленов==&lt;br /&gt;
# {{level|Схема Горнера, вещественная версия, последовательный вариант}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Алгоритмы на списках и массивах =&lt;br /&gt;
==Алгоритмы поиска==&lt;br /&gt;
# {{level|Линейный поиск - находит элемент в любом списке|Линейный поиск}}, &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
# {{level|Двоичный поиск - находит элемент в отсортированном списке|Двоичный поиск}}, &amp;lt;math&amp;gt;O(\log(n))&amp;lt;/math&amp;gt;&lt;br /&gt;
==Алгоритмы сортировки==&lt;br /&gt;
# {{level|Сортировка с помощью двоичного дерева}}&lt;br /&gt;
# {{level|Сортировка пузырьком}}&lt;br /&gt;
# {{level|Сортировка слиянием (последовательный и параллельный варианты)}}&lt;br /&gt;
==Алгоритмы на графах==&lt;br /&gt;
# Обход графа&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}}&lt;br /&gt;
## {{level|Поиск в глубину (DFS)}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути от одной вершины (SSSP)}}&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}} (для невзвешенных графов)&lt;br /&gt;
## {{level|Алгоритм Дейкстры}}&lt;br /&gt;
## {{level|Алгоритм Беллмана-Форда}}&lt;br /&gt;
## {{level|Алгоритм Δ-шагания}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути для всех пар вершин (APSP)}}&lt;br /&gt;
## {{level|Алгоритм Джонсона}}&lt;br /&gt;
## {{level|Алгоритм Флойда-Уоршелла}}&lt;br /&gt;
# {{level|Поиск транзитивного замыкания орграфа}}&lt;br /&gt;
## {{level|Алгоритм Пурдома}}&lt;br /&gt;
# {{level|Определение диаметра графа}}&lt;br /&gt;
# {{level|Построение минимального остовного дерева (MST)}}&lt;br /&gt;
## {{level|Алгоритм Борувки}}&lt;br /&gt;
## {{level|Алгоритм Крускала}}&lt;br /&gt;
## {{level|Алгоритм Прима}}&lt;br /&gt;
## {{level|Алгоритм GHS}}&lt;br /&gt;
# {{level|Поиск изоморфных подграфов}}&lt;br /&gt;
## {{level|Алгоритм Ульмана}}&lt;br /&gt;
## {{level|Алгоритм VF2}}&lt;br /&gt;
# {{level|Связность в графах}}&lt;br /&gt;
## {{level|Алгоритм Шилоаха-Вишкина поиска компонент связности}}&lt;br /&gt;
## {{level|Система непересекающихся множеств}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм DCSC поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна-Вишкина поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска «мостов» в графе}}&lt;br /&gt;
## {{level|Определение вершинной связности графа}}&lt;br /&gt;
## {{level|Алгоритм Габова определения рёберной связности графа}}&lt;br /&gt;
# {{level|Поиск максимального потока в транспортной сети}}&lt;br /&gt;
## {{level|Алгоритм Форда-Фалкерсона}}&lt;br /&gt;
## {{level|Алгоритм проталкивания предпотока}}&lt;br /&gt;
# {{level|Поиск потока минимальной стоимости в транспортной сети}}&lt;br /&gt;
# {{level|Задача о назначениях}}&lt;br /&gt;
## {{level|Венгерский алгоритм}}&lt;br /&gt;
## {{level|Алгоритм аукциона}}&lt;br /&gt;
## {{level|Алгоритм Гопкрофта-Карпа}}&lt;br /&gt;
# {{level|Вычисление betweenness centrality|Вычисление центральности вершин}}&lt;br /&gt;
=Вычислительная геометрия=&lt;br /&gt;
# {{level|Поиск диаметра множества точек}}&lt;br /&gt;
# {{level|Построение выпуклой оболочки набора точек}}&lt;br /&gt;
# {{level|Триангуляция Делоне}}&lt;br /&gt;
# {{level|Диаграмма Вороного}}&lt;br /&gt;
# {{level|Принадлежность точки многоугольнику}}&lt;br /&gt;
# {{level|Пересечения выпуклых многоугольников}} &lt;br /&gt;
# {{level|Пересечение звёздных многоугольников}}&lt;br /&gt;
==Компьютерная графика==&lt;br /&gt;
# {{level|Алгоритмы построения отрезка - алгоритмы для аппроксимации отрезка на дискретной графической поверхности}}&lt;br /&gt;
# {{level|Алгоритм определения видимых частей трёхмерной сцены}}&lt;br /&gt;
# {{level|Трассировка лучей - рендеринг реалистичных изображений}}&lt;br /&gt;
# {{level|Глобальное освещение - рассматривает прямое освещение и отражение от других объектов}}&lt;br /&gt;
&lt;br /&gt;
=Исследование и моделирование компьютеров=&lt;br /&gt;
==Тесты производительности компьютеров==&lt;br /&gt;
# {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
# {{level|Linpack benchmark}}&lt;br /&gt;
==Алгоритмы моделирования квантовых систем==&lt;br /&gt;
# {{level|Алгоритмы моделирования квантовых вычислений}}&lt;br /&gt;
## {{level|Однокубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Двухкубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Моделирование квантового преобразования Фурье}}&lt;br /&gt;
==Алгоритмы машинного обучения==&lt;br /&gt;
# {{level|Алгоритм k средних (k-means)}}&lt;br /&gt;
===Нейронные сети===&lt;br /&gt;
# {{level|Распознавание образов}}&lt;br /&gt;
## {{level|Распознавание текста}}&lt;br /&gt;
## {{level|Распознавание речи}}&lt;br /&gt;
## {{level|Распознавание лиц}}&lt;br /&gt;
===Алгоритмы теории игр===&lt;br /&gt;
&lt;br /&gt;
= Прикладные задачи из разных областей =&lt;br /&gt;
==Алгоритмы оптимизации==&lt;br /&gt;
# {{level|Линейное программирование}}&lt;br /&gt;
# {{level|Симплекс-метод}}&lt;br /&gt;
# {{level|Метод ветвей и границ}}&lt;br /&gt;
# {{level|Генетические алгоритмы}}&lt;br /&gt;
# {{level|Муравьиные алгоритмы}}&lt;br /&gt;
# {{level|Комбинированные алгоритмы}}&lt;br /&gt;
# {{level|Стохастическое двойственное динамическое программирование (SDDP)}}&lt;br /&gt;
==Решение систем нелинейных уравнений==&lt;br /&gt;
# {{level|Метод Ньютона для систем нелинейных уравнений}}&lt;br /&gt;
==Численные методы интегрирования==&lt;br /&gt;
# {{level|Квадратурные формулы}}&lt;br /&gt;
# {{level|Квадратурные (кубатурные) методы численного интегрирования по отрезку (многомерному кубу)}}&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод прямоугольников|Метод прямоугольников]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод трапеций|Метод трапеций]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод парабол (метод Симпсона)|Метод парабол (метод Симпсона)]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод Гаусса|Метод Гаусса]]&lt;br /&gt;
==Алгоритмы решения уравнений математической физики==&lt;br /&gt;
# {{level|Уравнение Пуассона, решение дискретным преобразованием Фурье}}&lt;br /&gt;
=Криптографические алгоритмы=&lt;br /&gt;
# {{level|Метод встречи посередине}}&lt;br /&gt;
=Другие алгоритмы=&lt;br /&gt;
&lt;br /&gt;
[[en:Algorithm classification]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Алгоритмы|*]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25324</id>
		<title>Классификация алгоритмов</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25324"/>
		<updated>2018-02-03T14:02:36Z</updated>

		<summary type="html">&lt;p&gt;Frolov: /* Задачи алгебры */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= Задачи алгебры =&lt;br /&gt;
==Матричные и векторные операции==&lt;br /&gt;
===Векторные операции===&lt;br /&gt;
# {{level|Суммирование сдваиванием}}&lt;br /&gt;
## {{level|Нахождение суммы элементов массива сдваиванием}}&lt;br /&gt;
## {{level|Нахождение частных сумм элементов массива сдваиванием}}&lt;br /&gt;
# {{level|Равномерная норма вектора, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Скалярное произведение векторов, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Последовательно-параллельный метод суммирования}}&lt;br /&gt;
=== Умножения матриц на вектор ===&lt;br /&gt;
==== Умножения неособенных матриц на вектор ====&lt;br /&gt;
# {{level|Умножение плотной неособенной матрицы на вектор (последовательный вещественный вариант)}}&lt;br /&gt;
==== Умножения матриц специального вида на вектор ====&lt;br /&gt;
# {{level|Преобразование Фурье}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для составной размерности}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Простой алгоритм Кули-Тьюки быстрого преобразования Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Быстрое преобразование Фурье для чётных степеней двойки}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для составной размерности с небольшими простыми делителями (2,3,5,7)}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для простой размерности}}&lt;br /&gt;
===Матричные операции===&lt;br /&gt;
# {{level|Умножение плотных матриц}}&lt;br /&gt;
## {{level|Перемножение плотных неособенных матриц (последовательный вещественный вариант)}}&lt;br /&gt;
## {{level|Метод Штрассена}}&lt;br /&gt;
==Разложения матриц==&lt;br /&gt;
{{level|Задача разложения матриц}}&lt;br /&gt;
# {{level|Треугольные разложения}}&lt;br /&gt;
## {{level|Метод Гаусса (нахождение LU-разложения)}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса без перестановок}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса}}&lt;br /&gt;
#### {{level|Компактная схема метода Гаусса и её модификации}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для плотной матрицы}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы и её модификации}}&lt;br /&gt;
###### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы, последовательный вариант}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Последовательно-параллельный алгоритм для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса с перестановками}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по столбцу}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по строке}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по главной диагонали}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по всей матрице}}&lt;br /&gt;
## {{level|Метод Холецкого (нахождение симметричного треугольного разложения)}}&lt;br /&gt;
### {{level|Разложение Холецкого (метод квадратного корня)}} базовый точечный вещественный вариант для плотной симметричной положительно-определённой матрицы&lt;br /&gt;
# {{level|Известные треугольные разложения для матриц специального вида}}&lt;br /&gt;
# {{level|Унитарно-треугольные разложения}}&lt;br /&gt;
## {{level|QR-разложения плотных неособенных матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Гивенса (вращений) QR-разложения квадратной матрицы (вещественный точечный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) QR-разложения квадратной матрицы, вещественный точечный вариант}}&lt;br /&gt;
### {{level|Метод ортогонализации}}&lt;br /&gt;
#### {{level|Классический метод ортогонализации}}&lt;br /&gt;
#### {{level|Метод ортогонализации с переортогонализацией}}&lt;br /&gt;
### {{level|Метод треугольного разложения матрицы Грама}}&lt;br /&gt;
## {{level|Методы QR-разложения плотных хессенберговых матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
# {{level|Подобные разложения}}&lt;br /&gt;
## {{level|Подобные разложения на унитарные и хессенберговы матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
## {{level|Симметричные разложения на унитарные и трёхдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к трёхдиагональной форме}}&lt;br /&gt;
## {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
# {{level|Неподобные унитарные разложения}}&lt;br /&gt;
## {{level|Неподобные разложения на унитарные и двухдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
## {{level|Разложения на унитарные и диагональные матрицы}}&lt;br /&gt;
### {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
#### {{level|Методы нахождения сингулярных чисел двухдиагональных матриц}}&lt;br /&gt;
##### {{level|Алгоритм dqds нахождения сингулярных чисел двухдиагональной матрицы}}&lt;br /&gt;
###### {{level|Итерация алгоритма dqds}}&lt;br /&gt;
==Решение систем линейных уравнений==&lt;br /&gt;
# {{level|Прямые методы решения СЛАУ}}&lt;br /&gt;
## {{level|Linpack benchmark}}&lt;br /&gt;
## {{level|Методы решения СЛАУ с матрицами специального вида}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с треугольными матрицами}}&lt;br /&gt;
#### {{level|Прямая подстановка (вещественный вариант)|Прямая подстановка}}&lt;br /&gt;
#### {{level|Обратная подстановка (вещественный вариант)|Обратная подстановка}}&lt;br /&gt;
#### {{level|Методы решения СЛАУ с двудиагональными матрицами}}&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант обратной подстановки}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с трёхдиагональными матрицами}}&lt;br /&gt;
#### {{level|Методы, основанные на стандартном LU-разложении матрицы}}&lt;br /&gt;
##### {{level|Прогонка}}&lt;br /&gt;
###### {{level|Прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Классическая монотонная прогонка, повторный вариант}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант решения трёхдиагональной СЛАУ с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Метод редукции}}&lt;br /&gt;
###### {{level|Полный метод редукции}}&lt;br /&gt;
###### {{level|Повторный метод редукции для новой правой части}}&lt;br /&gt;
##### {{level|Встречная прогонка}}&lt;br /&gt;
###### {{level|Встречная прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Повторная встречная прогонка, точечный вариант}}&lt;br /&gt;
##### {{level|Метод циклической редукции}}&lt;br /&gt;
###### {{level|Полный метод циклической редукции}}&lt;br /&gt;
###### {{level|Повторный метод циклической редукции для новой правой части}}&lt;br /&gt;
##### {{level|Метод окаймления}}&lt;br /&gt;
### Методы решения СЛАУ с блочно-треугольными матрицами&lt;br /&gt;
#### {{level|Блочная прямая подстановка (вещественный вариант)|Блочная прямая подстановка}}&lt;br /&gt;
#### {{level|Блочная обратная подстановка (вещественный вариант)|Блочная обратная подстановка}}&lt;br /&gt;
#### Методы решения СЛАУ с блочно-двухдиагональными матрицами&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с блочно-двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант обратной подстановки для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с блочно-трёхдиагональными матрицами}}&lt;br /&gt;
#### Методы, основанные на стандартном LU-разложении матрицы&lt;br /&gt;
##### {{level|Блочная прогонка}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант решения с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Встречная прогонка, блочный вариант}}&lt;br /&gt;
##### {{level|Блочный метод циклической редукции}}&lt;br /&gt;
##### {{level|Блочный метод окаймления}}&lt;br /&gt;
## {{level|Решения СЛАУ с матрицами специального вида, имеющими известные обратные матрицы}}&lt;br /&gt;
# Итерационные методы решения СЛАУ&lt;br /&gt;
## {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
## {{level|Стабилизированный метод бисопряженных градиентов (BiCGStab)}}&lt;br /&gt;
## {{level|Алгоритм_Качмажа}}&lt;br /&gt;
==Решения спектральных задач==&lt;br /&gt;
# {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
## {{level|QR-алгоритм}}&lt;br /&gt;
### {{level|QR-алгоритм, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|QR-алгоритм для хессенберговой матрицы, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для симметричных матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для комплексных эрмитовых матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для решения спектральной задачи у симметричных матриц}}&lt;br /&gt;
### {{level|Классический метод Якоби (вращений) для симметричных матриц с выбором по всей матрице}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением и барьерами}}&lt;br /&gt;
## {{level|Метод Ланцоша}}&lt;br /&gt;
### {{level|Алгоритм Ланцоша для точной арифметики (без переортогонализации)}}&lt;br /&gt;
# {{level|Частичная спектральная задача}}&lt;br /&gt;
## {{level|Метод бисекций}}&lt;br /&gt;
# {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для нахождения сингулярных значений неособенных матриц}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для нахождения сингулярных значений с циклическим перебором}}&lt;br /&gt;
### {{level|Метод Якоби для нахождения сингулярных значений со специальным подбором вращений}}&lt;br /&gt;
## {{level|QR-алгоритм в приложении к сингулярному разложению}}&lt;br /&gt;
==Алгебра многочленов==&lt;br /&gt;
# {{level|Схема Горнера, вещественная версия, последовательный вариант}}&lt;br /&gt;
&lt;br /&gt;
=Алгоритмы на графах=&lt;br /&gt;
# Обход графа&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}}&lt;br /&gt;
## {{level|Поиск в глубину (DFS)}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути от одной вершины (SSSP)}}&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}} (для невзвешенных графов)&lt;br /&gt;
## {{level|Алгоритм Дейкстры}}&lt;br /&gt;
## {{level|Алгоритм Беллмана-Форда}}&lt;br /&gt;
## {{level|Алгоритм Δ-шагания}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути для всех пар вершин (APSP)}}&lt;br /&gt;
## {{level|Алгоритм Джонсона}}&lt;br /&gt;
## {{level|Алгоритм Флойда-Уоршелла}}&lt;br /&gt;
# {{level|Поиск транзитивного замыкания орграфа}}&lt;br /&gt;
## {{level|Алгоритм Пурдома}}&lt;br /&gt;
# {{level|Определение диаметра графа}}&lt;br /&gt;
# {{level|Построение минимального остовного дерева (MST)}}&lt;br /&gt;
## {{level|Алгоритм Борувки}}&lt;br /&gt;
## {{level|Алгоритм Крускала}}&lt;br /&gt;
## {{level|Алгоритм Прима}}&lt;br /&gt;
## {{level|Алгоритм GHS}}&lt;br /&gt;
# {{level|Поиск изоморфных подграфов}}&lt;br /&gt;
## {{level|Алгоритм Ульмана}}&lt;br /&gt;
## {{level|Алгоритм VF2}}&lt;br /&gt;
# {{level|Связность в графах}}&lt;br /&gt;
## {{level|Алгоритм Шилоаха-Вишкина поиска компонент связности}}&lt;br /&gt;
## {{level|Система непересекающихся множеств}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм DCSC поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна-Вишкина поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска «мостов» в графе}}&lt;br /&gt;
## {{level|Определение вершинной связности графа}}&lt;br /&gt;
## {{level|Алгоритм Габова определения рёберной связности графа}}&lt;br /&gt;
# {{level|Поиск максимального потока в транспортной сети}}&lt;br /&gt;
## {{level|Алгоритм Форда-Фалкерсона}}&lt;br /&gt;
## {{level|Алгоритм проталкивания предпотока}}&lt;br /&gt;
# {{level|Поиск потока минимальной стоимости в транспортной сети}}&lt;br /&gt;
# {{level|Задача о назначениях}}&lt;br /&gt;
## {{level|Венгерский алгоритм}}&lt;br /&gt;
## {{level|Алгоритм аукциона}}&lt;br /&gt;
## {{level|Алгоритм Гопкрофта-Карпа}}&lt;br /&gt;
# {{level|Вычисление betweenness centrality|Вычисление центральности вершин}}&lt;br /&gt;
= Алгоритмы на списках и массивах =&lt;br /&gt;
==Алгоритмы поиска==&lt;br /&gt;
# {{level|Линейный поиск - находит элемент в любом списке|Линейный поиск}}, &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
# {{level|Двоичный поиск - находит элемент в отсортированном списке|Двоичный поиск}}, &amp;lt;math&amp;gt;O(\log(n))&amp;lt;/math&amp;gt;&lt;br /&gt;
==Алгоритмы сортировки==&lt;br /&gt;
# {{level|Сортировка с помощью двоичного дерева}}&lt;br /&gt;
# {{level|Сортировка пузырьком}}&lt;br /&gt;
# {{level|Сортировка слиянием (последовательный и параллельный варианты)}}&lt;br /&gt;
=Вычислительная геометрия=&lt;br /&gt;
# {{level|Поиск диаметра множества точек}}&lt;br /&gt;
# {{level|Построение выпуклой оболочки набора точек}}&lt;br /&gt;
# {{level|Триангуляция Делоне}}&lt;br /&gt;
# {{level|Диаграмма Вороного}}&lt;br /&gt;
# {{level|Принадлежность точки многоугольнику}}&lt;br /&gt;
# {{level|Пересечения выпуклых многоугольников}} &lt;br /&gt;
# {{level|Пересечение звёздных многоугольников}}&lt;br /&gt;
==Компьютерная графика==&lt;br /&gt;
# {{level|Алгоритмы построения отрезка - алгоритмы для аппроксимации отрезка на дискретной графической поверхности}}&lt;br /&gt;
# {{level|Алгоритм определения видимых частей трёхмерной сцены}}&lt;br /&gt;
# {{level|Трассировка лучей - рендеринг реалистичных изображений}}&lt;br /&gt;
# {{level|Глобальное освещение - рассматривает прямое освещение и отражение от других объектов}}&lt;br /&gt;
=Криптографические алгоритмы=&lt;br /&gt;
# {{level|Метод встречи посередине}}&lt;br /&gt;
=Алгоритмы машинного обучения=&lt;br /&gt;
# {{level|Алгоритм k средних (k-means)}}&lt;br /&gt;
==Нейронные сети==&lt;br /&gt;
# {{level|Распознавание образов}}&lt;br /&gt;
## {{level|Распознавание текста}}&lt;br /&gt;
## {{level|Распознавание речи}}&lt;br /&gt;
## {{level|Распознавание лиц}}&lt;br /&gt;
=Алгоритмы теории игр=&lt;br /&gt;
=Исследование и моделирование компьютеров=&lt;br /&gt;
==Тесты производительности компьютеров==&lt;br /&gt;
# {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
# {{level|Linpack benchmark}}&lt;br /&gt;
==Алгоритмы моделирования квантовых систем==&lt;br /&gt;
# {{level|Алгоритмы моделирования квантовых вычислений}}&lt;br /&gt;
## {{level|Однокубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Двухкубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Моделирование квантового преобразования Фурье}}&lt;br /&gt;
&lt;br /&gt;
= Прикладные задачи из разных областей =&lt;br /&gt;
==Алгоритмы оптимизации==&lt;br /&gt;
# {{level|Линейное программирование}}&lt;br /&gt;
# {{level|Симплекс-метод}}&lt;br /&gt;
# {{level|Метод ветвей и границ}}&lt;br /&gt;
# {{level|Генетические алгоритмы}}&lt;br /&gt;
# {{level|Муравьиные алгоритмы}}&lt;br /&gt;
# {{level|Комбинированные алгоритмы}}&lt;br /&gt;
# {{level|Стохастическое двойственное динамическое программирование (SDDP)}}&lt;br /&gt;
==Решение систем нелинейных уравнений==&lt;br /&gt;
# {{level|Метод Ньютона для систем нелинейных уравнений}}&lt;br /&gt;
&lt;br /&gt;
==Численные методы интегрирования==&lt;br /&gt;
# {{level|Квадратурные формулы}}&lt;br /&gt;
# {{level|Квадратурные (кубатурные) методы численного интегрирования по отрезку (многомерному кубу)}}&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод прямоугольников|Метод прямоугольников]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод трапеций|Метод трапеций]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод парабол (метод Симпсона)|Метод парабол (метод Симпсона)]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод Гаусса|Метод Гаусса]]&lt;br /&gt;
==Алгоритмы решения уравнений математической физики==&lt;br /&gt;
# {{level|Уравнение Пуассона, решение дискретным преобразованием Фурье}}&lt;br /&gt;
=Другие алгоритмы=&lt;br /&gt;
&lt;br /&gt;
[[en:Algorithm classification]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Алгоритмы|*]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25323</id>
		<title>Классификация алгоритмов</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25323"/>
		<updated>2018-02-03T13:59:25Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= Задачи алгебры =&lt;br /&gt;
==Векторные операции==&lt;br /&gt;
# {{level|Суммирование сдваиванием}}&lt;br /&gt;
## {{level|Нахождение суммы элементов массива сдваиванием}}&lt;br /&gt;
## {{level|Нахождение частных сумм элементов массива сдваиванием}}&lt;br /&gt;
# {{level|Равномерная норма вектора, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Скалярное произведение векторов, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Последовательно-параллельный метод суммирования}}&lt;br /&gt;
==Матрично-векторные операции==&lt;br /&gt;
=== Умножения неособенных матриц на вектор ===&lt;br /&gt;
# {{level|Умножение плотной неособенной матрицы на вектор (последовательный вещественный вариант)}}&lt;br /&gt;
=== Умножения матриц специального вида на вектор ===&lt;br /&gt;
# {{level|Преобразование Фурье}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для составной размерности}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Простой алгоритм Кули-Тьюки быстрого преобразования Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Быстрое преобразование Фурье для чётных степеней двойки}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для составной размерности с небольшими простыми делителями (2,3,5,7)}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для простой размерности}}&lt;br /&gt;
&lt;br /&gt;
==Матричные операции==&lt;br /&gt;
# {{level|Умножение плотных матриц}}&lt;br /&gt;
## {{level|Перемножение плотных неособенных матриц (последовательный вещественный вариант)}}&lt;br /&gt;
## {{level|Метод Штрассена}}&lt;br /&gt;
==Разложения матриц==&lt;br /&gt;
{{level|Задача разложения матриц}}&lt;br /&gt;
# {{level|Треугольные разложения}}&lt;br /&gt;
## {{level|Метод Гаусса (нахождение LU-разложения)}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса без перестановок}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса}}&lt;br /&gt;
#### {{level|Компактная схема метода Гаусса и её модификации}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для плотной матрицы}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы и её модификации}}&lt;br /&gt;
###### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы, последовательный вариант}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Последовательно-параллельный алгоритм для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса с перестановками}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по столбцу}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по строке}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по главной диагонали}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по всей матрице}}&lt;br /&gt;
## {{level|Метод Холецкого (нахождение симметричного треугольного разложения)}}&lt;br /&gt;
### {{level|Разложение Холецкого (метод квадратного корня)}} базовый точечный вещественный вариант для плотной симметричной положительно-определённой матрицы&lt;br /&gt;
# {{level|Известные треугольные разложения для матриц специального вида}}&lt;br /&gt;
# {{level|Унитарно-треугольные разложения}}&lt;br /&gt;
## {{level|QR-разложения плотных неособенных матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Гивенса (вращений) QR-разложения квадратной матрицы (вещественный точечный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) QR-разложения квадратной матрицы, вещественный точечный вариант}}&lt;br /&gt;
### {{level|Метод ортогонализации}}&lt;br /&gt;
#### {{level|Классический метод ортогонализации}}&lt;br /&gt;
#### {{level|Метод ортогонализации с переортогонализацией}}&lt;br /&gt;
### {{level|Метод треугольного разложения матрицы Грама}}&lt;br /&gt;
## {{level|Методы QR-разложения плотных хессенберговых матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
# {{level|Подобные разложения}}&lt;br /&gt;
## {{level|Подобные разложения на унитарные и хессенберговы матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
## {{level|Симметричные разложения на унитарные и трёхдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к трёхдиагональной форме}}&lt;br /&gt;
## {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
# {{level|Неподобные унитарные разложения}}&lt;br /&gt;
## {{level|Неподобные разложения на унитарные и двухдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
## {{level|Разложения на унитарные и диагональные матрицы}}&lt;br /&gt;
### {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
#### {{level|Методы нахождения сингулярных чисел двухдиагональных матриц}}&lt;br /&gt;
##### {{level|Алгоритм dqds нахождения сингулярных чисел двухдиагональной матрицы}}&lt;br /&gt;
###### {{level|Итерация алгоритма dqds}}&lt;br /&gt;
==Решение систем линейных уравнений==&lt;br /&gt;
# {{level|Прямые методы решения СЛАУ}}&lt;br /&gt;
## {{level|Linpack benchmark}}&lt;br /&gt;
## {{level|Методы решения СЛАУ с матрицами специального вида}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с треугольными матрицами}}&lt;br /&gt;
#### {{level|Прямая подстановка (вещественный вариант)|Прямая подстановка}}&lt;br /&gt;
#### {{level|Обратная подстановка (вещественный вариант)|Обратная подстановка}}&lt;br /&gt;
#### {{level|Методы решения СЛАУ с двудиагональными матрицами}}&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант обратной подстановки}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с трёхдиагональными матрицами}}&lt;br /&gt;
#### {{level|Методы, основанные на стандартном LU-разложении матрицы}}&lt;br /&gt;
##### {{level|Прогонка}}&lt;br /&gt;
###### {{level|Прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Классическая монотонная прогонка, повторный вариант}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант решения трёхдиагональной СЛАУ с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Метод редукции}}&lt;br /&gt;
###### {{level|Полный метод редукции}}&lt;br /&gt;
###### {{level|Повторный метод редукции для новой правой части}}&lt;br /&gt;
##### {{level|Встречная прогонка}}&lt;br /&gt;
###### {{level|Встречная прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Повторная встречная прогонка, точечный вариант}}&lt;br /&gt;
##### {{level|Метод циклической редукции}}&lt;br /&gt;
###### {{level|Полный метод циклической редукции}}&lt;br /&gt;
###### {{level|Повторный метод циклической редукции для новой правой части}}&lt;br /&gt;
##### {{level|Метод окаймления}}&lt;br /&gt;
### Методы решения СЛАУ с блочно-треугольными матрицами&lt;br /&gt;
#### {{level|Блочная прямая подстановка (вещественный вариант)|Блочная прямая подстановка}}&lt;br /&gt;
#### {{level|Блочная обратная подстановка (вещественный вариант)|Блочная обратная подстановка}}&lt;br /&gt;
#### Методы решения СЛАУ с блочно-двухдиагональными матрицами&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с блочно-двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант обратной подстановки для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с блочно-трёхдиагональными матрицами}}&lt;br /&gt;
#### Методы, основанные на стандартном LU-разложении матрицы&lt;br /&gt;
##### {{level|Блочная прогонка}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант решения с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Встречная прогонка, блочный вариант}}&lt;br /&gt;
##### {{level|Блочный метод циклической редукции}}&lt;br /&gt;
##### {{level|Блочный метод окаймления}}&lt;br /&gt;
## {{level|Решения СЛАУ с матрицами специального вида, имеющими известные обратные матрицы}}&lt;br /&gt;
# Итерационные методы решения СЛАУ&lt;br /&gt;
## {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
## {{level|Стабилизированный метод бисопряженных градиентов (BiCGStab)}}&lt;br /&gt;
## {{level|Алгоритм_Качмажа}}&lt;br /&gt;
&lt;br /&gt;
==Решения спектральных задач==&lt;br /&gt;
# {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
## {{level|QR-алгоритм}}&lt;br /&gt;
### {{level|QR-алгоритм, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|QR-алгоритм для хессенберговой матрицы, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для симметричных матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для комплексных эрмитовых матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для решения спектральной задачи у симметричных матриц}}&lt;br /&gt;
### {{level|Классический метод Якоби (вращений) для симметричных матриц с выбором по всей матрице}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением и барьерами}}&lt;br /&gt;
## {{level|Метод Ланцоша}}&lt;br /&gt;
### {{level|Алгоритм Ланцоша для точной арифметики (без переортогонализации)}}&lt;br /&gt;
# {{level|Частичная спектральная задача}}&lt;br /&gt;
## {{level|Метод бисекций}}&lt;br /&gt;
# {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для нахождения сингулярных значений неособенных матриц}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для нахождения сингулярных значений с циклическим перебором}}&lt;br /&gt;
### {{level|Метод Якоби для нахождения сингулярных значений со специальным подбором вращений}}&lt;br /&gt;
## {{level|QR-алгоритм в приложении к сингулярному разложению}}&lt;br /&gt;
==Алгебра многочленов==&lt;br /&gt;
# {{level|Схема Горнера, вещественная версия, последовательный вариант}}&lt;br /&gt;
&lt;br /&gt;
=Алгоритмы на графах=&lt;br /&gt;
# Обход графа&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}}&lt;br /&gt;
## {{level|Поиск в глубину (DFS)}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути от одной вершины (SSSP)}}&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}} (для невзвешенных графов)&lt;br /&gt;
## {{level|Алгоритм Дейкстры}}&lt;br /&gt;
## {{level|Алгоритм Беллмана-Форда}}&lt;br /&gt;
## {{level|Алгоритм Δ-шагания}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути для всех пар вершин (APSP)}}&lt;br /&gt;
## {{level|Алгоритм Джонсона}}&lt;br /&gt;
## {{level|Алгоритм Флойда-Уоршелла}}&lt;br /&gt;
# {{level|Поиск транзитивного замыкания орграфа}}&lt;br /&gt;
## {{level|Алгоритм Пурдома}}&lt;br /&gt;
# {{level|Определение диаметра графа}}&lt;br /&gt;
# {{level|Построение минимального остовного дерева (MST)}}&lt;br /&gt;
## {{level|Алгоритм Борувки}}&lt;br /&gt;
## {{level|Алгоритм Крускала}}&lt;br /&gt;
## {{level|Алгоритм Прима}}&lt;br /&gt;
## {{level|Алгоритм GHS}}&lt;br /&gt;
# {{level|Поиск изоморфных подграфов}}&lt;br /&gt;
## {{level|Алгоритм Ульмана}}&lt;br /&gt;
## {{level|Алгоритм VF2}}&lt;br /&gt;
# {{level|Связность в графах}}&lt;br /&gt;
## {{level|Алгоритм Шилоаха-Вишкина поиска компонент связности}}&lt;br /&gt;
## {{level|Система непересекающихся множеств}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм DCSC поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна-Вишкина поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска «мостов» в графе}}&lt;br /&gt;
## {{level|Определение вершинной связности графа}}&lt;br /&gt;
## {{level|Алгоритм Габова определения рёберной связности графа}}&lt;br /&gt;
# {{level|Поиск максимального потока в транспортной сети}}&lt;br /&gt;
## {{level|Алгоритм Форда-Фалкерсона}}&lt;br /&gt;
## {{level|Алгоритм проталкивания предпотока}}&lt;br /&gt;
# {{level|Поиск потока минимальной стоимости в транспортной сети}}&lt;br /&gt;
# {{level|Задача о назначениях}}&lt;br /&gt;
## {{level|Венгерский алгоритм}}&lt;br /&gt;
## {{level|Алгоритм аукциона}}&lt;br /&gt;
## {{level|Алгоритм Гопкрофта-Карпа}}&lt;br /&gt;
# {{level|Вычисление betweenness centrality|Вычисление центральности вершин}}&lt;br /&gt;
= Алгоритмы на списках и массивах =&lt;br /&gt;
==Алгоритмы поиска==&lt;br /&gt;
# {{level|Линейный поиск - находит элемент в любом списке|Линейный поиск}}, &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
# {{level|Двоичный поиск - находит элемент в отсортированном списке|Двоичный поиск}}, &amp;lt;math&amp;gt;O(\log(n))&amp;lt;/math&amp;gt;&lt;br /&gt;
==Алгоритмы сортировки==&lt;br /&gt;
# {{level|Сортировка с помощью двоичного дерева}}&lt;br /&gt;
# {{level|Сортировка пузырьком}}&lt;br /&gt;
# {{level|Сортировка слиянием (последовательный и параллельный варианты)}}&lt;br /&gt;
=Вычислительная геометрия=&lt;br /&gt;
# {{level|Поиск диаметра множества точек}}&lt;br /&gt;
# {{level|Построение выпуклой оболочки набора точек}}&lt;br /&gt;
# {{level|Триангуляция Делоне}}&lt;br /&gt;
# {{level|Диаграмма Вороного}}&lt;br /&gt;
# {{level|Принадлежность точки многоугольнику}}&lt;br /&gt;
# {{level|Пересечения выпуклых многоугольников}} &lt;br /&gt;
# {{level|Пересечение звёздных многоугольников}}&lt;br /&gt;
==Компьютерная графика==&lt;br /&gt;
# {{level|Алгоритмы построения отрезка - алгоритмы для аппроксимации отрезка на дискретной графической поверхности}}&lt;br /&gt;
# {{level|Алгоритм определения видимых частей трёхмерной сцены}}&lt;br /&gt;
# {{level|Трассировка лучей - рендеринг реалистичных изображений}}&lt;br /&gt;
# {{level|Глобальное освещение - рассматривает прямое освещение и отражение от других объектов}}&lt;br /&gt;
=Криптографические алгоритмы=&lt;br /&gt;
# {{level|Метод встречи посередине}}&lt;br /&gt;
=Алгоритмы машинного обучения=&lt;br /&gt;
# {{level|Алгоритм k средних (k-means)}}&lt;br /&gt;
==Нейронные сети==&lt;br /&gt;
# {{level|Распознавание образов}}&lt;br /&gt;
## {{level|Распознавание текста}}&lt;br /&gt;
## {{level|Распознавание речи}}&lt;br /&gt;
## {{level|Распознавание лиц}}&lt;br /&gt;
=Алгоритмы теории игр=&lt;br /&gt;
=Исследование и моделирование компьютеров=&lt;br /&gt;
==Тесты производительности компьютеров==&lt;br /&gt;
# {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
# {{level|Linpack benchmark}}&lt;br /&gt;
==Алгоритмы моделирования квантовых систем==&lt;br /&gt;
# {{level|Алгоритмы моделирования квантовых вычислений}}&lt;br /&gt;
## {{level|Однокубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Двухкубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Моделирование квантового преобразования Фурье}}&lt;br /&gt;
&lt;br /&gt;
= Прикладные задачи из разных областей =&lt;br /&gt;
==Алгоритмы оптимизации==&lt;br /&gt;
# {{level|Линейное программирование}}&lt;br /&gt;
# {{level|Симплекс-метод}}&lt;br /&gt;
# {{level|Метод ветвей и границ}}&lt;br /&gt;
# {{level|Генетические алгоритмы}}&lt;br /&gt;
# {{level|Муравьиные алгоритмы}}&lt;br /&gt;
# {{level|Комбинированные алгоритмы}}&lt;br /&gt;
# {{level|Стохастическое двойственное динамическое программирование (SDDP)}}&lt;br /&gt;
==Решение систем нелинейных уравнений==&lt;br /&gt;
# {{level|Метод Ньютона для систем нелинейных уравнений}}&lt;br /&gt;
&lt;br /&gt;
==Численные методы интегрирования==&lt;br /&gt;
# {{level|Квадратурные формулы}}&lt;br /&gt;
# {{level|Квадратурные (кубатурные) методы численного интегрирования по отрезку (многомерному кубу)}}&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод прямоугольников|Метод прямоугольников]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод трапеций|Метод трапеций]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод парабол (метод Симпсона)|Метод парабол (метод Симпсона)]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод Гаусса|Метод Гаусса]]&lt;br /&gt;
==Алгоритмы решения уравнений математической физики==&lt;br /&gt;
# {{level|Уравнение Пуассона, решение дискретным преобразованием Фурье}}&lt;br /&gt;
=Другие алгоритмы=&lt;br /&gt;
&lt;br /&gt;
[[en:Algorithm classification]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Алгоритмы|*]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25322</id>
		<title>Классификация алгоритмов</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25322"/>
		<updated>2018-02-03T13:54:41Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= Задачи алгебры =&lt;br /&gt;
==Векторные операции==&lt;br /&gt;
# {{level|Суммирование сдваиванием}}&lt;br /&gt;
## {{level|Нахождение суммы элементов массива сдваиванием}}&lt;br /&gt;
## {{level|Нахождение частных сумм элементов массива сдваиванием}}&lt;br /&gt;
# {{level|Равномерная норма вектора, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Скалярное произведение векторов, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Последовательно-параллельный метод суммирования}}&lt;br /&gt;
==Матрично-векторные операции==&lt;br /&gt;
=== Умножения неособенных матриц на вектор ===&lt;br /&gt;
# {{level|Умножение плотной неособенной матрицы на вектор (последовательный вещественный вариант)}}&lt;br /&gt;
=== Умножения матриц специального вида на вектор ===&lt;br /&gt;
# {{level|Преобразование Фурье}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для составной размерности}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Простой алгоритм Кули-Тьюки быстрого преобразования Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Быстрое преобразование Фурье для чётных степеней двойки}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для составной размерности с небольшими простыми делителями (2,3,5,7)}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для простой размерности}}&lt;br /&gt;
&lt;br /&gt;
==Матричные операции==&lt;br /&gt;
# {{level|Умножение плотных матриц}}&lt;br /&gt;
## {{level|Перемножение плотных неособенных матриц (последовательный вещественный вариант)}}&lt;br /&gt;
## {{level|Метод Штрассена}}&lt;br /&gt;
==Разложения матриц==&lt;br /&gt;
{{level|Задача разложения матриц}}&lt;br /&gt;
# {{level|Треугольные разложения}}&lt;br /&gt;
## {{level|Метод Гаусса (нахождение LU-разложения)}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса без перестановок}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса}}&lt;br /&gt;
#### {{level|Компактная схема метода Гаусса и её модификации}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для плотной матрицы}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы и её модификации}}&lt;br /&gt;
###### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы, последовательный вариант}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Последовательно-параллельный алгоритм для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса с перестановками}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по столбцу}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по строке}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по главной диагонали}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по всей матрице}}&lt;br /&gt;
## {{level|Метод Холецкого (нахождение симметричного треугольного разложения)}}&lt;br /&gt;
### {{level|Разложение Холецкого (метод квадратного корня)}} базовый точечный вещественный вариант для плотной симметричной положительно-определённой матрицы&lt;br /&gt;
# {{level|Известные треугольные разложения для матриц специального вида}}&lt;br /&gt;
# {{level|Унитарно-треугольные разложения}}&lt;br /&gt;
## {{level|QR-разложения плотных неособенных матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Гивенса (вращений) QR-разложения квадратной матрицы (вещественный точечный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) QR-разложения квадратной матрицы, вещественный точечный вариант}}&lt;br /&gt;
### {{level|Метод ортогонализации}}&lt;br /&gt;
#### {{level|Классический метод ортогонализации}}&lt;br /&gt;
#### {{level|Метод ортогонализации с переортогонализацией}}&lt;br /&gt;
### {{level|Метод треугольного разложения матрицы Грама}}&lt;br /&gt;
## {{level|Методы QR-разложения плотных хессенберговых матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
# {{level|Подобные разложения}}&lt;br /&gt;
## {{level|Подобные разложения на унитарные и хессенберговы матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
## {{level|Симметричные разложения на унитарные и трёхдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к трёхдиагональной форме}}&lt;br /&gt;
## {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
# {{level|Неподобные унитарные разложения}}&lt;br /&gt;
## {{level|Неподобные разложения на унитарные и двухдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
## {{level|Разложения на унитарные и диагональные матрицы}}&lt;br /&gt;
### {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
#### {{level|Методы нахождения сингулярных чисел двухдиагональных матриц}}&lt;br /&gt;
##### {{level|Алгоритм dqds нахождения сингулярных чисел двухдиагональной матрицы}}&lt;br /&gt;
###### {{level|Итерация алгоритма dqds}}&lt;br /&gt;
==Решение систем линейных уравнений==&lt;br /&gt;
# {{level|Прямые методы решения СЛАУ}}&lt;br /&gt;
## {{level|Linpack benchmark}}&lt;br /&gt;
## {{level|Методы решения СЛАУ с матрицами специального вида}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с треугольными матрицами}}&lt;br /&gt;
#### {{level|Прямая подстановка (вещественный вариант)|Прямая подстановка}}&lt;br /&gt;
#### {{level|Обратная подстановка (вещественный вариант)|Обратная подстановка}}&lt;br /&gt;
#### {{level|Методы решения СЛАУ с двудиагональными матрицами}}&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант обратной подстановки}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с трёхдиагональными матрицами}}&lt;br /&gt;
#### {{level|Методы, основанные на стандартном LU-разложении матрицы}}&lt;br /&gt;
##### {{level|Прогонка}}&lt;br /&gt;
###### {{level|Прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Классическая монотонная прогонка, повторный вариант}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант решения трёхдиагональной СЛАУ с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Метод редукции}}&lt;br /&gt;
###### {{level|Полный метод редукции}}&lt;br /&gt;
###### {{level|Повторный метод редукции для новой правой части}}&lt;br /&gt;
##### {{level|Встречная прогонка}}&lt;br /&gt;
###### {{level|Встречная прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Повторная встречная прогонка, точечный вариант}}&lt;br /&gt;
##### {{level|Метод циклической редукции}}&lt;br /&gt;
###### {{level|Полный метод циклической редукции}}&lt;br /&gt;
###### {{level|Повторный метод циклической редукции для новой правой части}}&lt;br /&gt;
##### {{level|Метод окаймления}}&lt;br /&gt;
### Методы решения СЛАУ с блочно-треугольными матрицами&lt;br /&gt;
#### {{level|Блочная прямая подстановка (вещественный вариант)|Блочная прямая подстановка}}&lt;br /&gt;
#### {{level|Блочная обратная подстановка (вещественный вариант)|Блочная обратная подстановка}}&lt;br /&gt;
#### Методы решения СЛАУ с блочно-двухдиагональными матрицами&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с блочно-двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант обратной подстановки для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с блочно-трёхдиагональными матрицами}}&lt;br /&gt;
#### Методы, основанные на стандартном LU-разложении матрицы&lt;br /&gt;
##### {{level|Блочная прогонка}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант решения с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Встречная прогонка, блочный вариант}}&lt;br /&gt;
##### {{level|Блочный метод циклической редукции}}&lt;br /&gt;
##### {{level|Блочный метод окаймления}}&lt;br /&gt;
## {{level|Решения СЛАУ с матрицами специального вида, имеющими известные обратные матрицы}}&lt;br /&gt;
# Итерационные методы решения СЛАУ&lt;br /&gt;
## {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
## {{level|Стабилизированный метод бисопряженных градиентов (BiCGStab)}}&lt;br /&gt;
## {{level|Алгоритм_Качмажа}}&lt;br /&gt;
&lt;br /&gt;
==Решения спектральных задач==&lt;br /&gt;
# {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
## {{level|QR-алгоритм}}&lt;br /&gt;
### {{level|QR-алгоритм, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|QR-алгоритм для хессенберговой матрицы, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для симметричных матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для комплексных эрмитовых матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для решения спектральной задачи у симметричных матриц}}&lt;br /&gt;
### {{level|Классический метод Якоби (вращений) для симметричных матриц с выбором по всей матрице}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением и барьерами}}&lt;br /&gt;
## {{level|Метод Ланцоша}}&lt;br /&gt;
### {{level|Алгоритм Ланцоша для точной арифметики (без переортогонализации)}}&lt;br /&gt;
# {{level|Частичная спектральная задача}}&lt;br /&gt;
## {{level|Метод бисекций}}&lt;br /&gt;
# {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для нахождения сингулярных значений неособенных матриц}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для нахождения сингулярных значений с циклическим перебором}}&lt;br /&gt;
### {{level|Метод Якоби для нахождения сингулярных значений со специальным подбором вращений}}&lt;br /&gt;
## {{level|QR-алгоритм в приложении к сингулярному разложению}}&lt;br /&gt;
==Алгебра многочленов==&lt;br /&gt;
# {{level|Схема Горнера, вещественная версия, последовательный вариант}}&lt;br /&gt;
=Решение систем нелинейных уравнений=&lt;br /&gt;
# {{level|Метод Ньютона для систем нелинейных уравнений}}&lt;br /&gt;
=Тесты производительности компьютеров=&lt;br /&gt;
# {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
# {{level|Linpack benchmark}}&lt;br /&gt;
&lt;br /&gt;
=Численные методы интегрирования=&lt;br /&gt;
# {{level|Квадратурные формулы}}&lt;br /&gt;
# {{level|Квадратурные (кубатурные) методы численного интегрирования по отрезку (многомерному кубу)}}&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод прямоугольников|Метод прямоугольников]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод трапеций|Метод трапеций]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод парабол (метод Симпсона)|Метод парабол (метод Симпсона)]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод Гаусса|Метод Гаусса]]&lt;br /&gt;
=Алгоритмы на графах=&lt;br /&gt;
# Обход графа&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}}&lt;br /&gt;
## {{level|Поиск в глубину (DFS)}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути от одной вершины (SSSP)}}&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}} (для невзвешенных графов)&lt;br /&gt;
## {{level|Алгоритм Дейкстры}}&lt;br /&gt;
## {{level|Алгоритм Беллмана-Форда}}&lt;br /&gt;
## {{level|Алгоритм Δ-шагания}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути для всех пар вершин (APSP)}}&lt;br /&gt;
## {{level|Алгоритм Джонсона}}&lt;br /&gt;
## {{level|Алгоритм Флойда-Уоршелла}}&lt;br /&gt;
# {{level|Поиск транзитивного замыкания орграфа}}&lt;br /&gt;
## {{level|Алгоритм Пурдома}}&lt;br /&gt;
# {{level|Определение диаметра графа}}&lt;br /&gt;
# {{level|Построение минимального остовного дерева (MST)}}&lt;br /&gt;
## {{level|Алгоритм Борувки}}&lt;br /&gt;
## {{level|Алгоритм Крускала}}&lt;br /&gt;
## {{level|Алгоритм Прима}}&lt;br /&gt;
## {{level|Алгоритм GHS}}&lt;br /&gt;
# {{level|Поиск изоморфных подграфов}}&lt;br /&gt;
## {{level|Алгоритм Ульмана}}&lt;br /&gt;
## {{level|Алгоритм VF2}}&lt;br /&gt;
# {{level|Связность в графах}}&lt;br /&gt;
## {{level|Алгоритм Шилоаха-Вишкина поиска компонент связности}}&lt;br /&gt;
## {{level|Система непересекающихся множеств}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм DCSC поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна-Вишкина поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска «мостов» в графе}}&lt;br /&gt;
## {{level|Определение вершинной связности графа}}&lt;br /&gt;
## {{level|Алгоритм Габова определения рёберной связности графа}}&lt;br /&gt;
# {{level|Поиск максимального потока в транспортной сети}}&lt;br /&gt;
## {{level|Алгоритм Форда-Фалкерсона}}&lt;br /&gt;
## {{level|Алгоритм проталкивания предпотока}}&lt;br /&gt;
# {{level|Поиск потока минимальной стоимости в транспортной сети}}&lt;br /&gt;
# {{level|Задача о назначениях}}&lt;br /&gt;
## {{level|Венгерский алгоритм}}&lt;br /&gt;
## {{level|Алгоритм аукциона}}&lt;br /&gt;
## {{level|Алгоритм Гопкрофта-Карпа}}&lt;br /&gt;
# {{level|Вычисление betweenness centrality|Вычисление центральности вершин}}&lt;br /&gt;
= Алгоритмы на списках и массивах =&lt;br /&gt;
==Алгоритмы поиска==&lt;br /&gt;
# {{level|Линейный поиск - находит элемент в любом списке|Линейный поиск}}, &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
# {{level|Двоичный поиск - находит элемент в отсортированном списке|Двоичный поиск}}, &amp;lt;math&amp;gt;O(\log(n))&amp;lt;/math&amp;gt;&lt;br /&gt;
==Алгоритмы сортировки==&lt;br /&gt;
# {{level|Сортировка с помощью двоичного дерева}}&lt;br /&gt;
# {{level|Сортировка пузырьком}}&lt;br /&gt;
# {{level|Сортировка слиянием (последовательный и параллельный варианты)}}&lt;br /&gt;
=Вычислительная геометрия=&lt;br /&gt;
# {{level|Поиск диаметра множества точек}}&lt;br /&gt;
# {{level|Построение выпуклой оболочки набора точек}}&lt;br /&gt;
# {{level|Триангуляция Делоне}}&lt;br /&gt;
# {{level|Диаграмма Вороного}}&lt;br /&gt;
# {{level|Принадлежность точки многоугольнику}}&lt;br /&gt;
# {{level|Пересечения выпуклых многоугольников}} &lt;br /&gt;
# {{level|Пересечение звёздных многоугольников}}&lt;br /&gt;
==Компьютерная графика==&lt;br /&gt;
# {{level|Алгоритмы построения отрезка - алгоритмы для аппроксимации отрезка на дискретной графической поверхности}}&lt;br /&gt;
# {{level|Алгоритм определения видимых частей трёхмерной сцены}}&lt;br /&gt;
# {{level|Трассировка лучей - рендеринг реалистичных изображений}}&lt;br /&gt;
# {{level|Глобальное освещение - рассматривает прямое освещение и отражение от других объектов}}&lt;br /&gt;
=Криптографические алгоритмы=&lt;br /&gt;
# {{level|Метод встречи посередине}}&lt;br /&gt;
&lt;br /&gt;
=Алгоритмы оптимизации=&lt;br /&gt;
# {{level|Линейное программирование}}&lt;br /&gt;
# {{level|Симплекс-метод}}&lt;br /&gt;
# {{level|Метод ветвей и границ}}&lt;br /&gt;
# {{level|Генетические алгоритмы}}&lt;br /&gt;
# {{level|Муравьиные алгоритмы}}&lt;br /&gt;
# {{level|Комбинированные алгоритмы}}&lt;br /&gt;
# {{level|Стохастическое двойственное динамическое программирование (SDDP)}}&lt;br /&gt;
=Алгоритмы машинного обучения=&lt;br /&gt;
# {{level|Алгоритм k средних (k-means)}}&lt;br /&gt;
==Нейронные сети==&lt;br /&gt;
# {{level|Распознавание образов}}&lt;br /&gt;
## {{level|Распознавание текста}}&lt;br /&gt;
## {{level|Распознавание речи}}&lt;br /&gt;
## {{level|Распознавание лиц}}&lt;br /&gt;
=Алгоритмы теории игр=&lt;br /&gt;
=Алгоритмы моделирования квантовых систем=&lt;br /&gt;
# {{level|Алгоритмы моделирования квантовых вычислений}}&lt;br /&gt;
## {{level|Однокубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Двухкубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Моделирование квантового преобразования Фурье}}&lt;br /&gt;
=Алгоритмы решения уравнений математической физики=&lt;br /&gt;
# {{level|Уравнение Пуассона, решение дискретным преобразованием Фурье}}&lt;br /&gt;
=Другие алгоритмы=&lt;br /&gt;
&lt;br /&gt;
[[en:Algorithm classification]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Алгоритмы|*]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25321</id>
		<title>Классификация алгоритмов</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25321"/>
		<updated>2018-02-02T10:27:10Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
=Векторные операции=&lt;br /&gt;
# {{level|Суммирование сдваиванием}}&lt;br /&gt;
## {{level|Нахождение суммы элементов массива сдваиванием}}&lt;br /&gt;
## {{level|Нахождение частных сумм элементов массива сдваиванием}}&lt;br /&gt;
# {{level|Равномерная норма вектора, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Скалярное произведение векторов, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Последовательно-параллельный метод суммирования}}&lt;br /&gt;
=Матрично-векторные операции=&lt;br /&gt;
== Умножения неособенных матриц на вектор ==&lt;br /&gt;
# {{level|Умножение плотной неособенной матрицы на вектор (последовательный вещественный вариант)}}&lt;br /&gt;
== Умножения матриц специального вида на вектор ==&lt;br /&gt;
# {{level|Преобразование Фурье}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для составной размерности}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Простой алгоритм Кули-Тьюки быстрого преобразования Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Быстрое преобразование Фурье для чётных степеней двойки}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для составной размерности с небольшими простыми делителями (2,3,5,7)}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для простой размерности}}&lt;br /&gt;
&lt;br /&gt;
=Матричные операции=&lt;br /&gt;
# {{level|Умножение плотных матриц}}&lt;br /&gt;
## {{level|Перемножение плотных неособенных матриц (последовательный вещественный вариант)}}&lt;br /&gt;
## {{level|Метод Штрассена}}&lt;br /&gt;
=Разложения матриц=&lt;br /&gt;
{{level|Задача разложения матриц}}&lt;br /&gt;
# {{level|Треугольные разложения}}&lt;br /&gt;
## {{level|Метод Гаусса (нахождение LU-разложения)}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса без перестановок}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса}}&lt;br /&gt;
#### {{level|Компактная схема метода Гаусса и её модификации}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для плотной матрицы}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы и её модификации}}&lt;br /&gt;
###### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы, последовательный вариант}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Последовательно-параллельный алгоритм для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса с перестановками}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по столбцу}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по строке}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по главной диагонали}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по всей матрице}}&lt;br /&gt;
## {{level|Метод Холецкого (нахождение симметричного треугольного разложения)}}&lt;br /&gt;
### {{level|Разложение Холецкого (метод квадратного корня)}} базовый точечный вещественный вариант для плотной симметричной положительно-определённой матрицы&lt;br /&gt;
# {{level|Известные треугольные разложения для матриц специального вида}}&lt;br /&gt;
# {{level|Унитарно-треугольные разложения}}&lt;br /&gt;
## {{level|QR-разложения плотных неособенных матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Гивенса (вращений) QR-разложения квадратной матрицы (вещественный точечный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) QR-разложения квадратной матрицы, вещественный точечный вариант}}&lt;br /&gt;
### {{level|Метод ортогонализации}}&lt;br /&gt;
#### {{level|Классический метод ортогонализации}}&lt;br /&gt;
#### {{level|Метод ортогонализации с переортогонализацией}}&lt;br /&gt;
### {{level|Метод треугольного разложения матрицы Грама}}&lt;br /&gt;
## {{level|Методы QR-разложения плотных хессенберговых матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
# {{level|Подобные разложения}}&lt;br /&gt;
## {{level|Подобные разложения на унитарные и хессенберговы матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
## {{level|Симметричные разложения на унитарные и трёхдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к трёхдиагональной форме}}&lt;br /&gt;
## {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
# {{level|Неподобные унитарные разложения}}&lt;br /&gt;
## {{level|Неподобные разложения на унитарные и двухдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
## {{level|Разложения на унитарные и диагональные матрицы}}&lt;br /&gt;
### {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
#### {{level|Методы нахождения сингулярных чисел двухдиагональных матриц}}&lt;br /&gt;
##### {{level|Алгоритм dqds нахождения сингулярных чисел двухдиагональной матрицы}}&lt;br /&gt;
###### {{level|Итерация алгоритма dqds}}&lt;br /&gt;
=Решение систем линейных уравнений=&lt;br /&gt;
# {{level|Прямые методы решения СЛАУ}}&lt;br /&gt;
## {{level|Linpack benchmark}}&lt;br /&gt;
## {{level|Методы решения СЛАУ с матрицами специального вида}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с треугольными матрицами}}&lt;br /&gt;
#### {{level|Прямая подстановка (вещественный вариант)|Прямая подстановка}}&lt;br /&gt;
#### {{level|Обратная подстановка (вещественный вариант)|Обратная подстановка}}&lt;br /&gt;
#### {{level|Методы решения СЛАУ с двудиагональными матрицами}}&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант обратной подстановки}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с трёхдиагональными матрицами}}&lt;br /&gt;
#### {{level|Методы, основанные на стандартном LU-разложении матрицы}}&lt;br /&gt;
##### {{level|Прогонка}}&lt;br /&gt;
###### {{level|Прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Классическая монотонная прогонка, повторный вариант}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант решения трёхдиагональной СЛАУ с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Метод редукции}}&lt;br /&gt;
###### {{level|Полный метод редукции}}&lt;br /&gt;
###### {{level|Повторный метод редукции для новой правой части}}&lt;br /&gt;
##### {{level|Встречная прогонка}}&lt;br /&gt;
###### {{level|Встречная прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Повторная встречная прогонка, точечный вариант}}&lt;br /&gt;
##### {{level|Метод циклической редукции}}&lt;br /&gt;
###### {{level|Полный метод циклической редукции}}&lt;br /&gt;
###### {{level|Повторный метод циклической редукции для новой правой части}}&lt;br /&gt;
##### {{level|Метод окаймления}}&lt;br /&gt;
### Методы решения СЛАУ с блочно-треугольными матрицами&lt;br /&gt;
#### {{level|Блочная прямая подстановка (вещественный вариант)|Блочная прямая подстановка}}&lt;br /&gt;
#### {{level|Блочная обратная подстановка (вещественный вариант)|Блочная обратная подстановка}}&lt;br /&gt;
#### Методы решения СЛАУ с блочно-двухдиагональными матрицами&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с блочно-двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант обратной подстановки для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с блочно-трёхдиагональными матрицами}}&lt;br /&gt;
#### Методы, основанные на стандартном LU-разложении матрицы&lt;br /&gt;
##### {{level|Блочная прогонка}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант решения с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Встречная прогонка, блочный вариант}}&lt;br /&gt;
##### {{level|Блочный метод циклической редукции}}&lt;br /&gt;
##### {{level|Блочный метод окаймления}}&lt;br /&gt;
## {{level|Решения СЛАУ с матрицами специального вида, имеющими известные обратные матрицы}}&lt;br /&gt;
# Итерационные методы решения СЛАУ&lt;br /&gt;
## {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
## {{level|Стабилизированный метод бисопряженных градиентов (BiCGStab)}}&lt;br /&gt;
## {{level|Алгоритм_Качмажа}}&lt;br /&gt;
=Решение систем нелинейных уравнений=&lt;br /&gt;
# {{level|Метод Ньютона для систем нелинейных уравнений}}&lt;br /&gt;
=Решения спектральных задач=&lt;br /&gt;
# {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
## {{level|QR-алгоритм}}&lt;br /&gt;
### {{level|QR-алгоритм, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|QR-алгоритм для хессенберговой матрицы, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для симметричных матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для комплексных эрмитовых матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для решения спектральной задачи у симметричных матриц}}&lt;br /&gt;
### {{level|Классический метод Якоби (вращений) для симметричных матриц с выбором по всей матрице}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением и барьерами}}&lt;br /&gt;
## {{level|Метод Ланцоша}}&lt;br /&gt;
### {{level|Алгоритм Ланцоша для точной арифметики (без переортогонализации)}}&lt;br /&gt;
# {{level|Частичная спектральная задача}}&lt;br /&gt;
## {{level|Метод бисекций}}&lt;br /&gt;
# {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для нахождения сингулярных значений неособенных матриц}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для нахождения сингулярных значений с циклическим перебором}}&lt;br /&gt;
### {{level|Метод Якоби для нахождения сингулярных значений со специальным подбором вращений}}&lt;br /&gt;
## {{level|QR-алгоритм в приложении к сингулярному разложению}}&lt;br /&gt;
=Тесты производительности компьютеров=&lt;br /&gt;
# {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
# {{level|Linpack benchmark}}&lt;br /&gt;
&lt;br /&gt;
=Алгебра многочленов=&lt;br /&gt;
# {{level|Схема Горнера, вещественная версия, последовательный вариант}}&lt;br /&gt;
=Численные методы интегрирования=&lt;br /&gt;
# {{level|Квадратурные формулы}}&lt;br /&gt;
# {{level|Квадратурные (кубатурные) методы численного интегрирования по отрезку (многомерному кубу)}}&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод прямоугольников|Метод прямоугольников]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод трапеций|Метод трапеций]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод парабол (метод Симпсона)|Метод парабол (метод Симпсона)]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод Гаусса|Метод Гаусса]]&lt;br /&gt;
=Алгоритмы на графах=&lt;br /&gt;
# Обход графа&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}}&lt;br /&gt;
## {{level|Поиск в глубину (DFS)}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути от одной вершины (SSSP)}}&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}} (для невзвешенных графов)&lt;br /&gt;
## {{level|Алгоритм Дейкстры}}&lt;br /&gt;
## {{level|Алгоритм Беллмана-Форда}}&lt;br /&gt;
## {{level|Алгоритм Δ-шагания}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути для всех пар вершин (APSP)}}&lt;br /&gt;
## {{level|Алгоритм Джонсона}}&lt;br /&gt;
## {{level|Алгоритм Флойда-Уоршелла}}&lt;br /&gt;
# {{level|Поиск транзитивного замыкания орграфа}}&lt;br /&gt;
## {{level|Алгоритм Пурдома}}&lt;br /&gt;
# {{level|Определение диаметра графа}}&lt;br /&gt;
# {{level|Построение минимального остовного дерева (MST)}}&lt;br /&gt;
## {{level|Алгоритм Борувки}}&lt;br /&gt;
## {{level|Алгоритм Крускала}}&lt;br /&gt;
## {{level|Алгоритм Прима}}&lt;br /&gt;
## {{level|Алгоритм GHS}}&lt;br /&gt;
# {{level|Поиск изоморфных подграфов}}&lt;br /&gt;
## {{level|Алгоритм Ульмана}}&lt;br /&gt;
## {{level|Алгоритм VF2}}&lt;br /&gt;
# {{level|Связность в графах}}&lt;br /&gt;
## {{level|Алгоритм Шилоаха-Вишкина поиска компонент связности}}&lt;br /&gt;
## {{level|Система непересекающихся множеств}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм DCSC поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна-Вишкина поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска «мостов» в графе}}&lt;br /&gt;
## {{level|Определение вершинной связности графа}}&lt;br /&gt;
## {{level|Алгоритм Габова определения рёберной связности графа}}&lt;br /&gt;
# {{level|Поиск максимального потока в транспортной сети}}&lt;br /&gt;
## {{level|Алгоритм Форда-Фалкерсона}}&lt;br /&gt;
## {{level|Алгоритм проталкивания предпотока}}&lt;br /&gt;
# {{level|Поиск потока минимальной стоимости в транспортной сети}}&lt;br /&gt;
# {{level|Задача о назначениях}}&lt;br /&gt;
## {{level|Венгерский алгоритм}}&lt;br /&gt;
## {{level|Алгоритм аукциона}}&lt;br /&gt;
## {{level|Алгоритм Гопкрофта-Карпа}}&lt;br /&gt;
# {{level|Вычисление betweenness centrality|Вычисление центральности вершин}}&lt;br /&gt;
= Алгоритмы на списках и массивах =&lt;br /&gt;
==Алгоритмы поиска==&lt;br /&gt;
# {{level|Линейный поиск - находит элемент в любом списке|Линейный поиск}}, &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
# {{level|Двоичный поиск - находит элемент в отсортированном списке|Двоичный поиск}}, &amp;lt;math&amp;gt;O(\log(n))&amp;lt;/math&amp;gt;&lt;br /&gt;
==Алгоритмы сортировки==&lt;br /&gt;
# {{level|Сортировка с помощью двоичного дерева}}&lt;br /&gt;
# {{level|Сортировка пузырьком}}&lt;br /&gt;
# {{level|Сортировка слиянием (последовательный и параллельный варианты)}}&lt;br /&gt;
=Вычислительная геометрия=&lt;br /&gt;
# {{level|Поиск диаметра множества точек}}&lt;br /&gt;
# {{level|Построение выпуклой оболочки набора точек}}&lt;br /&gt;
# {{level|Триангуляция Делоне}}&lt;br /&gt;
# {{level|Диаграмма Вороного}}&lt;br /&gt;
# {{level|Принадлежность точки многоугольнику}}&lt;br /&gt;
# {{level|Пересечения выпуклых многоугольников}} &lt;br /&gt;
# {{level|Пересечение звёздных многоугольников}}&lt;br /&gt;
==Компьютерная графика==&lt;br /&gt;
# {{level|Алгоритмы построения отрезка - алгоритмы для аппроксимации отрезка на дискретной графической поверхности}}&lt;br /&gt;
# {{level|Алгоритм определения видимых частей трёхмерной сцены}}&lt;br /&gt;
# {{level|Трассировка лучей - рендеринг реалистичных изображений}}&lt;br /&gt;
# {{level|Глобальное освещение - рассматривает прямое освещение и отражение от других объектов}}&lt;br /&gt;
=Криптографические алгоритмы=&lt;br /&gt;
# {{level|Метод встречи посередине}}&lt;br /&gt;
&lt;br /&gt;
=Алгоритмы оптимизации=&lt;br /&gt;
# {{level|Линейное программирование}}&lt;br /&gt;
# {{level|Симплекс-метод}}&lt;br /&gt;
# {{level|Метод ветвей и границ}}&lt;br /&gt;
# {{level|Генетические алгоритмы}}&lt;br /&gt;
# {{level|Муравьиные алгоритмы}}&lt;br /&gt;
# {{level|Комбинированные алгоритмы}}&lt;br /&gt;
# {{level|Стохастическое двойственное динамическое программирование (SDDP)}}&lt;br /&gt;
=Алгоритмы машинного обучения=&lt;br /&gt;
# {{level|Алгоритм k средних (k-means)}}&lt;br /&gt;
==Нейронные сети==&lt;br /&gt;
# {{level|Распознавание образов}}&lt;br /&gt;
## {{level|Распознавание текста}}&lt;br /&gt;
## {{level|Распознавание речи}}&lt;br /&gt;
## {{level|Распознавание лиц}}&lt;br /&gt;
=Алгоритмы теории игр=&lt;br /&gt;
=Алгоритмы моделирования квантовых систем=&lt;br /&gt;
# {{level|Алгоритмы моделирования квантовых вычислений}}&lt;br /&gt;
## {{level|Однокубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Двухкубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Моделирование квантового преобразования Фурье}}&lt;br /&gt;
=Алгоритмы решения уравнений математической физики=&lt;br /&gt;
# {{level|Уравнение Пуассона, решение дискретным преобразованием Фурье}}&lt;br /&gt;
=Другие алгоритмы=&lt;br /&gt;
&lt;br /&gt;
[[en:Algorithm classification]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Алгоритмы|*]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%91%D1%8B%D1%81%D1%82%D1%80%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%A4%D1%83%D1%80%D1%8C%D0%B5_%D0%B4%D0%BB%D1%8F_%D1%81%D1%82%D0%B5%D0%BF%D0%B5%D0%BD%D0%B5%D0%B9_%D0%B4%D0%B2%D0%BE%D0%B9%D0%BA%D0%B8&amp;diff=25320</id>
		<title>Быстрое преобразование Фурье для степеней двойки</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%91%D1%8B%D1%81%D1%82%D1%80%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%A4%D1%83%D1%80%D1%8C%D0%B5_%D0%B4%D0%BB%D1%8F_%D1%81%D1%82%D0%B5%D0%BF%D0%B5%D0%BD%D0%B5%D0%B9_%D0%B4%D0%B2%D0%BE%D0%B9%D0%BA%D0%B8&amp;diff=25320"/>
		<updated>2018-02-02T10:24:29Z</updated>

		<summary type="html">&lt;p&gt;Frolov: Содержимое страницы заменено на «{{level-m}}»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{level-m}}&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9F%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9A%D1%83%D0%BB%D0%B8-%D0%A2%D1%8C%D1%8E%D0%BA%D0%B8_%D0%B1%D1%8B%D1%81%D1%82%D1%80%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%A4%D1%83%D1%80%D1%8C%D0%B5_%D0%B4%D0%BB%D1%8F_%D1%81%D1%82%D0%B5%D0%BF%D0%B5%D0%BD%D0%B5%D0%B9_%D0%B4%D0%B2%D0%BE%D0%B9%D0%BA%D0%B8&amp;diff=25319</id>
		<title>Простой алгоритм Кули-Тьюки быстрого преобразования Фурье для степеней двойки</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9F%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9A%D1%83%D0%BB%D0%B8-%D0%A2%D1%8C%D1%8E%D0%BA%D0%B8_%D0%B1%D1%8B%D1%81%D1%82%D1%80%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%A4%D1%83%D1%80%D1%8C%D0%B5_%D0%B4%D0%BB%D1%8F_%D1%81%D1%82%D0%B5%D0%BF%D0%B5%D0%BD%D0%B5%D0%B9_%D0%B4%D0%B2%D0%BE%D0%B9%D0%BA%D0%B8&amp;diff=25319"/>
		<updated>2018-02-02T10:23:25Z</updated>

		<summary type="html">&lt;p&gt;Frolov: /* Математическое описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Простой алгоритм Кули-Тьюки&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O (n log_{2} n)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O (log_{2} n)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:Frolov|А.В.Фролов]], [[Участник:VadimVV|Вад.В.Воеводин]] ([[#Описание локальности данных и вычислений|раздел 2.2]]),[[Участник:Teplov|А.М.Теплов]] (раздел [[#Масштабируемость алгоритма и его реализации|2.4]])&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Простой алгоритм Кули-Тьюки&#039;&#039;&#039; - один из вариантов &#039;&#039;&#039;быстрого преобразования Фурье&#039;&#039;&#039; для &#039;&#039;комплексных&#039;&#039; векторов с размерностью, равной степени двойки, без использования специфичных приёмов, использующихся для степеней четвёрки, восьмёрки и др.&amp;lt;ref&amp;gt;В.В.Воеводин, Ю.А.Кузнецов. Матрицы и вычисления. М.: Наука, 1984.&amp;lt;/ref&amp;gt; Заключается в последовательном применении метода быстрого преобразования Фурье и сведении преобразования к последовательности преобразований Фурье размерности 2 и выполнения умножений на т.н. поворотные множители. Несмотря на то, что проигрывает алгоритмам Кули-Тьюки, разлагающим степени двойки на степени 4, 8 и др. и использующим их специфику, весьма распространён, что связано с самой простой из алгоритмов БПФ записью программной реализации.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Исходные данные: преобразуемый комплексный вектор &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; (элементы &amp;lt;math&amp;gt;a_{i}&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Вычисляемые данные: комплексный вектор - результат преобразования &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; (элементы &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Размерность векторов - &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, причём &amp;lt;math&amp;gt;n = 2^l&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Рекурсивное описание ====&lt;br /&gt;
&lt;br /&gt;
Вектор записывается по строкам по 2 элемента в каждой. После этого над каждой строкой выполняется преобразование Фурье порядка 2, &lt;br /&gt;
получившиеся элементы умножаются на поворотные множители &amp;lt;math&amp;gt;exp (2 \pi i(m-1)(j-1)/n)&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - номер строки, &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; - номер столбца), после чего выполняется БПФ порядка &amp;lt;math&amp;gt;n/2&amp;lt;/math&amp;gt; над каждым из столбцов.&lt;br /&gt;
Поскольку для 1-го столбца поворотные множители равны 1, то реально умножение на них не выполняется, а умножения на поворотные множители элементов второго столбца соединяются с преобразованием Фурье порядка 2. Эта комбинация, называемая &amp;quot;бабочкой&amp;quot; в среде специалистов по БПФ, и является основной операцией в простом алгоритме Кули-Тьюки. &amp;quot;Бабочка&amp;quot; состоит из вычисления суммы двух комплексных чисел, а также из вычисления их разности с последующим умножением на комплексное число. Всего на каждом шаге выполняется &amp;lt;math&amp;gt;n/2&amp;lt;/math&amp;gt; &amp;quot;бабочек&amp;quot;, а шагов - &amp;lt;math&amp;gt;l-1&amp;lt;/math&amp;gt;. Последний, &lt;br /&gt;
&amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt;-й шаг вычисляет только суммы и разности.&lt;br /&gt;
&lt;br /&gt;
==== Тригонометрические функции ====&lt;br /&gt;
&lt;br /&gt;
Несмотря на то, что в вычислениях используются поворотные множители &amp;lt;math&amp;gt;exp (2 \pi i(m-1)(j-1)/n)&amp;lt;/math&amp;gt;, нецелесообразно вычислять их в процессе выполнения алгоритма Кули-Тьюки, поскольку вычисления косинусов и синусов (в мнимой экспоненте) тогда составили бы львиную долю вычислений алгоритма. Поэтому обычно (как и в других версиях БПФ) поворотные множители вычисляются заранее и хранятся в специальном массиве. Здесь мы будем предполагать, что алгоритм выполняется именно так.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро алгоритма составляют &amp;quot;бабочки&amp;quot;, состоящие из вычисления суммы двух комплексных чисел, а также из вычисления их разности с последующим умножением на комплексное число. Всего их &amp;lt;math&amp;gt;(1/2) n log_{2} n &amp;lt;/math&amp;gt; штук, при этом в &amp;lt;math&amp;gt;n/2&amp;lt;/math&amp;gt; из них умножение не выполняется.&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Макроструктура алгоритма лучше всего описывается рекурсивно, как &amp;lt;math&amp;gt;n/2&amp;lt;/math&amp;gt; преобразований Фурье порядка 2, умножение &amp;lt;math&amp;gt;n/2&amp;lt;/math&amp;gt; пар комплексных чисел и затем 2 БПФ порядка &amp;lt;math&amp;gt;n/2&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Нерекурсивная схема организации состоит в том, что на каждом шаге (а всего их &amp;lt;math&amp;gt;log_{2} n &amp;lt;/math&amp;gt;) для выполнения &amp;quot;бабочки&amp;quot; все элементы разбиваются на &amp;lt;math&amp;gt;n/2&amp;lt;/math&amp;gt; пар. В зависимости от номера шага, разница координат для каждой пары элементов удваивается. На первом шагу она равна 1, на последнем - &amp;lt;math&amp;gt;n/2&amp;lt;/math&amp;gt;. &lt;br /&gt;
При этом результат суммы записывается в элемент с меньшим номером, а результат вычитания с последующим умножением - в элемент с большим. &lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Если считать только главные члены выражений для последовательной сложности алгоритма, то простой алгоритм Кули-Тьюки может быть выполнен за &amp;lt;math&amp;gt;n log_{2} n&amp;lt;/math&amp;gt; операций комплексного сложения и &amp;lt;math&amp;gt;(1/2) n log_{2} n &amp;lt;/math&amp;gt;операций комплексного умножения. Таким образом, простой алгоритм Кули-Тьюки может быть отнесён к &#039;&#039;линейно-логарифмическому&#039;&#039; классу по последовательной сложности.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
[[file:Cooley-Tukey Fourier Transform algorithm.png|center|thumb|600px|Рисунок 1. Простой алгоритм Кули-Тьюки для n=8. Op+ - операция сложения двух комплексных чисел. Op- - операция вычитания двух комплексных чисел и умножения результата вычитания на комплексное число (поворотный множитель). В последнем столбце операций умножение не производится. Привязка вершин выполнена по оси абсцисс - к параметру внешнего цикла, по оси ординат - к обрабатываемым элементам массива]]&lt;br /&gt;
&lt;br /&gt;
Как видно из рисунка, этот граф не является линейным ни по размерам, ни по формулам для дуг графа. По размерам он линейно-логарифмический, а формулы дуг имеют экспоненциальные компоненты.В элементарной &amp;quot;бабочке&amp;quot; на i-м шаге каждый раз участвует пара элементов массива, у которых запись их номеров, уменьшенных на единицу, в двоичной системе различается только в i-1-м бите.&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Если считать только главные члены выражений, то простой алгоритм Кули-Тьюки имеет критический путь, состоящий из &amp;lt;math&amp;gt;log_{2} n &amp;lt;/math&amp;gt; операций комплексного сложения/вычитания и &amp;lt;math&amp;gt;log_{2} n &amp;lt;/math&amp;gt; операций комплексного умножения. Таким образом, простой алгоритм Кули-Тьюки может быть отнесён к &#039;&#039;логарифмическому&#039;&#039; классу по параллельной сложности. По ширине ЯПФ сложность алгоритма &#039;&#039;линейна&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: вектор &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; (элементы &amp;lt;math&amp;gt;a_{i}&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём входных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; . &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: вектор &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; (элементы &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём выходных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Соотношение последовательной и параллельной сложности в случае неограниченных ресурсов, как хорошо видно, является &#039;&#039;линейным&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
При этом вычислительная мощность алгоритма, как отношение числа операций к суммарному объему входных и выходных данных – &#039;&#039;логарифмическая&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
При этом алгоритм полностью детерминирован. &lt;br /&gt;
&lt;br /&gt;
Заметим, что простой алгоритм Кули-Тьюки не является оптимальным даже для векторов размером степень двойки. Однако здесь мы не рассматриваем другие алгоритмы БПФ.&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
В простейшем варианте алгоритм на Фортране можно записать так, что входной и выходной массивы совпадают (здесь использован массив X):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;fortran&amp;quot;&amp;gt;&lt;br /&gt;
         &lt;br /&gt;
        subroutine STEP2(x,y,pov)&lt;br /&gt;
        complex x, y, pov, u, v&lt;br /&gt;
        u = x + y&lt;br /&gt;
        v = (x-y)*pov&lt;br /&gt;
        x = u&lt;br /&gt;
        y = v&lt;br /&gt;
        return&lt;br /&gt;
        end&lt;br /&gt;
        subroutine FFT2(X, POV, N, N2, L)&lt;br /&gt;
C&lt;br /&gt;
C L = Log2N&lt;br /&gt;
C N2 = N/2&lt;br /&gt;
C&lt;br /&gt;
        complex X(0:N-1), POV(0:N2-1)&lt;br /&gt;
        DO I = 0, L-1&lt;br /&gt;
            DO J = 0, N2/2**I-1&lt;br /&gt;
            DO K = 0, 2**I-1&lt;br /&gt;
                call STEP2(X(2*J*2**I+K)), X(2*J*2**I+2**I+K), POV(J*2**I))&lt;br /&gt;
            END DO&lt;br /&gt;
            END DO&lt;br /&gt;
         END DO&lt;br /&gt;
         return&lt;br /&gt;
         end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь предполагается, что поворотные множители первого шага (они потом используются и на последующих шагах) предвычислены заранее и лежат в элементах массива POV (а в его нулевом элементе - единица). К сожалению, подавляющее большинство реализаций простого алгоритма Кули-Тьюки вычисляет поворотные множители одновременно с вычислением &amp;quot;бабочки&amp;quot;, что её значительно замедляет.&lt;br /&gt;
&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
==== Локальность реализации алгоритма ====&lt;br /&gt;
===== Структура обращений в память и качественная оценка локальности =====&lt;br /&gt;
&lt;br /&gt;
[[file:cooley_tukey_1.png|thumb|center|700px|Рисунок 2. Простой алгоритм Кули-Тьюки быстрого преобразования Фурье для степеней двойки. Общий профиль обращений в память]]&lt;br /&gt;
&lt;br /&gt;
На рис. 2 представлен профиль обращений в память для реализации простого алгоритма Кули-Тьюки быстрого преобразования Фурье для степеней двойки. Данный профиль состоит из обращений к двум массивам (разделены зеленой линией).  В целом можно увидеть, что общее число обращений заметно больше числа задействованных данных, поэтому многие элементы используются повторно. Также видно, что вначале элементы обоих массивов перебираются последовательно, однако затем порядок обращений изменяется. Чтобы понять, как устроено это изменение, рассмотрим профиль подробнее.&lt;br /&gt;
&lt;br /&gt;
На рис. 3 представлен фрагмент 1 – обращения к началу первого массива на протяжении всей программы. Видно, что при каждом следующем переборе массива задействуется все меньше элементов – возрастает шаг, с которым выбираются элементы. Такое поведение характеризуется средней локальностью – с каждой итерацией увеличивается шаг, а значит, и ухудшается пространственная локальность. Однако при этом число обращений на итерацию уменьшается, а значит, уменьшается время до повторного обращения, т.е. улучшается временная локальность. &lt;br /&gt;
&lt;br /&gt;
Особенно стоит отметить конец фрагмента, где видно множество обращений к самому началу массива. Из рис. 2 видно, что есть еще несколько элементов массива, к которым в конце профиля выполняется множество обращений. Такой профиль является идеальным с точки зрения локальности – и пространственная, и временная локальности принимают практически максимальное значение.&lt;br /&gt;
&lt;br /&gt;
[[file:cooley_tukey_2.png|thumb|center|500px|Рисунок 3. Профиль обращений, фрагмент 1]]&lt;br /&gt;
&lt;br /&gt;
Далее рассмотрим рис. 4, на котором представлен характерный фрагмент для второго массива. Здесь можно увидеть, что строение каждой итерации очень похоже, только при переходе к следующей итерации увеличивается в 2 раза шаг по памяти, в результате чего видимые отрезки на рисунке увеличиваются вдвое. Такой фрагмент обладает не очень высокой пространственной локальностью, что связано с изменением шага, а также не очень высокой временной локальностью, поскольку между повторными обращениями на разных итерациях выполняется достаточно много обращений.&lt;br /&gt;
&lt;br /&gt;
[[file:cooley_tukey_3.png|thumb|center|500px|Рисунок 4. Профиль обращений, фрагмент 2]]&lt;br /&gt;
&lt;br /&gt;
В целом можно сказать, что основная масса обращений общего профиля показывает среднюю локальность, как пространственную, так и временную. Однако отмеченные в конце первого массива обращения к одним и тем же элементам могут в значительной степени повлиять на общую оценку.&lt;br /&gt;
&lt;br /&gt;
===== Количественная оценка локальности =====&lt;br /&gt;
&lt;br /&gt;
Основной фрагмент реализации, на основе которого были получены количественные оценки, приведен [http://git.parallel.ru/shvets.pavel.srcc/locality/blob/master/benchmarks/fft_complex/fft_complex.h здесь] (функция Kernel). Условия запуска описаны [http://git.parallel.ru/shvets.pavel.srcc/locality/blob/master/README.md здесь].&lt;br /&gt;
&lt;br /&gt;
Первая оценка выполняется на основе характеристики daps, которая оценивает число выполненных обращений (чтений и записей) в память в секунду. Данная характеристика является аналогом оценки flops применительно к работе с памятью и является в большей степени оценкой производительности взаимодействия с памятью, чем оценкой локальности. Однако она служит хорошим источником информации, в том числе для сравнения с результатами по следующей характеристике cvg.&lt;br /&gt;
&lt;br /&gt;
На рисунке 5 приведены значения daps для реализаций распространенных алгоритмов, отсортированные по возрастанию (чем больше daps, тем в общем случае выше производительность). Можно увидеть, что данная программа показывает результат немного хуже среднего, что примерно соответствует нашим ожиданиям согласно качественной оценке. Отметим, что вывод относительно среднего значения делается на основе анализа абсолютных значений, а не положения на графике (здесь не представлена часть программ с низкими значениями).&lt;br /&gt;
Обратим внимание, что значение daps очень близко к daps для реализации уравнения Пуассона. Это вполне закономерно, поскольку данная реализация построена с использованием данной реализации БПФ.&lt;br /&gt;
&lt;br /&gt;
[[file:cooley_tukey_daps.png|thumb|center|700px|Рисунок 5. Сравнение значений оценки daps]]&lt;br /&gt;
&lt;br /&gt;
Вторая характеристика – cvg – предназначена для получения более машинно-независимой оценки локальности. Она определяет, насколько часто в программе необходимо подтягивать данные в кэш-память. Соответственно, чем меньше значение cvg, тем реже это нужно делать, тем лучше локальность. &lt;br /&gt;
&lt;br /&gt;
[[file:cooley_tukey_cvg.png|thumb|center|700px|Рисунок 6. Сравнение значений оценки cvg]]&lt;br /&gt;
&lt;br /&gt;
На рисунке 6 значения приведены значения cvg для того же набора реализаций, отсортированные по убыванию (чем меньше cvg, тем в общем случае выше локальность). Можно увидеть, что данная реализация показывает наилучшее значение cvg среди всех рассмотренных программ. Это в определенной степени не соответствует качественному анализу и оценка daps. По всей видимости, здесь повлиял отмеченный выше фрагмент с обращениями к одним и тем же элементам, который в значительной степени улучшил значение оценки. Вероятно, стоит рассмотреть возможность модификации cvg для более аккуратного учета таких случаев.&lt;br /&gt;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
==== Масштабируемость алгоритма ====&lt;br /&gt;
==== Масштабируемость реализации алгоритма ====&lt;br /&gt;
Набор и границы значений изменяемых [[Глоссарий#Параметры запуска|параметров запуска]] реализации алгоритма: &lt;br /&gt;
&lt;br /&gt;
*	число процессоров [4, 8 : 64] с шагом 8;&lt;br /&gt;
*	размер вектора [128 : 32768] с шагом равным степени двойки.&lt;br /&gt;
&lt;br /&gt;
В результате проведённых экспериментов был получен следующий диапазон [[Глоссарий#Эффективность реализации|эффективности реализации]] алгоритма:&lt;br /&gt;
&lt;br /&gt;
*	минимальная эффективность реализации 0.000000002% (1.85994069951e-09%);&lt;br /&gt;
*	максимальная эффективность реализации 0.00002% (2.07351573426e-05%).&lt;br /&gt;
&lt;br /&gt;
На следующих рисунках приведены графики [[Глоссарий#Производительность|производительности]] и эффективности выбранной реализации алгоритма в зависимости от изменяемых параметров запуска.&lt;br /&gt;
&lt;br /&gt;
[[file:Cooley perf.png|thumb|center|700px|Рисунок 7. Параллельная реализация алгоритма. Изменение производительности в зависимости от числа процессоров и размера области.]]&lt;br /&gt;
[[file:Cooley eff.png|thumb|center|700px|Рисунок 8. Параллельная реализация алгоритма. Изменение эффективности в зависимости от числа процессоров и размера матрицы.]]&lt;br /&gt;
&lt;br /&gt;
Алгоритм в силу своих особенностей имеет крайне низкую эффективность параллельного выполнения, связанную с крайне малым объемом вычислений на каждый процесс. Из-за этого накладные расходы на организацию параллельного выполнения становятся доминирующими при выполнении алгоритма.&lt;br /&gt;
&lt;br /&gt;
Исследованная [http://git.algowiki-project.org/Teplov/Scalability/blob/master/Cooley-Tukey/fft.c параллельная реализация алгоритма]&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
Для проведения экспериментов использовалась реализация алгоритма Кули-Тьюки, в реализации, доступной [http://git.algowiki-project.org/Teplov/Scalability/blob/master/Cooley-Tukey/fft.c здесь].  Все результаты получены на суперкомпьютере &amp;quot;ГрафИТ!&amp;quot;. Использовались процессоры Intel Xeon X5570 с пиковой производительностью в 94 Гфлопс, а также компилятор Gnu 4.4.7. &lt;br /&gt;
На рисунках показана эффективность реализации алгоритма Кули-Тьюки на 64 процессах.&lt;br /&gt;
&lt;br /&gt;
[[file:Cooley-Tukey CPU USER.png|thumb|center|700px|Рисунок 9. График загрузки CPU при выполнении алгоритма Кули-Тьюки]]&lt;br /&gt;
&lt;br /&gt;
На графике загрузки процессора видно, что почти все время работы программы уровень загрузки составляет около 20%. Это указывает на существенную недозагруженность вычислениями процессора. &lt;br /&gt;
&lt;br /&gt;
[[file:Cooley-Tukey CPU FLOPS.png|thumb|center|700px|Рисунок 10. График операций с плавающей точкой в секунду при выполнении алгоритма Кули-Тьюки]]&lt;br /&gt;
&lt;br /&gt;
На Рисунке 11 показан график количества операций с плавающей точкой в секунду. На графике видна общая низкая производительность вычислений.&lt;br /&gt;
 [[file:Cooley-Tukey L1.png|thumb|center|700px|Рисунок 11. График кэш-промахов L1 в секунду при работе алгоритма Кули-Тьюки]]&lt;br /&gt;
 &lt;br /&gt;
На графике кэш-промахов первого уровня видно, что число промахов достаточно большое для нескольких ядер и находится на уровне 25 млн/сек. В среднем по всем узлам значения значительно ниже. Это указывает на неравномерное распределение вычислений.&lt;br /&gt;
 [[file:Cooley-Tukey L3.png|thumb|center|700px|Рисунок 12. График кэш-промахов L3 в секунду при работе алгоритма Кули-Тьюки]]&lt;br /&gt;
&lt;br /&gt;
На графике кэш-промахов третьего уровня видно, что число промахов все еще достаточно большое для небольшого числа процессов и находится на уровне 1,5 млн/сек, однако в среднем по всем узлам значения низкие. &lt;br /&gt;
[[file:Cooley-Tukey MEM LOAD.png|thumb|center|700px|Рисунок 13. График количества чтений из оперативной памяти при работе алгоритма Кули-Тьюки]]&lt;br /&gt;
&lt;br /&gt;
На графике чтений из памяти на наблюдается неравномерная активность чтения из памяти процессами: несколько читают очень активно, остальные используют значительно менее эффективно. Однако активность тех нескольких процессов чтения из памяти достаточно высока, что в сочетании с показаниями достаточно высокого уровня кэш-промахов указывает на достаточно большой процент промахов из кэш в оперативную память.&lt;br /&gt;
 [[file:Cooley-Tukey MEM STORE.png|thumb|center|700px|Рисунок 14. График количества записей в оперативную память при работе алгоритма Кули-Тьюки]]&lt;br /&gt;
&lt;br /&gt;
На графике записей в память видна похожая картина неравномерности вычислений, при которой одновременно активно выполняют запись только несколько процессов. Это коррелирует с другими графиками выполнения и указывает на низкую эффективность данной реализации.&lt;br /&gt;
 [[file:Cooley-Tukey INF DATA.png|thumb|center|700px|Рисунок 15. График скорости передачи по сети Infiniband в байт/сек при работе алгоритма Кули-Тьюки]]&lt;br /&gt;
&lt;br /&gt;
На графике скорости передачи данных по сети Infiniband наблюдается достаточно низкая скорость передачи данных в байтах в секунду. Это говорит о том, что процессы между собой обмениваются небольшими порциями данных.&lt;br /&gt;
 [[file:Cooley-Tukey INF PCKTS.png|thumb|center|700px|Рисунок 16. График скорости передачи по сети Infiniband в пакетах/сек при работе алгоритма Кули-Тьюки]]&lt;br /&gt;
&lt;br /&gt;
На графике скорости передачи данных в пакетах в секунду наблюдается очень высокая интенсивность передачи данных выраженная в пакетах в секунду. Это говорит о том, что, вероятно, процессы обмениваются сообщениями очень низкой длины, но очень интенсивно.  Так же наблюдается меньший дизбаланс между процессами чем наблюдаемый в графиках использования памяти и вычислений. Это указывает на то, что при поступлении необходимых данных часть процессов начинает интенсивные вычисления, хотя другие продолжают простаивать. &lt;br /&gt;
 [[file:Cooley-Tukey LOADAVG.png|thumb|center|700px|Рисунок 17. График числа процессов, ожидающих вхождения в стадию счета (Loadavg), при работе алгоритма Кули-Тьюки]]&lt;br /&gt;
На графике числа процессов, ожидающих вхождения в стадию счета (Loadavg), видно, что на протяжении всей работы программы значение этого параметра постоянно и приблизительно равняется 3. Это свидетельствует о стабильной работе программы с загруженной только частью вычислительных узлов. Это указывает на очень нерациональную и статичную загрузку аппаратных ресурсов процессами. И показывает низкую эффективность выполняемой реализации.&lt;br /&gt;
В целом, по данным системного мониторинга работы программы можно сделать вывод о том, что программа работала неэффективно, но стабильно. Использование памяти и коммуникационной среды достаточно интенсивное, при этом объемы передаваемых данных являются крайне малыми. Это указывает на необходимость использования оптимизаций алгоритмической части программы. &lt;br /&gt;
Низкая эффективность связана судя по всему с недостаточным объемом вычислений на каждом процессе, интенсивными обменами малой длины сообщений. Это приводит к постоянному ожиданию процессами данных для вычислений и простою даже в рамках одного вычислительного узла.&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
Граф простого алгоритма Кули-Тьюки лучше всего из коммуникационных сетей отображается на сеть типа [[гиперкуб]]. Распространённость БПФ в методах решения различных задач поэтому привела к популярности идеи вычислительных систем с сетью типа гиперкуб в начале развития различных параллельных вычислительных систем. В настоящее время, однако, массово такие вычислительные системы не используются по физическим причинам, делающим гиперкуб большой размерности труднореализуемым на практике. &lt;br /&gt;
Как видно из графа, при простом его разбиении на части прямыми, параллельными оси шагов, на первых шагах алгоритма обмены между разными частями будут отсутствовать, но, начиная с некоторого момента, они станут составлять величину, сопоставимую с количеством арифметических операций. Этого, однако, можно избежать, если примерно посередине алгоритма переупорядочить все данные. В графе это будет соответствовать смене разбиения на части. &lt;br /&gt;
При выполнении указанных рекомендаций, алгоритм можно будет реализовать более эффективно, чем в настоящее время, и на архитектурах типа кластерной и на других архитектурах, реализующих разбиение процесса на независимые ветви.&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Простой алгоритм Кули-Тьюки быстрого преобразования Фурье для степеней двойки весьма распространён среди начинающих, использующих БПФ, и его сравнительно легко можно найти в Интернете с помощью поисковых сайтов. Как правило, эти реализации не используют описанных выше приёмов улучшения эффективности вычислений - ни для последовательной, ни для параллельной архитектуры. Связано это с тем, что сам по себе простой алгоритм Кули-Тьюки быстрого преобразования Фурье для степеней двойки проигрывает другим алгоритмам Кули-Тьюки, которые используют специфику, например, чётных степеней двойки, и потому более экономичны. Поэтому большинство исследователей, которым нужны более быстрые программы БПФ, не улучшают эффективность этого алгоритма, а меняют его на другой. &lt;br /&gt;
Это же рекомендуем делать и читателям.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Законченные статьи]]&lt;br /&gt;
[[Категория:Методы, основанные на дистрибутивности операций]]&lt;br /&gt;
&lt;br /&gt;
[[En:Cooley–Tukey Fast Fourier Transform, radix-2 case]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25318</id>
		<title>Классификация алгоритмов</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25318"/>
		<updated>2018-02-02T10:21:09Z</updated>

		<summary type="html">&lt;p&gt;Frolov: /* Вычислительная геометрия */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
=Векторные операции=&lt;br /&gt;
# {{level|Суммирование сдваиванием}}&lt;br /&gt;
## {{level|Нахождение суммы элементов массива сдваиванием}}&lt;br /&gt;
## {{level|Нахождение частных сумм элементов массива сдваиванием}}&lt;br /&gt;
# {{level|Равномерная норма вектора, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Скалярное произведение векторов, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Последовательно-параллельный метод суммирования}}&lt;br /&gt;
=Матрично-векторные операции=&lt;br /&gt;
== Умножения неособенных матриц на вектор ==&lt;br /&gt;
# {{level|Умножение плотной неособенной матрицы на вектор (последовательный вещественный вариант)}}&lt;br /&gt;
== Умножения матриц специального вида на вектор ==&lt;br /&gt;
# {{level|Преобразование Фурье}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для составной размерности}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Простой алгоритм Кули-Тьюки быстрого преобразования Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Быстрое преобразование Фурье для чётных степеней двойки}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для составной размерности с небольшими простыми делителями (2,3,5,7)}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для простой размерности}}&lt;br /&gt;
&lt;br /&gt;
=Матричные операции=&lt;br /&gt;
# {{level|Умножение плотных матриц}}&lt;br /&gt;
## {{level|Перемножение плотных неособенных матриц (последовательный вещественный вариант)}}&lt;br /&gt;
## {{level|Метод Штрассена}}&lt;br /&gt;
=Разложения матриц=&lt;br /&gt;
{{level|Задача разложения матриц}}&lt;br /&gt;
# {{level|Треугольные разложения}}&lt;br /&gt;
## {{level|Метод Гаусса (нахождение LU-разложения)}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса без перестановок}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса}}&lt;br /&gt;
#### {{level|Компактная схема метода Гаусса и её модификации}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для плотной матрицы}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы и её модификации}}&lt;br /&gt;
###### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы, последовательный вариант}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Последовательно-параллельный алгоритм для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса с перестановками}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по столбцу}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по строке}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по главной диагонали}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по всей матрице}}&lt;br /&gt;
## {{level|Метод Холецкого (нахождение симметричного треугольного разложения)}}&lt;br /&gt;
### {{level|Разложение Холецкого (метод квадратного корня)}} базовый точечный вещественный вариант для плотной симметричной положительно-определённой матрицы&lt;br /&gt;
# {{level|Известные треугольные разложения для матриц специального вида}}&lt;br /&gt;
# {{level|Унитарно-треугольные разложения}}&lt;br /&gt;
## {{level|QR-разложения плотных неособенных матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Гивенса (вращений) QR-разложения квадратной матрицы (вещественный точечный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) QR-разложения квадратной матрицы, вещественный точечный вариант}}&lt;br /&gt;
### {{level|Метод ортогонализации}}&lt;br /&gt;
#### {{level|Классический метод ортогонализации}}&lt;br /&gt;
#### {{level|Метод ортогонализации с переортогонализацией}}&lt;br /&gt;
### {{level|Метод треугольного разложения матрицы Грама}}&lt;br /&gt;
## {{level|Методы QR-разложения плотных хессенберговых матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
# {{level|Подобные разложения}}&lt;br /&gt;
## {{level|Подобные разложения на унитарные и хессенберговы матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
## {{level|Симметричные разложения на унитарные и трёхдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к трёхдиагональной форме}}&lt;br /&gt;
## {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
# {{level|Неподобные унитарные разложения}}&lt;br /&gt;
## {{level|Неподобные разложения на унитарные и двухдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
## {{level|Разложения на унитарные и диагональные матрицы}}&lt;br /&gt;
### {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
#### {{level|Методы нахождения сингулярных чисел двухдиагональных матриц}}&lt;br /&gt;
##### {{level|Алгоритм dqds нахождения сингулярных чисел двухдиагональной матрицы}}&lt;br /&gt;
###### {{level|Итерация алгоритма dqds}}&lt;br /&gt;
=Решение систем линейных уравнений=&lt;br /&gt;
# {{level|Прямые методы решения СЛАУ}}&lt;br /&gt;
## {{level|Linpack benchmark}}&lt;br /&gt;
## {{level|Методы решения СЛАУ с матрицами специального вида}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с треугольными матрицами}}&lt;br /&gt;
#### {{level|Прямая подстановка (вещественный вариант)|Прямая подстановка}}&lt;br /&gt;
#### {{level|Обратная подстановка (вещественный вариант)|Обратная подстановка}}&lt;br /&gt;
#### {{level|Методы решения СЛАУ с двудиагональными матрицами}}&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант обратной подстановки}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с трёхдиагональными матрицами}}&lt;br /&gt;
#### {{level|Методы, основанные на стандартном LU-разложении матрицы}}&lt;br /&gt;
##### {{level|Прогонка}}&lt;br /&gt;
###### {{level|Прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Классическая монотонная прогонка, повторный вариант}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант решения трёхдиагональной СЛАУ с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Метод редукции}}&lt;br /&gt;
###### {{level|Полный метод редукции}}&lt;br /&gt;
###### {{level|Повторный метод редукции для новой правой части}}&lt;br /&gt;
##### {{level|Встречная прогонка}}&lt;br /&gt;
###### {{level|Встречная прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Повторная встречная прогонка, точечный вариант}}&lt;br /&gt;
##### {{level|Метод циклической редукции}}&lt;br /&gt;
###### {{level|Полный метод циклической редукции}}&lt;br /&gt;
###### {{level|Повторный метод циклической редукции для новой правой части}}&lt;br /&gt;
##### {{level|Метод окаймления}}&lt;br /&gt;
### Методы решения СЛАУ с блочно-треугольными матрицами&lt;br /&gt;
#### {{level|Блочная прямая подстановка (вещественный вариант)|Блочная прямая подстановка}}&lt;br /&gt;
#### {{level|Блочная обратная подстановка (вещественный вариант)|Блочная обратная подстановка}}&lt;br /&gt;
#### Методы решения СЛАУ с блочно-двухдиагональными матрицами&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с блочно-двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант обратной подстановки для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с блочно-трёхдиагональными матрицами}}&lt;br /&gt;
#### Методы, основанные на стандартном LU-разложении матрицы&lt;br /&gt;
##### {{level|Блочная прогонка}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант решения с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Встречная прогонка, блочный вариант}}&lt;br /&gt;
##### {{level|Блочный метод циклической редукции}}&lt;br /&gt;
##### {{level|Блочный метод окаймления}}&lt;br /&gt;
## {{level|Решения СЛАУ с матрицами специального вида, имеющими известные обратные матрицы}}&lt;br /&gt;
# Итерационные методы решения СЛАУ&lt;br /&gt;
## {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
## {{level|Стабилизированный метод бисопряженных градиентов (BiCGStab)}}&lt;br /&gt;
## {{level|Алгоритм_Качмажа}}&lt;br /&gt;
=Решение систем нелинейных уравнений=&lt;br /&gt;
# {{level|Метод Ньютона для систем нелинейных уравнений}}&lt;br /&gt;
=Решения спектральных задач=&lt;br /&gt;
# {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
## {{level|QR-алгоритм}}&lt;br /&gt;
### {{level|QR-алгоритм, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|QR-алгоритм для хессенберговой матрицы, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для симметричных матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для комплексных эрмитовых матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для решения спектральной задачи у симметричных матриц}}&lt;br /&gt;
### {{level|Классический метод Якоби (вращений) для симметричных матриц с выбором по всей матрице}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением и барьерами}}&lt;br /&gt;
## {{level|Метод Ланцоша}}&lt;br /&gt;
### {{level|Алгоритм Ланцоша для точной арифметики (без переортогонализации)}}&lt;br /&gt;
# {{level|Частичная спектральная задача}}&lt;br /&gt;
## {{level|Метод бисекций}}&lt;br /&gt;
# {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для нахождения сингулярных значений неособенных матриц}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для нахождения сингулярных значений с циклическим перебором}}&lt;br /&gt;
### {{level|Метод Якоби для нахождения сингулярных значений со специальным подбором вращений}}&lt;br /&gt;
## {{level|QR-алгоритм в приложении к сингулярному разложению}}&lt;br /&gt;
=Тесты производительности компьютеров=&lt;br /&gt;
# {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
# {{level|Linpack benchmark}}&lt;br /&gt;
&lt;br /&gt;
=Алгебра многочленов=&lt;br /&gt;
# {{level|Схема Горнера, вещественная версия, последовательный вариант}}&lt;br /&gt;
=Численные методы интегрирования=&lt;br /&gt;
# {{level|Квадратурные формулы}}&lt;br /&gt;
# {{level|Квадратурные (кубатурные) методы численного интегрирования по отрезку (многомерному кубу)}}&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод прямоугольников|Метод прямоугольников]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод трапеций|Метод трапеций]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод парабол (метод Симпсона)|Метод парабол (метод Симпсона)]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод Гаусса|Метод Гаусса]]&lt;br /&gt;
=Алгоритмы на графах=&lt;br /&gt;
# Обход графа&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}}&lt;br /&gt;
## {{level|Поиск в глубину (DFS)}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути от одной вершины (SSSP)}}&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}} (для невзвешенных графов)&lt;br /&gt;
## {{level|Алгоритм Дейкстры}}&lt;br /&gt;
## {{level|Алгоритм Беллмана-Форда}}&lt;br /&gt;
## {{level|Алгоритм Δ-шагания}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути для всех пар вершин (APSP)}}&lt;br /&gt;
## {{level|Алгоритм Джонсона}}&lt;br /&gt;
## {{level|Алгоритм Флойда-Уоршелла}}&lt;br /&gt;
# {{level|Поиск транзитивного замыкания орграфа}}&lt;br /&gt;
## {{level|Алгоритм Пурдома}}&lt;br /&gt;
# {{level|Определение диаметра графа}}&lt;br /&gt;
# {{level|Построение минимального остовного дерева (MST)}}&lt;br /&gt;
## {{level|Алгоритм Борувки}}&lt;br /&gt;
## {{level|Алгоритм Крускала}}&lt;br /&gt;
## {{level|Алгоритм Прима}}&lt;br /&gt;
## {{level|Алгоритм GHS}}&lt;br /&gt;
# {{level|Поиск изоморфных подграфов}}&lt;br /&gt;
## {{level|Алгоритм Ульмана}}&lt;br /&gt;
## {{level|Алгоритм VF2}}&lt;br /&gt;
# {{level|Связность в графах}}&lt;br /&gt;
## {{level|Алгоритм Шилоаха-Вишкина поиска компонент связности}}&lt;br /&gt;
## {{level|Система непересекающихся множеств}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм DCSC поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна-Вишкина поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска «мостов» в графе}}&lt;br /&gt;
## {{level|Определение вершинной связности графа}}&lt;br /&gt;
## {{level|Алгоритм Габова определения рёберной связности графа}}&lt;br /&gt;
# {{level|Поиск максимального потока в транспортной сети}}&lt;br /&gt;
## {{level|Алгоритм Форда-Фалкерсона}}&lt;br /&gt;
## {{level|Алгоритм проталкивания предпотока}}&lt;br /&gt;
# {{level|Поиск потока минимальной стоимости в транспортной сети}}&lt;br /&gt;
# {{level|Задача о назначениях}}&lt;br /&gt;
## {{level|Венгерский алгоритм}}&lt;br /&gt;
## {{level|Алгоритм аукциона}}&lt;br /&gt;
## {{level|Алгоритм Гопкрофта-Карпа}}&lt;br /&gt;
# {{level|Вычисление betweenness centrality|Вычисление центральности вершин}}&lt;br /&gt;
=Алгоритмы поиска=&lt;br /&gt;
# {{level|Линейный поиск - находит элемент в любом списке|Линейный поиск}}, &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
# {{level|Двоичный поиск - находит элемент в отсортированном списке|Двоичный поиск}}, &amp;lt;math&amp;gt;O(\log(n))&amp;lt;/math&amp;gt;&lt;br /&gt;
=Алгоритмы сортировки=&lt;br /&gt;
# {{level|Сортировка с помощью двоичного дерева}}&lt;br /&gt;
# {{level|Сортировка пузырьком}}&lt;br /&gt;
# {{level|Сортировка слиянием (последовательный и параллельный варианты)}}&lt;br /&gt;
=Вычислительная геометрия=&lt;br /&gt;
# {{level|Поиск диаметра множества точек}}&lt;br /&gt;
# {{level|Построение выпуклой оболочки набора точек}}&lt;br /&gt;
# {{level|Триангуляция Делоне}}&lt;br /&gt;
# {{level|Диаграмма Вороного}}&lt;br /&gt;
# {{level|Принадлежность точки многоугольнику}}&lt;br /&gt;
# {{level|Пересечения выпуклых многоугольников}} &lt;br /&gt;
# {{level|Пересечение звёздных многоугольников}}&lt;br /&gt;
&lt;br /&gt;
=Компьютерная графика=&lt;br /&gt;
# {{level|Алгоритмы построения отрезка - алгоритмы для аппроксимации отрезка на дискретной графической поверхности}}&lt;br /&gt;
# {{level|Алгоритм определения видимых частей трёхмерной сцены}}&lt;br /&gt;
# {{level|Трассировка лучей - рендеринг реалистичных изображений}}&lt;br /&gt;
# {{level|Глобальное освещение - рассматривает прямое освещение и отражение от других объектов}}&lt;br /&gt;
=Криптографические алгоритмы=&lt;br /&gt;
# {{level|Метод встречи посередине}}&lt;br /&gt;
=Нейронные сети=&lt;br /&gt;
# {{level|Распознавание образов}}&lt;br /&gt;
## {{level|Распознавание текста}}&lt;br /&gt;
## {{level|Распознавание речи}}&lt;br /&gt;
## {{level|Распознавание лиц}}&lt;br /&gt;
&lt;br /&gt;
=Алгоритмы оптимизации=&lt;br /&gt;
# {{level|Линейное программирование}}&lt;br /&gt;
# {{level|Симплекс-метод}}&lt;br /&gt;
# {{level|Метод ветвей и границ}}&lt;br /&gt;
# {{level|Генетические алгоритмы}}&lt;br /&gt;
# {{level|Муравьиные алгоритмы}}&lt;br /&gt;
# {{level|Комбинированные алгоритмы}}&lt;br /&gt;
# {{level|Стохастическое двойственное динамическое программирование (SDDP)}}&lt;br /&gt;
=Алгоритмы машинного обучения=&lt;br /&gt;
# {{level|Алгоритм k средних (k-means)}}&lt;br /&gt;
=Алгоритмы теории игр=&lt;br /&gt;
=Алгоритмы моделирования квантовых систем=&lt;br /&gt;
# {{level|Алгоритмы моделирования квантовых вычислений}}&lt;br /&gt;
## {{level|Однокубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Двухкубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Моделирование квантового преобразования Фурье}}&lt;br /&gt;
=Алгоритмы решения уравнений математической физики=&lt;br /&gt;
# {{level|Уравнение Пуассона, решение дискретным преобразованием Фурье}}&lt;br /&gt;
=Другие алгоритмы=&lt;br /&gt;
&lt;br /&gt;
[[en:Algorithm classification]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Алгоритмы|*]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25317</id>
		<title>Классификация алгоритмов</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25317"/>
		<updated>2018-02-02T10:18:34Z</updated>

		<summary type="html">&lt;p&gt;Frolov: /* Нейронные сети */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
=Векторные операции=&lt;br /&gt;
# {{level|Суммирование сдваиванием}}&lt;br /&gt;
## {{level|Нахождение суммы элементов массива сдваиванием}}&lt;br /&gt;
## {{level|Нахождение частных сумм элементов массива сдваиванием}}&lt;br /&gt;
# {{level|Равномерная норма вектора, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Скалярное произведение векторов, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Последовательно-параллельный метод суммирования}}&lt;br /&gt;
=Матрично-векторные операции=&lt;br /&gt;
== Умножения неособенных матриц на вектор ==&lt;br /&gt;
# {{level|Умножение плотной неособенной матрицы на вектор (последовательный вещественный вариант)}}&lt;br /&gt;
== Умножения матриц специального вида на вектор ==&lt;br /&gt;
# {{level|Преобразование Фурье}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для составной размерности}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Простой алгоритм Кули-Тьюки быстрого преобразования Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Быстрое преобразование Фурье для чётных степеней двойки}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для составной размерности с небольшими простыми делителями (2,3,5,7)}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для простой размерности}}&lt;br /&gt;
&lt;br /&gt;
=Матричные операции=&lt;br /&gt;
# {{level|Умножение плотных матриц}}&lt;br /&gt;
## {{level|Перемножение плотных неособенных матриц (последовательный вещественный вариант)}}&lt;br /&gt;
## {{level|Метод Штрассена}}&lt;br /&gt;
=Разложения матриц=&lt;br /&gt;
{{level|Задача разложения матриц}}&lt;br /&gt;
# {{level|Треугольные разложения}}&lt;br /&gt;
## {{level|Метод Гаусса (нахождение LU-разложения)}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса без перестановок}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса}}&lt;br /&gt;
#### {{level|Компактная схема метода Гаусса и её модификации}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для плотной матрицы}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы и её модификации}}&lt;br /&gt;
###### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы, последовательный вариант}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Последовательно-параллельный алгоритм для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса с перестановками}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по столбцу}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по строке}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по главной диагонали}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по всей матрице}}&lt;br /&gt;
## {{level|Метод Холецкого (нахождение симметричного треугольного разложения)}}&lt;br /&gt;
### {{level|Разложение Холецкого (метод квадратного корня)}} базовый точечный вещественный вариант для плотной симметричной положительно-определённой матрицы&lt;br /&gt;
# {{level|Известные треугольные разложения для матриц специального вида}}&lt;br /&gt;
# {{level|Унитарно-треугольные разложения}}&lt;br /&gt;
## {{level|QR-разложения плотных неособенных матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Гивенса (вращений) QR-разложения квадратной матрицы (вещественный точечный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) QR-разложения квадратной матрицы, вещественный точечный вариант}}&lt;br /&gt;
### {{level|Метод ортогонализации}}&lt;br /&gt;
#### {{level|Классический метод ортогонализации}}&lt;br /&gt;
#### {{level|Метод ортогонализации с переортогонализацией}}&lt;br /&gt;
### {{level|Метод треугольного разложения матрицы Грама}}&lt;br /&gt;
## {{level|Методы QR-разложения плотных хессенберговых матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
# {{level|Подобные разложения}}&lt;br /&gt;
## {{level|Подобные разложения на унитарные и хессенберговы матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
## {{level|Симметричные разложения на унитарные и трёхдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к трёхдиагональной форме}}&lt;br /&gt;
## {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
# {{level|Неподобные унитарные разложения}}&lt;br /&gt;
## {{level|Неподобные разложения на унитарные и двухдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
## {{level|Разложения на унитарные и диагональные матрицы}}&lt;br /&gt;
### {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
#### {{level|Методы нахождения сингулярных чисел двухдиагональных матриц}}&lt;br /&gt;
##### {{level|Алгоритм dqds нахождения сингулярных чисел двухдиагональной матрицы}}&lt;br /&gt;
###### {{level|Итерация алгоритма dqds}}&lt;br /&gt;
=Решение систем линейных уравнений=&lt;br /&gt;
# {{level|Прямые методы решения СЛАУ}}&lt;br /&gt;
## {{level|Linpack benchmark}}&lt;br /&gt;
## {{level|Методы решения СЛАУ с матрицами специального вида}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с треугольными матрицами}}&lt;br /&gt;
#### {{level|Прямая подстановка (вещественный вариант)|Прямая подстановка}}&lt;br /&gt;
#### {{level|Обратная подстановка (вещественный вариант)|Обратная подстановка}}&lt;br /&gt;
#### {{level|Методы решения СЛАУ с двудиагональными матрицами}}&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант обратной подстановки}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с трёхдиагональными матрицами}}&lt;br /&gt;
#### {{level|Методы, основанные на стандартном LU-разложении матрицы}}&lt;br /&gt;
##### {{level|Прогонка}}&lt;br /&gt;
###### {{level|Прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Классическая монотонная прогонка, повторный вариант}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант решения трёхдиагональной СЛАУ с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Метод редукции}}&lt;br /&gt;
###### {{level|Полный метод редукции}}&lt;br /&gt;
###### {{level|Повторный метод редукции для новой правой части}}&lt;br /&gt;
##### {{level|Встречная прогонка}}&lt;br /&gt;
###### {{level|Встречная прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Повторная встречная прогонка, точечный вариант}}&lt;br /&gt;
##### {{level|Метод циклической редукции}}&lt;br /&gt;
###### {{level|Полный метод циклической редукции}}&lt;br /&gt;
###### {{level|Повторный метод циклической редукции для новой правой части}}&lt;br /&gt;
##### {{level|Метод окаймления}}&lt;br /&gt;
### Методы решения СЛАУ с блочно-треугольными матрицами&lt;br /&gt;
#### {{level|Блочная прямая подстановка (вещественный вариант)|Блочная прямая подстановка}}&lt;br /&gt;
#### {{level|Блочная обратная подстановка (вещественный вариант)|Блочная обратная подстановка}}&lt;br /&gt;
#### Методы решения СЛАУ с блочно-двухдиагональными матрицами&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с блочно-двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант обратной подстановки для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с блочно-трёхдиагональными матрицами}}&lt;br /&gt;
#### Методы, основанные на стандартном LU-разложении матрицы&lt;br /&gt;
##### {{level|Блочная прогонка}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант решения с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Встречная прогонка, блочный вариант}}&lt;br /&gt;
##### {{level|Блочный метод циклической редукции}}&lt;br /&gt;
##### {{level|Блочный метод окаймления}}&lt;br /&gt;
## {{level|Решения СЛАУ с матрицами специального вида, имеющими известные обратные матрицы}}&lt;br /&gt;
# Итерационные методы решения СЛАУ&lt;br /&gt;
## {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
## {{level|Стабилизированный метод бисопряженных градиентов (BiCGStab)}}&lt;br /&gt;
## {{level|Алгоритм_Качмажа}}&lt;br /&gt;
=Решение систем нелинейных уравнений=&lt;br /&gt;
# {{level|Метод Ньютона для систем нелинейных уравнений}}&lt;br /&gt;
=Решения спектральных задач=&lt;br /&gt;
# {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
## {{level|QR-алгоритм}}&lt;br /&gt;
### {{level|QR-алгоритм, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|QR-алгоритм для хессенберговой матрицы, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для симметричных матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для комплексных эрмитовых матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для решения спектральной задачи у симметричных матриц}}&lt;br /&gt;
### {{level|Классический метод Якоби (вращений) для симметричных матриц с выбором по всей матрице}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением и барьерами}}&lt;br /&gt;
## {{level|Метод Ланцоша}}&lt;br /&gt;
### {{level|Алгоритм Ланцоша для точной арифметики (без переортогонализации)}}&lt;br /&gt;
# {{level|Частичная спектральная задача}}&lt;br /&gt;
## {{level|Метод бисекций}}&lt;br /&gt;
# {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для нахождения сингулярных значений неособенных матриц}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для нахождения сингулярных значений с циклическим перебором}}&lt;br /&gt;
### {{level|Метод Якоби для нахождения сингулярных значений со специальным подбором вращений}}&lt;br /&gt;
## {{level|QR-алгоритм в приложении к сингулярному разложению}}&lt;br /&gt;
=Тесты производительности компьютеров=&lt;br /&gt;
# {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
# {{level|Linpack benchmark}}&lt;br /&gt;
&lt;br /&gt;
=Алгебра многочленов=&lt;br /&gt;
# {{level|Схема Горнера, вещественная версия, последовательный вариант}}&lt;br /&gt;
=Численные методы интегрирования=&lt;br /&gt;
# {{level|Квадратурные формулы}}&lt;br /&gt;
# {{level|Квадратурные (кубатурные) методы численного интегрирования по отрезку (многомерному кубу)}}&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод прямоугольников|Метод прямоугольников]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод трапеций|Метод трапеций]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод парабол (метод Симпсона)|Метод парабол (метод Симпсона)]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод Гаусса|Метод Гаусса]]&lt;br /&gt;
=Алгоритмы на графах=&lt;br /&gt;
# Обход графа&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}}&lt;br /&gt;
## {{level|Поиск в глубину (DFS)}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути от одной вершины (SSSP)}}&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}} (для невзвешенных графов)&lt;br /&gt;
## {{level|Алгоритм Дейкстры}}&lt;br /&gt;
## {{level|Алгоритм Беллмана-Форда}}&lt;br /&gt;
## {{level|Алгоритм Δ-шагания}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути для всех пар вершин (APSP)}}&lt;br /&gt;
## {{level|Алгоритм Джонсона}}&lt;br /&gt;
## {{level|Алгоритм Флойда-Уоршелла}}&lt;br /&gt;
# {{level|Поиск транзитивного замыкания орграфа}}&lt;br /&gt;
## {{level|Алгоритм Пурдома}}&lt;br /&gt;
# {{level|Определение диаметра графа}}&lt;br /&gt;
# {{level|Построение минимального остовного дерева (MST)}}&lt;br /&gt;
## {{level|Алгоритм Борувки}}&lt;br /&gt;
## {{level|Алгоритм Крускала}}&lt;br /&gt;
## {{level|Алгоритм Прима}}&lt;br /&gt;
## {{level|Алгоритм GHS}}&lt;br /&gt;
# {{level|Поиск изоморфных подграфов}}&lt;br /&gt;
## {{level|Алгоритм Ульмана}}&lt;br /&gt;
## {{level|Алгоритм VF2}}&lt;br /&gt;
# {{level|Связность в графах}}&lt;br /&gt;
## {{level|Алгоритм Шилоаха-Вишкина поиска компонент связности}}&lt;br /&gt;
## {{level|Система непересекающихся множеств}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм DCSC поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна-Вишкина поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска «мостов» в графе}}&lt;br /&gt;
## {{level|Определение вершинной связности графа}}&lt;br /&gt;
## {{level|Алгоритм Габова определения рёберной связности графа}}&lt;br /&gt;
# {{level|Поиск максимального потока в транспортной сети}}&lt;br /&gt;
## {{level|Алгоритм Форда-Фалкерсона}}&lt;br /&gt;
## {{level|Алгоритм проталкивания предпотока}}&lt;br /&gt;
# {{level|Поиск потока минимальной стоимости в транспортной сети}}&lt;br /&gt;
# {{level|Задача о назначениях}}&lt;br /&gt;
## {{level|Венгерский алгоритм}}&lt;br /&gt;
## {{level|Алгоритм аукциона}}&lt;br /&gt;
## {{level|Алгоритм Гопкрофта-Карпа}}&lt;br /&gt;
# {{level|Вычисление betweenness centrality|Вычисление центральности вершин}}&lt;br /&gt;
=Алгоритмы поиска=&lt;br /&gt;
# {{level|Линейный поиск - находит элемент в любом списке|Линейный поиск}}, &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
# {{level|Двоичный поиск - находит элемент в отсортированном списке|Двоичный поиск}}, &amp;lt;math&amp;gt;O(\log(n))&amp;lt;/math&amp;gt;&lt;br /&gt;
=Алгоритмы сортировки=&lt;br /&gt;
# {{level|Сортировка с помощью двоичного дерева}}&lt;br /&gt;
# {{level|Сортировка пузырьком}}&lt;br /&gt;
# {{level|Сортировка слиянием (последовательный и параллельный варианты)}}&lt;br /&gt;
=Вычислительная геометрия=&lt;br /&gt;
# {{level|Поиск диаметра множества точек}}&lt;br /&gt;
# {{level|Построение выпуклой оболочки набора точек}}&lt;br /&gt;
# {{level|Триангуляция Делоне}}&lt;br /&gt;
# {{level|Диаграмма Вороного}}&lt;br /&gt;
# {{level|Принадлежность точки многоугольнику}}&lt;br /&gt;
# {{level|Пересечения выпуклых многоугольников}} - трудоёмкость &amp;lt;math&amp;gt;O(n_1 + n_2)&amp;lt;/math&amp;gt;&lt;br /&gt;
# {{level|Пересечение звёздных многоугольников}} - трудоёмкость &amp;lt;math&amp;gt;O(n_1 \cdot n_2)&amp;lt;/math&amp;gt;&lt;br /&gt;
=Компьютерная графика=&lt;br /&gt;
# {{level|Алгоритмы построения отрезка - алгоритмы для аппроксимации отрезка на дискретной графической поверхности}}&lt;br /&gt;
# {{level|Алгоритм определения видимых частей трёхмерной сцены}}&lt;br /&gt;
# {{level|Трассировка лучей - рендеринг реалистичных изображений}}&lt;br /&gt;
# {{level|Глобальное освещение - рассматривает прямое освещение и отражение от других объектов}}&lt;br /&gt;
=Криптографические алгоритмы=&lt;br /&gt;
# {{level|Метод встречи посередине}}&lt;br /&gt;
=Нейронные сети=&lt;br /&gt;
# {{level|Распознавание образов}}&lt;br /&gt;
## {{level|Распознавание текста}}&lt;br /&gt;
## {{level|Распознавание речи}}&lt;br /&gt;
## {{level|Распознавание лиц}}&lt;br /&gt;
&lt;br /&gt;
=Алгоритмы оптимизации=&lt;br /&gt;
# {{level|Линейное программирование}}&lt;br /&gt;
# {{level|Симплекс-метод}}&lt;br /&gt;
# {{level|Метод ветвей и границ}}&lt;br /&gt;
# {{level|Генетические алгоритмы}}&lt;br /&gt;
# {{level|Муравьиные алгоритмы}}&lt;br /&gt;
# {{level|Комбинированные алгоритмы}}&lt;br /&gt;
# {{level|Стохастическое двойственное динамическое программирование (SDDP)}}&lt;br /&gt;
=Алгоритмы машинного обучения=&lt;br /&gt;
# {{level|Алгоритм k средних (k-means)}}&lt;br /&gt;
=Алгоритмы теории игр=&lt;br /&gt;
=Алгоритмы моделирования квантовых систем=&lt;br /&gt;
# {{level|Алгоритмы моделирования квантовых вычислений}}&lt;br /&gt;
## {{level|Однокубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Двухкубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Моделирование квантового преобразования Фурье}}&lt;br /&gt;
=Алгоритмы решения уравнений математической физики=&lt;br /&gt;
# {{level|Уравнение Пуассона, решение дискретным преобразованием Фурье}}&lt;br /&gt;
=Другие алгоритмы=&lt;br /&gt;
&lt;br /&gt;
[[en:Algorithm classification]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Алгоритмы|*]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D1%81%D0%BF%D0%BE%D0%B7%D0%BD%D0%B0%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B8%D1%86&amp;diff=25316</id>
		<title>Распознавание лиц</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A0%D0%B0%D1%81%D0%BF%D0%BE%D0%B7%D0%BD%D0%B0%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B8%D1%86&amp;diff=25316"/>
		<updated>2018-02-02T10:17:41Z</updated>

		<summary type="html">&lt;p&gt;Frolov: Frolov переименовал страницу Распознование лиц в Распознавание лиц без оставления перенаправления&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Автор описания: &lt;br /&gt;
[https://algowiki-project.org/ru/Участник:Bagnikita&amp;lt;b&amp;gt;Н.Ю.Багров&amp;lt;/b&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
{{algorithm&lt;br /&gt;
| name              = Распознавание лиц&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(E(w,h,c)+n·d+n·\log n+n·\log k+CNN·{\rm const})&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(k)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;w·h·c&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;O(k)&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Распознавание лиц при помощи компьютера было впервые предложено в 1966 г. Woody Bledsoe и др. В первой системе использовался графический планшет, на котором было необходимо вручную отметить ключевые особенности на лице (брови, губы и тд). Система в дальнешейм использовала расстояния между этими точками для сравнения разных изображений. Поскольку требовалось много ручной работы, то оператор мог обработать около 40 изображений в час. В 1997 была создана система, которая непосредственно работала с видеоданными и могла применяться на практике. В дальшейшем с увеличением производительности вычислительных систем появились более качественные алгоритмы, но они заметно уступали человеку на данной задаче. С появлением высокороизводительных видеокарт в 2014 году появились системы&amp;lt;ref&amp;gt;Taigman Y. et al. Deepface: Closing the gap to human-level performance in face verification //Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. – 2014. – С. 1701-1708.&amp;lt;/ref&amp;gt;, точность которых уже превышала точность оператора (человека). Основное преимущество таких систем в том, что они могут обрабатывать большие объемы данных - производительность человека намного ниже (требуется несколько секунд на сравнение пары изображений). &lt;br /&gt;
&lt;br /&gt;
Задачу распознавания лиц можно разбить на несколько этапов:&lt;br /&gt;
&lt;br /&gt;
* обучение нейронной сети&lt;br /&gt;
* построение биометрического шаблона&lt;br /&gt;
* сравнение биометрических шаблонов&lt;br /&gt;
* поиск в базе и формирование результата&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм состоит из построения биометрических шаблонов (дескрипторов) по изображению и поиску заданного шаблона в базе уже вычисленных дескрипторов. &lt;br /&gt;
&lt;br /&gt;
В дальшейшем будем рассматривать только сверточные нейронные сети. Классические архитектуры нейронных сетей с полносвязными слоями неприменимы на практике для анализа изображений, поскольку количество параметров такой сети экспоненциально возрастает с размером входных данных и количеством слоев. В таких сетях каждый нейрон не связан со всеми нейронами предыдущего слоя, а домножается на некоторый коэффициент (ядро свертки) по всему изображению. Таким образом, каждый такой слой применяет операцию свертки ко входам со своими коэффициентами, что заметно уменьшает число весов в нейронной сети. Это позволяет уменьшить потребление памяти и эффект переобучения сети, который проявляется в том, что сеть хорошо работает на классификации элементов обучающей выборки и хуже на валидационной.&lt;br /&gt;
&lt;br /&gt;
==== Обучение сверточной нейронной сети ====&lt;br /&gt;
&lt;br /&gt;
Для обучения нейронной сети используется стохастический градиентный спуск. Начальные веса сети устанавливаются случайными. Заметим, что существенное время занимают сверточные и полносвязные слои. Их можно свести к операции перемножения матриц следуюим образом:&lt;br /&gt;
* пусть размерность фильтра свертки &amp;lt;math&amp;gt;k·k&amp;lt;/math&amp;gt;&lt;br /&gt;
* скопируем блоки исходного изображения размером k·k в столбцы новой матрицы&lt;br /&gt;
* умножим эту матрицу на коэффициеты фильтра свертки&lt;br /&gt;
* полученная матрица будет результатом применения свертки к входному изображению&lt;br /&gt;
&lt;br /&gt;
Сложность задачи вычисления свертки зависит квадратично от размера фильтра и линейно от количества выходных данных.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;FeatureMap = A^{n, w · h} · B^{w · h, c · k^2}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;FeatureMap&amp;lt;/math&amp;gt; - результат применения свертки, а &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; - входное изображение и матрица весов слоя нейронной сети&lt;br /&gt;
&lt;br /&gt;
Существуют библиотеки, например, NVIDIA cuDNN&amp;lt;ref&amp;gt;https://developer.nvidia.com/cudnn&amp;lt;/ref&amp;gt;) которые решают данную задачу более эффективно. Например, свертки размером 3x3, 5x5 могут быть реализованы с использованием FFT (что работает на видеокарте быстрее, чем умножение матриц)&lt;br /&gt;
&lt;br /&gt;
==== Построение биометрического шаблона ====&lt;br /&gt;
&lt;br /&gt;
Будем называть биометрическим шаблоном вектор &amp;lt;math&amp;gt;{R}^d&amp;lt;/math&amp;gt;, который является представлением лица человека. Этот вектор получается после применения нейронной сети к изображению - в качестве такого вектора используют отклики с одного последних слоев нейронной сети. Для обеспечения возможности сравнивать между собой эти шаблоны вектор нормализуют.&lt;br /&gt;
&lt;br /&gt;
==== Сравнение биометрических шаблонов ====&lt;br /&gt;
&lt;br /&gt;
На предыдущем этапе был получен вектор значений &amp;lt;math&amp;gt;D={A}^d&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; - размерность дескриптора. Можно рассматривать достаточно много различных оценивающих функций (метриками их называть некорректно, т.к для них не всегда выполняется неравенство треугольника). Например, в качестве такой функции можно рассматривать cosine distance - косинус угла между векторами-признаками в d-мерном пространстве. Также достаточно часто используют &amp;lt;math&amp;gt;L_2&amp;lt;/math&amp;gt; метрику, либо более сложные контрукции, такие как JointBayesian&amp;lt;ref&amp;gt;Chen D. et al. Bayesian face revisited: A joint formulation //European Conference on Computer Vision. – Springer Berlin Heidelberg, 2012. – С. 566-579.&amp;lt;/ref&amp;gt;. У всех таких &amp;quot;метрик&amp;quot; есть преимущества и недостатки, например в &amp;lt;math&amp;gt;L_2&amp;lt;/math&amp;gt; можно легко проводить кластеризацию, тогда как в JointBayes и cosine metric нет. JointBayes можно дообучить на целевой выборке и повысить точность работы алгоритма.&lt;br /&gt;
&lt;br /&gt;
==== Поиск в базе и формирование результата ====&lt;br /&gt;
&lt;br /&gt;
Предположим, что для каждого человека в базе есть несколько фотографий. Тогда после выполнения операции сравнения биометрических шаблона изображения-запроса &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; и всех изображений в базе &amp;lt;math&amp;gt;G={g1,g2,...,gn}&amp;lt;/math&amp;gt; необходимо выбрать результат с максимальным значением оценивающей функции для данного человека. Т.е необходимо оставить в результате только уникальные по людям совпадения, выбрав при этом максимальное значение при удалении дубликатов по людям.&lt;br /&gt;
&lt;br /&gt;
После выполнения поиска в базе необходимо произвести нормализацию полученных значений оценивающей функции. В системах распознавания лиц обычно используют диапазон [0.0 - 1.0], где 0.0 означает минимальное сходство двух изображений лиц, а 1.0 максимальное.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Основные операции составляют построение биометрического шаблона, и поиск в базе.&lt;br /&gt;
&lt;br /&gt;
==== Построение биометрического шаблона ====&lt;br /&gt;
&lt;br /&gt;
Обозначим за &amp;lt;math&amp;gt;E(w,h,c)&amp;lt;/math&amp;gt; сложность операции вычисления биометричсекого шаблона по входному изображению лица человека. Поскольку сверточной нейронной сети с полносвязными слоями должно подаваться на вход изображения фиксированного размера, то необходимо изменить разрешение исходного изображения. В данной реализации алгоритма распознавания лиц используется билинейная интерполяция. Нейронная сеть получает на вход одноканальные изображения размером &amp;lt;math&amp;gt;100·100&amp;lt;/math&amp;gt;. Поэтому число необходимых операций (по операциям умножения) можно оценить как &amp;lt;math&amp;gt;O(w·h·c) + O(100 · 100 · 6) = O(w·h·c) + {\rm const}&amp;lt;/math&amp;gt;. На практике эта константа существенна, поскольку эти операции неоднородны по памяти.&lt;br /&gt;
&lt;br /&gt;
Непосредственно время работы нейронной сети существенно зависит от предложенной архитектуры (глубины сети, типов слоев и числа выходов каждого слоя).&lt;br /&gt;
&lt;br /&gt;
В реализации, предлолженной в практической части, используются более 10 сверточных слоев. Количестве операций можно оценить исходя из количества весов связей в нейронной сети - 80M и размера сверток &amp;lt;math&amp;gt;3·3&amp;lt;/math&amp;gt;. Оценка числа операций получилась ~2 GFlops на одну операцию применения нейросети (forward pass, 180ms). Она согласуется с реальным временем работы системы и производительностью системы на тесте linpack (130GFlops 4 cores) на ноутбуке.&lt;br /&gt;
&lt;br /&gt;
==== Поиск в базе ====&lt;br /&gt;
&lt;br /&gt;
Поиск в базе состоит из следующих частей:&lt;br /&gt;
* сравнение между собой двух дескрипторов изображений и вычисление метрики по базе&lt;br /&gt;
* агрегация результатов по людям&lt;br /&gt;
* сортировка по убыванию метрики сходства двух изображений&lt;br /&gt;
&lt;br /&gt;
===== Сравнение между собой двух дескрипторов изображений и вычисление метрики по базе =====&lt;br /&gt;
&lt;br /&gt;
В практической реализации алгоритма используется косинусовая метрика &amp;lt;math&amp;gt;M(x,y)=\frac{(x,y)}{\lVert x \lVert · \lVert y \lVert}&amp;lt;/math&amp;gt;. Заметим, что вектора &amp;lt;math&amp;gt;x, y&amp;lt;/math&amp;gt; уже нормированы на предыдущем этапе. Поэтому число операций для вычисления метрики составляет &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; умножений и &amp;lt;math&amp;gt;d - 1&amp;lt;/math&amp;gt; сложений, где &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; - размерность дескриптора. Если размер базы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, то число операций &amp;lt;math&amp;gt;O(n·d+n·(d-1))=O(n·d)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===== Агрегация результатов по людям =====&lt;br /&gt;
&lt;br /&gt;
Для выполнения операции unique (без использования дополнительной памяти) необходимо отсортировать элементы (person_id, match_score) массива по ключу person_id, а при совпадении по score. После этого можно за линейное время удалить дубликаты по person_id, оставив первый элемент (который будет максимальным по match_score). Сложность таких операций &amp;lt;math&amp;gt;O(n·\log n+n)=O(n·\log n)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===== Cортировка по убыванию метрики сходства двух изображений =====&lt;br /&gt;
&lt;br /&gt;
Финальная сортировка по match_score будет выполнена за &amp;lt;math&amp;gt;O(n·\log k)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество результатов в выдаче. Обычно на практике число &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; не более 1000, поскольку обработка результата чаще всего производится вручную оператором (человеком).&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм содержит вычисление биометричиского шаблона, который на этой странице не приводится. Используется готовая бибилотека распознавания лиц [http://tevian.ru Tevian FaceSDK]. Предложенная параллельная реализация может работать с любой системой распознавания лиц, для которой выполнены следующие условия:&lt;br /&gt;
* известна метрика для сравнения&lt;br /&gt;
* можно получить дескрипторы (биометрические шаблоны) в явном виде&lt;br /&gt;
&lt;br /&gt;
Основная вычислительная сложность алгоритма связана с вычислением скалярных произведений и удалением повторных сопоставнений людей с выбором максимума.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм можно представить в виде следующего фрагмента псевдокода (он менее эффективный, чем предложенный выше. Эффективная реализация на c++):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;python&#039;&amp;gt;&lt;br /&gt;
desc = enroll(Image) # Image - изображение лица человека&lt;br /&gt;
matches = {}&lt;br /&gt;
for gallery_entry in G:&lt;br /&gt;
    if matches.get(gallery_entry.person_id, None) is None:&lt;br /&gt;
        matches[gallery_entry.person_id] = 0.0&lt;br /&gt;
    matches[gallery_entry.person_id] = max(matches[gallery_entry.person_id], match(desc, gallery_entry.descriptor))&lt;br /&gt;
matches = sorted(key = lambda x: x[1], matches.items())&lt;br /&gt;
return [x[0], applyMapping(x[1]) for x in matches]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Если рассматривать всю последовательность действий (построение шаблона, поиск в базе), то сложность алгоритма &amp;lt;math&amp;gt;O(E(w,h,c)+n·d+n·\log n+n·\log k+CNN·{\rm const})&amp;lt;/math&amp;gt;, где&lt;br /&gt;
*&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - число элементов в базе&lt;br /&gt;
*&amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; - размерность биометрического шаблона&lt;br /&gt;
*&amp;lt;math&amp;gt;E(w,h,c)&amp;lt;/math&amp;gt; - сложность обработки изображения размером (width·height·channels) до необходимого размера для нейросети&lt;br /&gt;
*&amp;lt;math&amp;gt;n·d&amp;lt;/math&amp;gt; - число операций для вычисления метрики между запросом и базой&lt;br /&gt;
*&amp;lt;math&amp;gt;n·\log n&amp;lt;/math&amp;gt; - сортировка результата для удаления дубликатов&lt;br /&gt;
*&amp;lt;math&amp;gt;n·\log k&amp;lt;/math&amp;gt; - сортировка результата по значению оценивающей функции&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
На первом шаге необходимо построить биометрический шаблон - поскольку внути алгоритма используется нейросеть, то эти вычисления обычно выполняются на видеокартах. В этом разделе подробно не рассматривается работа нейросети, поэтому можно считать, что ему соответствует одна вершина в графе.&lt;br /&gt;
&lt;br /&gt;
На втором шаге уже есть посчитанный биометрический шаблон (дескриптор) - его необходимо сопоставить в базой (пусть в ней &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; дескрипторов). Предположим, что доступно &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; исполнителей (процессов или потоков). Тогда возможна паралельная обработка &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; диапазонов базы размером &amp;lt;math&amp;gt;N/Q&amp;lt;/math&amp;gt;. Для каждого такого вычисления длина последовательной части &amp;lt;math&amp;gt;N/Q·d&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; - размерность дескриптора.&lt;br /&gt;
&lt;br /&gt;
На третьем шаге производится агрегация полученных результатов сопоставнения длины &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; с один общий список, отсортированный по убыванию меры сходства изображений. Здесь аналогично можно рассматривать параллельную сортировку на &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; вычислителях.&lt;br /&gt;
&lt;br /&gt;
Видно, что у алгоритма большой ресурс по возможности распараллеливания за счет возможности параллельной реализации практически любой его части.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Facerecognition-graph.png|thumb|center|700px|Рисунок 0. Граф параллельного алгоритма]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Сложность параллельного алгоритма, в предположении доступности q узлов: &amp;lt;math&amp;gt;O(k·\log k+q·(\log(k·q))^2+\frac{n}{q}·(d+\log(\frac{n}{q}))+\lambda·(k·\log(q)+q·(\log(q·k))^2))&amp;lt;/math&amp;gt;, где&lt;br /&gt;
* &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - размер базы изображений лиц&lt;br /&gt;
* &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; - размерность биометрического шаблона&lt;br /&gt;
* &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество результатов в выдаче (&amp;lt;math&amp;gt;k \ll n&amp;lt;/math&amp;gt;)&lt;br /&gt;
* &amp;lt;math&amp;gt;\lambda&amp;lt;/math&amp;gt; - флаг (0 или 1), нужно ли производить агрегацию результатов по людям&lt;br /&gt;
&lt;br /&gt;
Данная оценка получена с применением [http://darwin.bth.rwth-aachen.de/opus3/volltexte/2010/3502/pdf/3502.pdf параллельной сортировки].&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Входные данные:&lt;br /&gt;
* изображение &amp;lt;math&amp;gt;P\in{R}^{w·h·c}&amp;lt;/math&amp;gt;, где w,h,c - ширина, высота, число каналов&lt;br /&gt;
* база изображений лиц &amp;lt;math&amp;gt;G={g_1,g_2,g_3,...,g_n}, g_i\in{T}&amp;lt;/math&amp;gt;&lt;br /&gt;
* T - объект, состоящий из биометрического шаблона и порядкового номера человека&lt;br /&gt;
&lt;br /&gt;
Выходные данные:&lt;br /&gt;
* список &amp;lt;math&amp;gt;L={l_1,l_2,...,l_k}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;l_i\in{T}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; - объект, состоящий из числа (мера сходства двух изображений) и id (порядкового номера) человека в базе&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Основная проблема при реализации параллельной версии данного алгоритма - необходимость сортировки результатов. Исходя из размеров базы важно правильно выбрать количество вычислителей, поскольку в ряде случаев сортировка будет работать очень быстро (число элементов будет значительно меньше объема базы) и не потребуется реализация параллельной сортировки. &lt;br /&gt;
&lt;br /&gt;
Другая проблема - низкая вычислительная сложность самого алгоритма и большое число обращений к памяти. При реализации важно выделять память большими блоками для успешного чтения из кэша процессора.&lt;br /&gt;
&lt;br /&gt;
Из преимуществ данного алгоритма можно назвать низкую нагрузку на сеть при обмене данными, возможность работы на множестве систем (MPI, hadoop и тд), посколько объем данных, передаваемых между узлами небольшой. Для практической реализации не требуется использования специальных коммуникаций с низкой задержкой (обмены происходят достаточно редко, время доставки сообщений не критично).&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Построение биометрических шаблонов выполнено при помощи библиотеки распознавания лиц Tevian FaceSDK&amp;lt;ref&amp;gt;http://tevian.ru/product/facesdk&amp;lt;/ref&amp;gt;. В этом разделе приводится эффективность параллельной реализации сравнения изображени лица с некоторой базой лиц. &lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В текущей версии алгоритма применяется векторизация с использованием FMA3 инструкций, что позволяет значительно ускорить работу программы. При выполнении оценки производительности системы использовалась простая реализация cosine метрики (цикл для вычисления скалярного произведения) и с использованием FMA инстукций.&lt;br /&gt;
&lt;br /&gt;
Псевдокод операции mm256_fmadd (intel)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;fortran&amp;quot;&amp;gt;&lt;br /&gt;
FOR j := 0 to 7&lt;br /&gt;
    i := j*32&lt;br /&gt;
    dst[i+31:i] := (a[i+31:i] * b[i+31:i]) + c[i+31:i]&lt;br /&gt;
ENDFOR&lt;br /&gt;
dst[MAX:256] := 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В результате тестирования (процессор 6300HQ, ноутбук, база 30М биометрических шаблонов) однопоточной программы было установлено, что FMA3 версия в 5 раз быстрее по сравнению с обычным циклом (880ms vs 4600ms). Все дальнейшие экспериенты будут проводиться с FMA3 реализацией (если не указано иначе). Компиляция производится gcc 5.4 с флагами &amp;lt;code&amp;gt;-O3 -static-libgcc -static-libstdc++ -mavx -mavx2 -mfma -fopenmp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ниже приводится пример кода для вычисления дескриптора:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
pp = descriptor;&lt;br /&gt;
pg = gallery_ptr;&lt;br /&gt;
__m256 sum = _mm256_setzero_ps();&lt;br /&gt;
for(int j = 0; j &amp;lt; 16; ++j, pp += 8, pg += 8) {&lt;br /&gt;
    sum = _mm256_fmadd_ps(_mm256_load_ps(pp), _mm256_load_ps(pg), sum);&lt;br /&gt;
}&lt;br /&gt;
const __m128 x128 = _mm_add_ps(_mm256_extractf128_ps(sum, 1), _mm256_castps256_ps128(sum));&lt;br /&gt;
const __m128 x64 = _mm_add_ps(x128, _mm_movehl_ps(x128, x128));&lt;br /&gt;
const __m128 x32 = _mm_add_ss(x64, _mm_shuffle_ps(x64, x64, 0x55));&lt;br /&gt;
score = _mm_cvtss_f32(x32);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для сортировки результатов и агрегации по людям используются функции из stl - вполне возможно, что можно реализовать более эффективно.&lt;br /&gt;
&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
&lt;br /&gt;
Данный алгоритм производит вычисления скалярных произведений, поэтому на этом этапе все обращения к памяти обладают свойством локальности. Биометрический шаблон полностью помещается в кэш память любого современного процессора, данные под базу изобрежний выделяются в виде больших непрерывных блоков памяти. &lt;br /&gt;
&lt;br /&gt;
Сортировка результатов также обладает свойством локальности, поскольку массив хранится непрерывно в памяти. При небольшом размере базы (1-10M изображений) он может полностью поместиться в кэш памяти.&lt;br /&gt;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм построен по модели map/reduce. В map происходит вычисление скалярных произведений дескриптора-запроса и элементов базы. В reduce происходит сортировка и удаление повторов.&lt;br /&gt;
&lt;br /&gt;
Исходная база разбирается на блоки (chunks) по 1M биометрических шаблонов, каждый такой блок обрабатывается независимо в своем потоке (или процессе). Важно то, что в результате работы алгоритма на каждом блоке в результате получается небольшой объем данных: &amp;lt;math&amp;gt;k·({\rm sizeof}({\rm float})+{\rm sizeof}({\rm int32\_t}))&amp;lt;/math&amp;gt;. Такие данные можно легко передать по медленному каналу с высокой задержкой (не требуется использование InfiniBand). Также данный алгоритм можно запускать как на MPI кластерах с передачей сообщений, так и на hadoop кластерах.&lt;br /&gt;
&lt;br /&gt;
Для сортировки результатов можно применять параллельную сортировку (которая ассимптотически) лучше, но на практике это не нужно из-за разумного ограчения на число результатов. Часто их просматривает вручную оператор системы, поэтому больше нескольких тысяч ставить бессмысленно.&lt;br /&gt;
&lt;br /&gt;
В текущей версии системы реализован параллелизм с использованием OpenMP. Вместо OpenMP можно использовать любой метод многопоточной обработки данных, например, pthread. Сложность модификации кода минимальна, поскольку map/reduce подразумевает отсутствие зависимостей между различными блоками.&lt;br /&gt;
&lt;br /&gt;
При реализации распределенной системы можно размещать разные chunks на вычислительных узлах и агрегировать результаты. Из-за небольшого размера сообщений такую систему можно легко построить в ЦОД без использования специальных коммуникаций на обычных серверах.&lt;br /&gt;
&lt;br /&gt;
CUDA можно применять на этапе построения биометрического шаблона, что позволит значительно ускорить построение дескрипторов (например, во время добавления в базу большого числа изображений новых людей).&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
В дальнейшем во всех тестах будет использоваться сервер с 2x E5-2683v3 128GB RAM. MOPS - миллионы операций (для map -скалярное произведение, reduce - сортировка) в секунду.&lt;br /&gt;
&lt;br /&gt;
Каждый тест проводится 20 раз, результаты усредняются.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Facerecognition-matcher.png|thumb|center|700px|Рисунок 1. Результаты работы map функции в зависимости от размера базы и числа потоков в openmp]]&lt;br /&gt;
&lt;br /&gt;
Т.к. скорость чтения из DDR4 памяти 17GB/s (на практике немного меньше), то с 4 каналов памяти (по 2 на каждый процессор) нельзя считывать быстрее, чем 68GB/s. База 200M дескрипторов занимает 98GB ram, поэтому время 2300ms для вычисления всех скалярных произведений близко к нижней границе. Дальнейшее увеличение числа потоков на одном сервере не будет приводить к существенному ускорению работы программы.&lt;br /&gt;
&lt;br /&gt;
Результаты работы reduce функции в завсимости от размера базы и числа потоков в openmp:&lt;br /&gt;
[[Файл:Facerecognition_reduce.png|thumb|center|700px|Рисунок 2. Результаты работы reduce функции в зависимости от размера базы и числа потоков в openmp]]&lt;br /&gt;
&lt;br /&gt;
Reduce этап лучше распараллеливается, поскольку в нем намного меньше число обращений к памяти. Его также можно ускорять, например подбирая оптимальный размер блока (chunk size). Для базы в 200M лиц лучшая скорость 1400ms (достигается на 20 потоках, дальше ускорения нет).&lt;br /&gt;
&lt;br /&gt;
Значительное ускорение при размере базы в 100M (значение близко к 64GB) возникает предположительно из-за использование памяти второго процессора (суммарно 4 канала памяти, а не 2).&lt;br /&gt;
&lt;br /&gt;
[[Файл:Facerecognition_overall.png|thumb|center|700px|Рисунок 3. Суммарная скорость работы системы в зависимости от размера базы и числа потоков в openmp]]&lt;br /&gt;
&lt;br /&gt;
==== Исследование влияния HyperThreading на работу алгоритма ====&lt;br /&gt;
&lt;br /&gt;
Поскольку могут возникать проблемы из-за низкой пропускной способности памяти, можно предположить, что HyperThreading позволит ускорить работу программы. Во время ожидания данных из памяти может быть задействован второй вычислитель в ядре.&lt;br /&gt;
&lt;br /&gt;
Синяя точка на графике - лучший результат c HyperThreading, красная - HyperThreading выключен.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Facerecognition-ht-matcher.png|thumb|center|700px|Рисунок 4. Результаты работы map функции в зависимости от размера базы и числа потоков в openmp (10-56 потоков)]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Facerecognition-ht-reduce.png|thumb|center|700px|Рисунок 5. Результаты работы reduce функции в зависимости от размера базы и числа потоков в openmp (10-56 потоков)]]&lt;br /&gt;
&lt;br /&gt;
[[Файл:Facerecognition-ht-overall.png|thumb|center|700px|Рисунок 6. Суммарная скорость работы системы в зависимости от размера базы и числа потоков в openmp (10-56 потоков)]]&lt;br /&gt;
&lt;br /&gt;
Видно, что включение HyperThreading повышает производительность системы. Для reduce шага это ускорение значительно.&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Эксперименты проводились на сервере с 2x E5-2683v3 128GB RAM. &lt;br /&gt;
&lt;br /&gt;
Для семейства процессоров на ядре haswell возможно выполнение 32 операций умножения+сложения за такт.&lt;br /&gt;
&lt;br /&gt;
Поэтому пиковая производительность &amp;lt;math&amp;gt;R_{\rm peak}=2·14·32·2.0·10^9&amp;lt;/math&amp;gt;, где&lt;br /&gt;
* 2 - число процессоров&lt;br /&gt;
* 14 - количество ядер на каждом из процессоров&lt;br /&gt;
* 32 - количество операций за один такт&lt;br /&gt;
* &amp;lt;math&amp;gt;2.0·10^9&amp;lt;/math&amp;gt; - частота ядра без turbo boost&lt;br /&gt;
&lt;br /&gt;
FLOPS алгоритма &amp;lt;math&amp;gt;k=100·10^6·128·2&amp;lt;/math&amp;gt;, где&lt;br /&gt;
* &amp;lt;math&amp;gt;100·10^6&amp;lt;/math&amp;gt; - число операций в секунду&lt;br /&gt;
* 128·2 - количество действий, необходимых для проведения одного сравнения&lt;br /&gt;
&lt;br /&gt;
Эффективность для map = &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; / peak = 0.014 (1.42%)&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
Данный алгоритм должен хорошо работать как на суперкомпьютерах со специализированной сетевой частью, так и на кластерах серверов с 1/10G Ethernet за счет низкой частоты обменов. Также при необходимость его можно использовать на мобильных рабочих станциях (ноутбуках) и специализированных серверах (4x xeon E7-8XXX), которые смогут обрабатывать в реальном времени большие объемы данных (например, биометрические для всех людей в стране).&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Системы распознавания лиц редко бывают открытыми (или они низкого качества), поэтому известных распределенных систем распознавания лиц мало. Такие системы часто создаются под отдельный проект и их нельзя купить как &amp;quot;коробочное&amp;quot; решение.&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
[[Категория:Нейронные сети]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25315</id>
		<title>Классификация алгоритмов</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25315"/>
		<updated>2018-02-02T10:13:56Z</updated>

		<summary type="html">&lt;p&gt;Frolov: /* Умножения матриц специального вида на вектор */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
=Векторные операции=&lt;br /&gt;
# {{level|Суммирование сдваиванием}}&lt;br /&gt;
## {{level|Нахождение суммы элементов массива сдваиванием}}&lt;br /&gt;
## {{level|Нахождение частных сумм элементов массива сдваиванием}}&lt;br /&gt;
# {{level|Равномерная норма вектора, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Скалярное произведение векторов, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Последовательно-параллельный метод суммирования}}&lt;br /&gt;
=Матрично-векторные операции=&lt;br /&gt;
== Умножения неособенных матриц на вектор ==&lt;br /&gt;
# {{level|Умножение плотной неособенной матрицы на вектор (последовательный вещественный вариант)}}&lt;br /&gt;
== Умножения матриц специального вида на вектор ==&lt;br /&gt;
# {{level|Преобразование Фурье}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для составной размерности}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Простой алгоритм Кули-Тьюки быстрого преобразования Фурье для степеней двойки}}&lt;br /&gt;
#### {{level|Быстрое преобразование Фурье для чётных степеней двойки}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для составной размерности с небольшими простыми делителями (2,3,5,7)}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для простой размерности}}&lt;br /&gt;
&lt;br /&gt;
=Матричные операции=&lt;br /&gt;
# {{level|Умножение плотных матриц}}&lt;br /&gt;
## {{level|Перемножение плотных неособенных матриц (последовательный вещественный вариант)}}&lt;br /&gt;
## {{level|Метод Штрассена}}&lt;br /&gt;
=Разложения матриц=&lt;br /&gt;
{{level|Задача разложения матриц}}&lt;br /&gt;
# {{level|Треугольные разложения}}&lt;br /&gt;
## {{level|Метод Гаусса (нахождение LU-разложения)}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса без перестановок}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса}}&lt;br /&gt;
#### {{level|Компактная схема метода Гаусса и её модификации}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для плотной матрицы}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы и её модификации}}&lt;br /&gt;
###### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы, последовательный вариант}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Последовательно-параллельный алгоритм для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса с перестановками}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по столбцу}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по строке}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по главной диагонали}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по всей матрице}}&lt;br /&gt;
## {{level|Метод Холецкого (нахождение симметричного треугольного разложения)}}&lt;br /&gt;
### {{level|Разложение Холецкого (метод квадратного корня)}} базовый точечный вещественный вариант для плотной симметричной положительно-определённой матрицы&lt;br /&gt;
# {{level|Известные треугольные разложения для матриц специального вида}}&lt;br /&gt;
# {{level|Унитарно-треугольные разложения}}&lt;br /&gt;
## {{level|QR-разложения плотных неособенных матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Гивенса (вращений) QR-разложения квадратной матрицы (вещественный точечный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) QR-разложения квадратной матрицы, вещественный точечный вариант}}&lt;br /&gt;
### {{level|Метод ортогонализации}}&lt;br /&gt;
#### {{level|Классический метод ортогонализации}}&lt;br /&gt;
#### {{level|Метод ортогонализации с переортогонализацией}}&lt;br /&gt;
### {{level|Метод треугольного разложения матрицы Грама}}&lt;br /&gt;
## {{level|Методы QR-разложения плотных хессенберговых матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
# {{level|Подобные разложения}}&lt;br /&gt;
## {{level|Подобные разложения на унитарные и хессенберговы матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
## {{level|Симметричные разложения на унитарные и трёхдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к трёхдиагональной форме}}&lt;br /&gt;
## {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
# {{level|Неподобные унитарные разложения}}&lt;br /&gt;
## {{level|Неподобные разложения на унитарные и двухдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
## {{level|Разложения на унитарные и диагональные матрицы}}&lt;br /&gt;
### {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
#### {{level|Методы нахождения сингулярных чисел двухдиагональных матриц}}&lt;br /&gt;
##### {{level|Алгоритм dqds нахождения сингулярных чисел двухдиагональной матрицы}}&lt;br /&gt;
###### {{level|Итерация алгоритма dqds}}&lt;br /&gt;
=Решение систем линейных уравнений=&lt;br /&gt;
# {{level|Прямые методы решения СЛАУ}}&lt;br /&gt;
## {{level|Linpack benchmark}}&lt;br /&gt;
## {{level|Методы решения СЛАУ с матрицами специального вида}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с треугольными матрицами}}&lt;br /&gt;
#### {{level|Прямая подстановка (вещественный вариант)|Прямая подстановка}}&lt;br /&gt;
#### {{level|Обратная подстановка (вещественный вариант)|Обратная подстановка}}&lt;br /&gt;
#### {{level|Методы решения СЛАУ с двудиагональными матрицами}}&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант обратной подстановки}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с трёхдиагональными матрицами}}&lt;br /&gt;
#### {{level|Методы, основанные на стандартном LU-разложении матрицы}}&lt;br /&gt;
##### {{level|Прогонка}}&lt;br /&gt;
###### {{level|Прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Классическая монотонная прогонка, повторный вариант}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант решения трёхдиагональной СЛАУ с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Метод редукции}}&lt;br /&gt;
###### {{level|Полный метод редукции}}&lt;br /&gt;
###### {{level|Повторный метод редукции для новой правой части}}&lt;br /&gt;
##### {{level|Встречная прогонка}}&lt;br /&gt;
###### {{level|Встречная прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Повторная встречная прогонка, точечный вариант}}&lt;br /&gt;
##### {{level|Метод циклической редукции}}&lt;br /&gt;
###### {{level|Полный метод циклической редукции}}&lt;br /&gt;
###### {{level|Повторный метод циклической редукции для новой правой части}}&lt;br /&gt;
##### {{level|Метод окаймления}}&lt;br /&gt;
### Методы решения СЛАУ с блочно-треугольными матрицами&lt;br /&gt;
#### {{level|Блочная прямая подстановка (вещественный вариант)|Блочная прямая подстановка}}&lt;br /&gt;
#### {{level|Блочная обратная подстановка (вещественный вариант)|Блочная обратная подстановка}}&lt;br /&gt;
#### Методы решения СЛАУ с блочно-двухдиагональными матрицами&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с блочно-двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант обратной подстановки для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с блочно-трёхдиагональными матрицами}}&lt;br /&gt;
#### Методы, основанные на стандартном LU-разложении матрицы&lt;br /&gt;
##### {{level|Блочная прогонка}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант решения с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Встречная прогонка, блочный вариант}}&lt;br /&gt;
##### {{level|Блочный метод циклической редукции}}&lt;br /&gt;
##### {{level|Блочный метод окаймления}}&lt;br /&gt;
## {{level|Решения СЛАУ с матрицами специального вида, имеющими известные обратные матрицы}}&lt;br /&gt;
# Итерационные методы решения СЛАУ&lt;br /&gt;
## {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
## {{level|Стабилизированный метод бисопряженных градиентов (BiCGStab)}}&lt;br /&gt;
## {{level|Алгоритм_Качмажа}}&lt;br /&gt;
=Решение систем нелинейных уравнений=&lt;br /&gt;
# {{level|Метод Ньютона для систем нелинейных уравнений}}&lt;br /&gt;
=Решения спектральных задач=&lt;br /&gt;
# {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
## {{level|QR-алгоритм}}&lt;br /&gt;
### {{level|QR-алгоритм, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|QR-алгоритм для хессенберговой матрицы, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для симметричных матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для комплексных эрмитовых матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для решения спектральной задачи у симметричных матриц}}&lt;br /&gt;
### {{level|Классический метод Якоби (вращений) для симметричных матриц с выбором по всей матрице}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением и барьерами}}&lt;br /&gt;
## {{level|Метод Ланцоша}}&lt;br /&gt;
### {{level|Алгоритм Ланцоша для точной арифметики (без переортогонализации)}}&lt;br /&gt;
# {{level|Частичная спектральная задача}}&lt;br /&gt;
## {{level|Метод бисекций}}&lt;br /&gt;
# {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для нахождения сингулярных значений неособенных матриц}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для нахождения сингулярных значений с циклическим перебором}}&lt;br /&gt;
### {{level|Метод Якоби для нахождения сингулярных значений со специальным подбором вращений}}&lt;br /&gt;
## {{level|QR-алгоритм в приложении к сингулярному разложению}}&lt;br /&gt;
=Тесты производительности компьютеров=&lt;br /&gt;
# {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
# {{level|Linpack benchmark}}&lt;br /&gt;
&lt;br /&gt;
=Алгебра многочленов=&lt;br /&gt;
# {{level|Схема Горнера, вещественная версия, последовательный вариант}}&lt;br /&gt;
=Численные методы интегрирования=&lt;br /&gt;
# {{level|Квадратурные формулы}}&lt;br /&gt;
# {{level|Квадратурные (кубатурные) методы численного интегрирования по отрезку (многомерному кубу)}}&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод прямоугольников|Метод прямоугольников]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод трапеций|Метод трапеций]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод парабол (метод Симпсона)|Метод парабол (метод Симпсона)]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод Гаусса|Метод Гаусса]]&lt;br /&gt;
=Алгоритмы на графах=&lt;br /&gt;
# Обход графа&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}}&lt;br /&gt;
## {{level|Поиск в глубину (DFS)}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути от одной вершины (SSSP)}}&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}} (для невзвешенных графов)&lt;br /&gt;
## {{level|Алгоритм Дейкстры}}&lt;br /&gt;
## {{level|Алгоритм Беллмана-Форда}}&lt;br /&gt;
## {{level|Алгоритм Δ-шагания}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути для всех пар вершин (APSP)}}&lt;br /&gt;
## {{level|Алгоритм Джонсона}}&lt;br /&gt;
## {{level|Алгоритм Флойда-Уоршелла}}&lt;br /&gt;
# {{level|Поиск транзитивного замыкания орграфа}}&lt;br /&gt;
## {{level|Алгоритм Пурдома}}&lt;br /&gt;
# {{level|Определение диаметра графа}}&lt;br /&gt;
# {{level|Построение минимального остовного дерева (MST)}}&lt;br /&gt;
## {{level|Алгоритм Борувки}}&lt;br /&gt;
## {{level|Алгоритм Крускала}}&lt;br /&gt;
## {{level|Алгоритм Прима}}&lt;br /&gt;
## {{level|Алгоритм GHS}}&lt;br /&gt;
# {{level|Поиск изоморфных подграфов}}&lt;br /&gt;
## {{level|Алгоритм Ульмана}}&lt;br /&gt;
## {{level|Алгоритм VF2}}&lt;br /&gt;
# {{level|Связность в графах}}&lt;br /&gt;
## {{level|Алгоритм Шилоаха-Вишкина поиска компонент связности}}&lt;br /&gt;
## {{level|Система непересекающихся множеств}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм DCSC поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна-Вишкина поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска «мостов» в графе}}&lt;br /&gt;
## {{level|Определение вершинной связности графа}}&lt;br /&gt;
## {{level|Алгоритм Габова определения рёберной связности графа}}&lt;br /&gt;
# {{level|Поиск максимального потока в транспортной сети}}&lt;br /&gt;
## {{level|Алгоритм Форда-Фалкерсона}}&lt;br /&gt;
## {{level|Алгоритм проталкивания предпотока}}&lt;br /&gt;
# {{level|Поиск потока минимальной стоимости в транспортной сети}}&lt;br /&gt;
# {{level|Задача о назначениях}}&lt;br /&gt;
## {{level|Венгерский алгоритм}}&lt;br /&gt;
## {{level|Алгоритм аукциона}}&lt;br /&gt;
## {{level|Алгоритм Гопкрофта-Карпа}}&lt;br /&gt;
# {{level|Вычисление betweenness centrality|Вычисление центральности вершин}}&lt;br /&gt;
=Алгоритмы поиска=&lt;br /&gt;
# {{level|Линейный поиск - находит элемент в любом списке|Линейный поиск}}, &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
# {{level|Двоичный поиск - находит элемент в отсортированном списке|Двоичный поиск}}, &amp;lt;math&amp;gt;O(\log(n))&amp;lt;/math&amp;gt;&lt;br /&gt;
=Алгоритмы сортировки=&lt;br /&gt;
# {{level|Сортировка с помощью двоичного дерева}}&lt;br /&gt;
# {{level|Сортировка пузырьком}}&lt;br /&gt;
# {{level|Сортировка слиянием (последовательный и параллельный варианты)}}&lt;br /&gt;
=Вычислительная геометрия=&lt;br /&gt;
# {{level|Поиск диаметра множества точек}}&lt;br /&gt;
# {{level|Построение выпуклой оболочки набора точек}}&lt;br /&gt;
# {{level|Триангуляция Делоне}}&lt;br /&gt;
# {{level|Диаграмма Вороного}}&lt;br /&gt;
# {{level|Принадлежность точки многоугольнику}}&lt;br /&gt;
# {{level|Пересечения выпуклых многоугольников}} - трудоёмкость &amp;lt;math&amp;gt;O(n_1 + n_2)&amp;lt;/math&amp;gt;&lt;br /&gt;
# {{level|Пересечение звёздных многоугольников}} - трудоёмкость &amp;lt;math&amp;gt;O(n_1 \cdot n_2)&amp;lt;/math&amp;gt;&lt;br /&gt;
=Компьютерная графика=&lt;br /&gt;
# {{level|Алгоритмы построения отрезка - алгоритмы для аппроксимации отрезка на дискретной графической поверхности}}&lt;br /&gt;
# {{level|Алгоритм определения видимых частей трёхмерной сцены}}&lt;br /&gt;
# {{level|Трассировка лучей - рендеринг реалистичных изображений}}&lt;br /&gt;
# {{level|Глобальное освещение - рассматривает прямое освещение и отражение от других объектов}}&lt;br /&gt;
=Криптографические алгоритмы=&lt;br /&gt;
# {{level|Метод встречи посередине}}&lt;br /&gt;
=Нейронные сети=&lt;br /&gt;
# {{level|Распознование образов}}&lt;br /&gt;
## {{level|Распознование текста}}&lt;br /&gt;
## {{level|Распознование речи}}&lt;br /&gt;
## {{level|Распознование лиц}}&lt;br /&gt;
=Алгоритмы оптимизации=&lt;br /&gt;
# {{level|Линейное программирование}}&lt;br /&gt;
# {{level|Симплекс-метод}}&lt;br /&gt;
# {{level|Метод ветвей и границ}}&lt;br /&gt;
# {{level|Генетические алгоритмы}}&lt;br /&gt;
# {{level|Муравьиные алгоритмы}}&lt;br /&gt;
# {{level|Комбинированные алгоритмы}}&lt;br /&gt;
# {{level|Стохастическое двойственное динамическое программирование (SDDP)}}&lt;br /&gt;
=Алгоритмы машинного обучения=&lt;br /&gt;
# {{level|Алгоритм k средних (k-means)}}&lt;br /&gt;
=Алгоритмы теории игр=&lt;br /&gt;
=Алгоритмы моделирования квантовых систем=&lt;br /&gt;
# {{level|Алгоритмы моделирования квантовых вычислений}}&lt;br /&gt;
## {{level|Однокубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Двухкубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Моделирование квантового преобразования Фурье}}&lt;br /&gt;
=Алгоритмы решения уравнений математической физики=&lt;br /&gt;
# {{level|Уравнение Пуассона, решение дискретным преобразованием Фурье}}&lt;br /&gt;
=Другие алгоритмы=&lt;br /&gt;
&lt;br /&gt;
[[en:Algorithm classification]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Алгоритмы|*]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25314</id>
		<title>Классификация алгоритмов</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25314"/>
		<updated>2018-02-02T10:10:19Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
=Векторные операции=&lt;br /&gt;
# {{level|Суммирование сдваиванием}}&lt;br /&gt;
## {{level|Нахождение суммы элементов массива сдваиванием}}&lt;br /&gt;
## {{level|Нахождение частных сумм элементов массива сдваиванием}}&lt;br /&gt;
# {{level|Равномерная норма вектора, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Скалярное произведение векторов, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Последовательно-параллельный метод суммирования}}&lt;br /&gt;
=Матрично-векторные операции=&lt;br /&gt;
== Умножения неособенных матриц на вектор ==&lt;br /&gt;
# {{level|Умножение плотной неособенной матрицы на вектор (последовательный вещественный вариант)}}&lt;br /&gt;
== Умножения матриц специального вида на вектор ==&lt;br /&gt;
# {{level|Преобразование Фурье}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для составной размерности}}&lt;br /&gt;
### {{level|Быстрое преобразование Фурье для степеней двойки}}&lt;br /&gt;
=Матричные операции=&lt;br /&gt;
# {{level|Умножение плотных матриц}}&lt;br /&gt;
## {{level|Перемножение плотных неособенных матриц (последовательный вещественный вариант)}}&lt;br /&gt;
## {{level|Метод Штрассена}}&lt;br /&gt;
=Разложения матриц=&lt;br /&gt;
{{level|Задача разложения матриц}}&lt;br /&gt;
# {{level|Треугольные разложения}}&lt;br /&gt;
## {{level|Метод Гаусса (нахождение LU-разложения)}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса без перестановок}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса}}&lt;br /&gt;
#### {{level|Компактная схема метода Гаусса и её модификации}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для плотной матрицы}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы и её модификации}}&lt;br /&gt;
###### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы, последовательный вариант}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Последовательно-параллельный алгоритм для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса с перестановками}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по столбцу}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по строке}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по главной диагонали}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по всей матрице}}&lt;br /&gt;
## {{level|Метод Холецкого (нахождение симметричного треугольного разложения)}}&lt;br /&gt;
### {{level|Разложение Холецкого (метод квадратного корня)}} базовый точечный вещественный вариант для плотной симметричной положительно-определённой матрицы&lt;br /&gt;
# {{level|Известные треугольные разложения для матриц специального вида}}&lt;br /&gt;
# {{level|Унитарно-треугольные разложения}}&lt;br /&gt;
## {{level|QR-разложения плотных неособенных матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Гивенса (вращений) QR-разложения квадратной матрицы (вещественный точечный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) QR-разложения квадратной матрицы, вещественный точечный вариант}}&lt;br /&gt;
### {{level|Метод ортогонализации}}&lt;br /&gt;
#### {{level|Классический метод ортогонализации}}&lt;br /&gt;
#### {{level|Метод ортогонализации с переортогонализацией}}&lt;br /&gt;
### {{level|Метод треугольного разложения матрицы Грама}}&lt;br /&gt;
## {{level|Методы QR-разложения плотных хессенберговых матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
# {{level|Подобные разложения}}&lt;br /&gt;
## {{level|Подобные разложения на унитарные и хессенберговы матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
## {{level|Симметричные разложения на унитарные и трёхдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к трёхдиагональной форме}}&lt;br /&gt;
## {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
# {{level|Неподобные унитарные разложения}}&lt;br /&gt;
## {{level|Неподобные разложения на унитарные и двухдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
## {{level|Разложения на унитарные и диагональные матрицы}}&lt;br /&gt;
### {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
#### {{level|Методы нахождения сингулярных чисел двухдиагональных матриц}}&lt;br /&gt;
##### {{level|Алгоритм dqds нахождения сингулярных чисел двухдиагональной матрицы}}&lt;br /&gt;
###### {{level|Итерация алгоритма dqds}}&lt;br /&gt;
=Решение систем линейных уравнений=&lt;br /&gt;
# {{level|Прямые методы решения СЛАУ}}&lt;br /&gt;
## {{level|Linpack benchmark}}&lt;br /&gt;
## {{level|Методы решения СЛАУ с матрицами специального вида}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с треугольными матрицами}}&lt;br /&gt;
#### {{level|Прямая подстановка (вещественный вариант)|Прямая подстановка}}&lt;br /&gt;
#### {{level|Обратная подстановка (вещественный вариант)|Обратная подстановка}}&lt;br /&gt;
#### {{level|Методы решения СЛАУ с двудиагональными матрицами}}&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант обратной подстановки}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с трёхдиагональными матрицами}}&lt;br /&gt;
#### {{level|Методы, основанные на стандартном LU-разложении матрицы}}&lt;br /&gt;
##### {{level|Прогонка}}&lt;br /&gt;
###### {{level|Прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Классическая монотонная прогонка, повторный вариант}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант решения трёхдиагональной СЛАУ с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Метод редукции}}&lt;br /&gt;
###### {{level|Полный метод редукции}}&lt;br /&gt;
###### {{level|Повторный метод редукции для новой правой части}}&lt;br /&gt;
##### {{level|Встречная прогонка}}&lt;br /&gt;
###### {{level|Встречная прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Повторная встречная прогонка, точечный вариант}}&lt;br /&gt;
##### {{level|Метод циклической редукции}}&lt;br /&gt;
###### {{level|Полный метод циклической редукции}}&lt;br /&gt;
###### {{level|Повторный метод циклической редукции для новой правой части}}&lt;br /&gt;
##### {{level|Метод окаймления}}&lt;br /&gt;
### Методы решения СЛАУ с блочно-треугольными матрицами&lt;br /&gt;
#### {{level|Блочная прямая подстановка (вещественный вариант)|Блочная прямая подстановка}}&lt;br /&gt;
#### {{level|Блочная обратная подстановка (вещественный вариант)|Блочная обратная подстановка}}&lt;br /&gt;
#### Методы решения СЛАУ с блочно-двухдиагональными матрицами&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с блочно-двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант обратной подстановки для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с блочно-трёхдиагональными матрицами}}&lt;br /&gt;
#### Методы, основанные на стандартном LU-разложении матрицы&lt;br /&gt;
##### {{level|Блочная прогонка}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант решения с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Встречная прогонка, блочный вариант}}&lt;br /&gt;
##### {{level|Блочный метод циклической редукции}}&lt;br /&gt;
##### {{level|Блочный метод окаймления}}&lt;br /&gt;
## {{level|Решения СЛАУ с матрицами специального вида, имеющими известные обратные матрицы}}&lt;br /&gt;
# Итерационные методы решения СЛАУ&lt;br /&gt;
## {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
## {{level|Стабилизированный метод бисопряженных градиентов (BiCGStab)}}&lt;br /&gt;
## {{level|Алгоритм_Качмажа}}&lt;br /&gt;
=Решение систем нелинейных уравнений=&lt;br /&gt;
# {{level|Метод Ньютона для систем нелинейных уравнений}}&lt;br /&gt;
=Решения спектральных задач=&lt;br /&gt;
# {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
## {{level|QR-алгоритм}}&lt;br /&gt;
### {{level|QR-алгоритм, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|QR-алгоритм для хессенберговой матрицы, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для симметричных матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для комплексных эрмитовых матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для решения спектральной задачи у симметричных матриц}}&lt;br /&gt;
### {{level|Классический метод Якоби (вращений) для симметричных матриц с выбором по всей матрице}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением и барьерами}}&lt;br /&gt;
## {{level|Метод Ланцоша}}&lt;br /&gt;
### {{level|Алгоритм Ланцоша для точной арифметики (без переортогонализации)}}&lt;br /&gt;
# {{level|Частичная спектральная задача}}&lt;br /&gt;
## {{level|Метод бисекций}}&lt;br /&gt;
# {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для нахождения сингулярных значений неособенных матриц}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для нахождения сингулярных значений с циклическим перебором}}&lt;br /&gt;
### {{level|Метод Якоби для нахождения сингулярных значений со специальным подбором вращений}}&lt;br /&gt;
## {{level|QR-алгоритм в приложении к сингулярному разложению}}&lt;br /&gt;
=Тесты производительности компьютеров=&lt;br /&gt;
# {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
# {{level|Linpack benchmark}}&lt;br /&gt;
&lt;br /&gt;
=Алгебра многочленов=&lt;br /&gt;
# {{level|Схема Горнера, вещественная версия, последовательный вариант}}&lt;br /&gt;
=Численные методы интегрирования=&lt;br /&gt;
# {{level|Квадратурные формулы}}&lt;br /&gt;
# {{level|Квадратурные (кубатурные) методы численного интегрирования по отрезку (многомерному кубу)}}&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод прямоугольников|Метод прямоугольников]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод трапеций|Метод трапеций]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод парабол (метод Симпсона)|Метод парабол (метод Симпсона)]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод Гаусса|Метод Гаусса]]&lt;br /&gt;
=Алгоритмы на графах=&lt;br /&gt;
# Обход графа&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}}&lt;br /&gt;
## {{level|Поиск в глубину (DFS)}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути от одной вершины (SSSP)}}&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}} (для невзвешенных графов)&lt;br /&gt;
## {{level|Алгоритм Дейкстры}}&lt;br /&gt;
## {{level|Алгоритм Беллмана-Форда}}&lt;br /&gt;
## {{level|Алгоритм Δ-шагания}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути для всех пар вершин (APSP)}}&lt;br /&gt;
## {{level|Алгоритм Джонсона}}&lt;br /&gt;
## {{level|Алгоритм Флойда-Уоршелла}}&lt;br /&gt;
# {{level|Поиск транзитивного замыкания орграфа}}&lt;br /&gt;
## {{level|Алгоритм Пурдома}}&lt;br /&gt;
# {{level|Определение диаметра графа}}&lt;br /&gt;
# {{level|Построение минимального остовного дерева (MST)}}&lt;br /&gt;
## {{level|Алгоритм Борувки}}&lt;br /&gt;
## {{level|Алгоритм Крускала}}&lt;br /&gt;
## {{level|Алгоритм Прима}}&lt;br /&gt;
## {{level|Алгоритм GHS}}&lt;br /&gt;
# {{level|Поиск изоморфных подграфов}}&lt;br /&gt;
## {{level|Алгоритм Ульмана}}&lt;br /&gt;
## {{level|Алгоритм VF2}}&lt;br /&gt;
# {{level|Связность в графах}}&lt;br /&gt;
## {{level|Алгоритм Шилоаха-Вишкина поиска компонент связности}}&lt;br /&gt;
## {{level|Система непересекающихся множеств}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм DCSC поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна-Вишкина поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска «мостов» в графе}}&lt;br /&gt;
## {{level|Определение вершинной связности графа}}&lt;br /&gt;
## {{level|Алгоритм Габова определения рёберной связности графа}}&lt;br /&gt;
# {{level|Поиск максимального потока в транспортной сети}}&lt;br /&gt;
## {{level|Алгоритм Форда-Фалкерсона}}&lt;br /&gt;
## {{level|Алгоритм проталкивания предпотока}}&lt;br /&gt;
# {{level|Поиск потока минимальной стоимости в транспортной сети}}&lt;br /&gt;
# {{level|Задача о назначениях}}&lt;br /&gt;
## {{level|Венгерский алгоритм}}&lt;br /&gt;
## {{level|Алгоритм аукциона}}&lt;br /&gt;
## {{level|Алгоритм Гопкрофта-Карпа}}&lt;br /&gt;
# {{level|Вычисление betweenness centrality|Вычисление центральности вершин}}&lt;br /&gt;
=Алгоритмы поиска=&lt;br /&gt;
# {{level|Линейный поиск - находит элемент в любом списке|Линейный поиск}}, &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
# {{level|Двоичный поиск - находит элемент в отсортированном списке|Двоичный поиск}}, &amp;lt;math&amp;gt;O(\log(n))&amp;lt;/math&amp;gt;&lt;br /&gt;
=Алгоритмы сортировки=&lt;br /&gt;
# {{level|Сортировка с помощью двоичного дерева}}&lt;br /&gt;
# {{level|Сортировка пузырьком}}&lt;br /&gt;
# {{level|Сортировка слиянием (последовательный и параллельный варианты)}}&lt;br /&gt;
=Вычислительная геометрия=&lt;br /&gt;
# {{level|Поиск диаметра множества точек}}&lt;br /&gt;
# {{level|Построение выпуклой оболочки набора точек}}&lt;br /&gt;
# {{level|Триангуляция Делоне}}&lt;br /&gt;
# {{level|Диаграмма Вороного}}&lt;br /&gt;
# {{level|Принадлежность точки многоугольнику}}&lt;br /&gt;
# {{level|Пересечения выпуклых многоугольников}} - трудоёмкость &amp;lt;math&amp;gt;O(n_1 + n_2)&amp;lt;/math&amp;gt;&lt;br /&gt;
# {{level|Пересечение звёздных многоугольников}} - трудоёмкость &amp;lt;math&amp;gt;O(n_1 \cdot n_2)&amp;lt;/math&amp;gt;&lt;br /&gt;
=Компьютерная графика=&lt;br /&gt;
# {{level|Алгоритмы построения отрезка - алгоритмы для аппроксимации отрезка на дискретной графической поверхности}}&lt;br /&gt;
# {{level|Алгоритм определения видимых частей трёхмерной сцены}}&lt;br /&gt;
# {{level|Трассировка лучей - рендеринг реалистичных изображений}}&lt;br /&gt;
# {{level|Глобальное освещение - рассматривает прямое освещение и отражение от других объектов}}&lt;br /&gt;
=Криптографические алгоритмы=&lt;br /&gt;
# {{level|Метод встречи посередине}}&lt;br /&gt;
=Нейронные сети=&lt;br /&gt;
# {{level|Распознование образов}}&lt;br /&gt;
## {{level|Распознование текста}}&lt;br /&gt;
## {{level|Распознование речи}}&lt;br /&gt;
## {{level|Распознование лиц}}&lt;br /&gt;
=Алгоритмы оптимизации=&lt;br /&gt;
# {{level|Линейное программирование}}&lt;br /&gt;
# {{level|Симплекс-метод}}&lt;br /&gt;
# {{level|Метод ветвей и границ}}&lt;br /&gt;
# {{level|Генетические алгоритмы}}&lt;br /&gt;
# {{level|Муравьиные алгоритмы}}&lt;br /&gt;
# {{level|Комбинированные алгоритмы}}&lt;br /&gt;
# {{level|Стохастическое двойственное динамическое программирование (SDDP)}}&lt;br /&gt;
=Алгоритмы машинного обучения=&lt;br /&gt;
# {{level|Алгоритм k средних (k-means)}}&lt;br /&gt;
=Алгоритмы теории игр=&lt;br /&gt;
=Алгоритмы моделирования квантовых систем=&lt;br /&gt;
# {{level|Алгоритмы моделирования квантовых вычислений}}&lt;br /&gt;
## {{level|Однокубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Двухкубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Моделирование квантового преобразования Фурье}}&lt;br /&gt;
=Алгоритмы решения уравнений математической физики=&lt;br /&gt;
# {{level|Уравнение Пуассона, решение дискретным преобразованием Фурье}}&lt;br /&gt;
=Другие алгоритмы=&lt;br /&gt;
&lt;br /&gt;
[[en:Algorithm classification]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Алгоритмы|*]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4_%D0%BE%D1%80%D1%82%D0%BE%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25306</id>
		<title>Классический метод ортогонализации</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4_%D0%BE%D1%80%D1%82%D0%BE%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25306"/>
		<updated>2018-01-20T12:33:10Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Классическая ортогонализация Грама-Шмидта&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(N^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;N^2&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;3N^2/2&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:DVIN|Инжелевская Дарья Валерьевна]] (свойства и структура алгоритмов), [[Участник:Frolov|А.В.Фролов]](общая редактура текста)&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритмов ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Процесс ортогонализации Грама-Шмидта — это один из алгоритмов, в которых на основе множества линейно независимых векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\;\mathbf {a} _{N}}&amp;lt;/math&amp;gt; строится множество ортогональных &amp;lt;math&amp;gt;{\displaystyle \mathbf {b}_{1},\;\ldots ,\;\mathbf {b} _{N}} &amp;lt;/math&amp;gt; или ортонормированных векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {e} _{1},\;\ldots ,\;\mathbf {e}_{N}} &amp;lt;/math&amp;gt;, причём так, что каждый вектор &amp;lt;math&amp;gt;{\displaystyle \mathbf {b} _{j}} &amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;{\displaystyle \mathbf {e} _{j}}&amp;lt;/math&amp;gt; может быть выражен линейной комбинацией векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\; \mathbf {a} _{j}}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Пусть имеются линейно независимые векторы &amp;lt;math&amp;gt;\mathbf{a}_1,\;\ldots,\;\mathbf{a}_N&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если определить оператор проекции следующим образом: &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b}}\,\mathbf{a} = {\langle \mathbf{a}, \mathbf{b} \rangle \over \langle \mathbf{b}, \mathbf{b}\rangle} \mathbf{b} ,&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
где &amp;lt;math&amp;gt;\langle \mathbf{a}, \mathbf{b} \rangle&amp;lt;/math&amp;gt; — скалярное произведение векторов &amp;lt;math&amp;gt;\mathbf{a}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\mathbf{b}&amp;lt;/math&amp;gt;, &lt;br /&gt;
&lt;br /&gt;
то классический процесс Грама — Шмидта выполняется следующим образом:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;&lt;br /&gt;
{\begin{array}{lclr}&lt;br /&gt;
{\mathbf  {b}}_{1}&amp;amp;=&amp;amp;{\mathbf  {a}}_{1}&amp;amp;(1)\\&lt;br /&gt;
{\mathbf  {b}}_{2}&amp;amp;=&amp;amp;{\mathbf  {a}}_{2}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{1}}}\,{\mathbf  {a}}_{2}&amp;amp;(2)\\&lt;br /&gt;
{\mathbf  {b}}_{3}&amp;amp;=&amp;amp;{\mathbf  {a}}_{3}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{1}}}\,{\mathbf  {a}}_{3}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{2}}}\,{\mathbf  {a}}_{3}&amp;amp;(3)\\&lt;br /&gt;
{\mathbf  {b}}_{4}&amp;amp;=&amp;amp;{\mathbf  {a}}_{4}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{1}}}\,{\mathbf  {a}}_{4}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{2}}}\,{\mathbf  {a}}_{4}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{3}}}\,{\mathbf  {a}}_{4}&amp;amp;(4)\\&lt;br /&gt;
&amp;amp;\vdots &amp;amp;&amp;amp;\\{\mathbf  {b}}_{N}&amp;amp;=&amp;amp;{\mathbf  {a}}_{N}-\displaystyle \sum _{{j=1}}^{{N-1}}{\mathbf  {proj}}_{{{\mathbf  {b}}_{j}}}\,{\mathbf  {a}}_{N}&amp;amp;(N)&lt;br /&gt;
\end{array}}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
На основе каждого вектора &amp;lt;math&amp;gt;\mathbf{b}_j \;(j = 1 \ldots N)&amp;lt;/math&amp;gt; может быть получен нормированный вектор: &amp;lt;math&amp;gt;\mathbf{e}_j = {\mathbf{b}_j\over \| \mathbf{b}_j \|_2}&amp;lt;/math&amp;gt; (у нормированного вектора направление будет таким же, как у исходного, а длина — единичной).&lt;br /&gt;
&lt;br /&gt;
Результаты процесса Грама — Шмидта:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{b}_1,\;\ldots,\;\mathbf{b}_N&amp;lt;/math&amp;gt; — система ортогональных векторов либо&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{e}_1,\;\ldots,\;\mathbf{e}_N&amp;lt;/math&amp;gt; — система ортонормированных векторов.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро последовательной версии метода ортогонализации Грамма-Шмидта можно составить из множественных (всего их &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt;) вычислений проекций : &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Данный алгоритм использует в качестве составных частей другие, более мелкие. Далее описание будет не в максимально детализированном виде (т.е. на уровне арифметических операций), а только на уровне его макроструктуры. Типичной макрооперацией, часто встречающиеся в алгоритме является оператор проекции векторов. Как записано и в описании ядра алгоритма, основную часть метода ортогонализации Грамма-Шмидта составляют множественные (всего их &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt;) вычисления оператора проекции.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Следующий алгоритм реализует нормализацию Грамма-Шмидта. Векторы &amp;lt;math&amp;gt;v_1,...,v_k&amp;lt;/math&amp;gt; заменяются набором ортонормированных векторов, которые имеют ту же линейную оболочку.&lt;br /&gt;
&lt;br /&gt;
[[File:Gram-Schmidt ortho.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
Вычислительная сложность этого &amp;lt;math&amp;gt;2Nk^2&amp;lt;/math&amp;gt; операции с плавающей точкой, где N - размерность векторов.&lt;br /&gt;
&lt;br /&gt;
Последовательность исполнения метода следующая:&lt;br /&gt;
&lt;br /&gt;
1. &amp;lt;math&amp;gt;\mathbf  {b}_{1}=\mathbf  {a}_{1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Далее для всех векторов &amp;lt;math&amp;gt;\mathbf  {b}_{i}&amp;lt;/math&amp;gt; для &amp;lt;math&amp;gt;i=2 ... N&amp;lt;/math&amp;gt; производится вычисление по следующей формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;{\mathbf  {b}}_{i}={\mathbf  {a}}_{i}-\displaystyle \sum _{{j=1}}^{{i-1}}{\mathbf  {proj}}_{{{\mathbf  {b}}_{j}}}\,{\mathbf  {a}}_{i}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
В ней на каждом шаге &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; по очереди вычисляются все &amp;lt;math&amp;gt;{\mathbf  {proj}}_{{{\mathbf  {b}}_{j}}}\,{\mathbf  {a}}_{i}&amp;lt;/math&amp;gt; для &amp;lt;math&amp;gt;j=1 ... i-1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Пример реализации на Python ====&lt;br /&gt;
&lt;br /&gt;
Функция работает для произвольного количества векторов любой размерности. При этом если количество векторов &amp;lt;math&amp;gt;\mathbf{a}_1,\;\ldots,\;\mathbf{a}_N&amp;lt;/math&amp;gt; больше их размерности или они линейно зависимы то функция возвращает максимально возможное число линейно независимых векторов &amp;lt;math&amp;gt;\mathbf{b}_1,\;\ldots,\;\mathbf{b}_n&amp;lt;/math&amp;gt;, а остальные векторы &amp;lt;math&amp;gt;\mathbf{b}_{n+1},\;\ldots,\;\mathbf{b}_N&amp;lt;/math&amp;gt; нулевые.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import random&lt;br /&gt;
&lt;br /&gt;
def GramSchmidt(*a):&lt;br /&gt;
    k=len(a[0])&lt;br /&gt;
    N=len(a);&lt;br /&gt;
    b = [[0] * k for i in range(N)]&lt;br /&gt;
    b[0]=a[0]&lt;br /&gt;
    for i in range(1,N):&lt;br /&gt;
        sum=a[i]&lt;br /&gt;
        for j in range(0,i):&lt;br /&gt;
            scolar_ab=0&lt;br /&gt;
            scolar_bb=0&lt;br /&gt;
            proj=[i for i in range(k)]&lt;br /&gt;
            for n in range(k):&lt;br /&gt;
                scolar_ab+=b[j][n]*a[i][n]&lt;br /&gt;
                scolar_bb+=b[j][n]*b[j][n]&lt;br /&gt;
            for n in range(k):&lt;br /&gt;
                proj[n]=(scolar_ab/scolar_bb)*b[j][n]&lt;br /&gt;
            for n in range(k):&lt;br /&gt;
                sum[n]-=proj[n]&lt;br /&gt;
        b[i]=sum&lt;br /&gt;
    return b;&lt;br /&gt;
&lt;br /&gt;
l1=[random.randrange(0,10) for i in range(3)]&lt;br /&gt;
l2=[random.randrange(0,10) for i in range(3)]&lt;br /&gt;
l3=[random.randrange(0,10) for i in range(3)]&lt;br /&gt;
print(l1,l2,l3)&lt;br /&gt;
print(GramSchmidt(l1,l2,l3))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Для построения ортогонального набора векторов в последовательном варианте требуется:&lt;br /&gt;
&lt;br /&gt;
При k=N:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt; делений,&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)(3N-1)}{2}&amp;lt;/math&amp;gt; сложений (вычитаний),&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{3N^2 (N-1)}{2}&amp;lt;/math&amp;gt; умножений.&lt;br /&gt;
&lt;br /&gt;
При k≠N&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt; делений,&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)(3k-1)}{2}&amp;lt;/math&amp;gt; сложений (вычитаний),&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{3Nk (N-1)}{2}&amp;lt;/math&amp;gt; умножений.&lt;br /&gt;
&lt;br /&gt;
При классификации по последовательной сложности, таким образом, ортогонализация Грамма-Шмидта относится к алгоритмам с кубической сложностью.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
Опишем граф алгоритма как аналитически, так и в виде рисунка.&lt;br /&gt;
&lt;br /&gt;
Граф алгоритма состоит из двух групп вершин, расположенных в целочисленных узлах двух областей.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Первая&#039;&#039;&#039; группа вершин расположена в двумерной области, соответствующая ей операция &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i} = {\langle \mathbf{a_i}, \mathbf{b_j} \rangle \over \langle \mathbf{b_j}, \mathbf{b_j}\rangle} \mathbf{b_j} ,&amp;lt;/math&amp;gt; . &lt;br /&gt;
&lt;br /&gt;
Естественно введённые координаты области таковы:&lt;br /&gt;
&lt;br /&gt;
i — меняется в диапазоне от 2 до N, принимая все целочисленные значения;&lt;br /&gt;
&lt;br /&gt;
j — меняется в диапазоне от 1 до i-1, принимая все целочисленные значения.&lt;br /&gt;
&lt;br /&gt;
Аргументы операции следующие:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_i&amp;lt;/math&amp;gt;:&lt;br /&gt;
элементы входных данных, а именно &amp;lt;math&amp;gt;a_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;b_j&amp;lt;/math&amp;gt;: &lt;br /&gt;
результат срабатывания операции, соответствующей вершине из второй группы, с координатой j.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вторая&#039;&#039;&#039; группа вершин расположена в двухмерной области, соответствующая ей операция  &amp;lt;math&amp;gt;a - b&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Естественно введённые координаты области таковы: &lt;br /&gt;
&lt;br /&gt;
i — меняется в диапазоне от 2 до N, принимая все целочисленные значения;&lt;br /&gt;
&lt;br /&gt;
j — меняется в диапазоне от 1 до i-1, принимая все целочисленные значения.&lt;br /&gt;
&lt;br /&gt;
Аргументы операции следующие:&lt;br /&gt;
&lt;br /&gt;
a:&lt;br /&gt;
&lt;br /&gt;
j=1 - входные данные &amp;lt;math&amp;gt;a_j&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
j&amp;gt;1 - результат срабатывания операции, соответствующей вершине из второй группы, с координатой j-1&lt;br /&gt;
&lt;br /&gt;
b: &lt;br /&gt;
&lt;br /&gt;
результат срабатывания операции, соответствующей вершине из первой группы, с координатой j&lt;br /&gt;
[[Файл:picture00001.jpg|мини|upright=2|centre|frame|Рис. 5. Граф алгоритма с отображением входных и выходных данных. Proj - вычисление оператора проекции, F - операция a-b, In - входные данные, Out - результаты.]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В параллельном варианте, в отличие от последовательного, можно параллельно производить вычитание соответствующего &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i}&amp;lt;/math&amp;gt; для всех &amp;lt;math&amp;gt;i=j+1..N&amp;lt;/math&amp;gt;. Параллельное же вычисление проекций соответствует другому алгоритму.&lt;br /&gt;
&lt;br /&gt;
При классификации по высоте (количество ярусов в ЯПФ ) ЯПФ, таким образом, ортогонализация Грамма-Шмидта относится к алгоритмам со сложностью &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При классификации по ширине (максимальное количество вершин в ярусе) ЯПФ его сложность будет &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: множества линейно независимых векторов  &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\;\mathbf {a} _{N}}&amp;lt;/math&amp;gt;, каждый из которых описывается &amp;lt;math&amp;gt;\mathbf{ a_i= [a^i_1, a^i_2, ..., a^i_k]}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения:&lt;br /&gt;
* вектора &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\;\mathbf {a} _{N}}&amp;lt;/math&amp;gt; линейно независимы, поэтому &amp;lt;math&amp;gt;k \geqslant N&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём входных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;Nk&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: множество ортогональных векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {b} _{1},\;\ldots ,\;\mathbf {b} _{N}} &amp;lt;/math&amp;gt;, каждый из которых описывается &amp;lt;math&amp;gt;\mathbf{ b_i= [b^i_1, b^i_2, ..., b^i_k]}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём выходных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;Nk&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Соотношение последовательной и параллельной сложности в случае неограниченных ресурсов, как хорошо видно, является линейным (отношение кубической к квадратичной).&lt;br /&gt;
&lt;br /&gt;
При этом вычислительная мощность алгоритма, как отношение числа операций к суммарному объему входных и выходных данных, также линейна.&lt;br /&gt;
&lt;br /&gt;
Алгоритм почти полностью детерминирован — единственность результата выполнения гарантирована, однако возможно накопление ошибок округления при использовании классического процесса Грама-Шмидта. &lt;br /&gt;
&lt;br /&gt;
Алгоритм является численно неустойчивым — ошибки округления могут привести к неортогональности полученных векторов.&lt;br /&gt;
&lt;br /&gt;
Процесс Грама — Шмидта может применяться также к бесконечной последовательности линейно независимых векторов.&lt;br /&gt;
&lt;br /&gt;
Кроме того, процесс Грама — Шмидта может применяться к линейно зависимым векторам. В этом случае он выдаёт &amp;lt;math&amp;gt;\mathbf{0}&amp;lt;/math&amp;gt; (нулевой вектор) на шаге &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;, если &amp;lt;math&amp;gt;\mathbf{a}_j&amp;lt;/math&amp;gt; является линейной комбинацией векторов &amp;lt;math&amp;gt;\mathbf{a}_1,\;\ldots,\;\mathbf{a}_{j-1}&amp;lt;/math&amp;gt;. Если это может случиться, то для сохранения ортогональности выходных векторов и для предотвращения деления на ноль при ортонормировании алгоритм должен делать проверку на нулевые векторы и отбрасывать их. Количество векторов, выдаваемых алгоритмом, будет равно размерности подпространства, порождённого векторами (т.е. количеству линейно независимых векторов, которые можно выделить среди исходных векторов).&lt;br /&gt;
&lt;br /&gt;
Процесс Грама ― Шмидта может быть истолкован как разложение невырожденной квадратной матрицы в произведение ортогональной (или унитарной матрицы в случае эрмитова пространства) и верхнетреугольной матрицы с положительными диагональными элементами ― QR-разложение, что есть частный случай разложения Ивасавы.&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4_%D0%BE%D1%80%D1%82%D0%BE%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25305</id>
		<title>Классический метод ортогонализации</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4_%D0%BE%D1%80%D1%82%D0%BE%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25305"/>
		<updated>2018-01-20T12:29:29Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Классическая ортогонализация Грама-Шмидта&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(N^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;N^2&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;3N^2/2&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритмов ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Процесс ортогонализации Грама-Шмидта — это один из алгоритмов, в которых на основе множества линейно независимых векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\;\mathbf {a} _{N}}&amp;lt;/math&amp;gt; строится множество ортогональных &amp;lt;math&amp;gt;{\displaystyle \mathbf {b}_{1},\;\ldots ,\;\mathbf {b} _{N}} &amp;lt;/math&amp;gt; или ортонормированных векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {e} _{1},\;\ldots ,\;\mathbf {e}_{N}} &amp;lt;/math&amp;gt;, причём так, что каждый вектор &amp;lt;math&amp;gt;{\displaystyle \mathbf {b} _{j}} &amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;{\displaystyle \mathbf {e} _{j}}&amp;lt;/math&amp;gt; может быть выражен линейной комбинацией векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\; \mathbf {a} _{j}}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Пусть имеются линейно независимые векторы &amp;lt;math&amp;gt;\mathbf{a}_1,\;\ldots,\;\mathbf{a}_N&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если определить оператор проекции следующим образом: &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b}}\,\mathbf{a} = {\langle \mathbf{a}, \mathbf{b} \rangle \over \langle \mathbf{b}, \mathbf{b}\rangle} \mathbf{b} ,&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
где &amp;lt;math&amp;gt;\langle \mathbf{a}, \mathbf{b} \rangle&amp;lt;/math&amp;gt; — скалярное произведение векторов &amp;lt;math&amp;gt;\mathbf{a}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\mathbf{b}&amp;lt;/math&amp;gt;, &lt;br /&gt;
&lt;br /&gt;
то классический процесс Грама — Шмидта выполняется следующим образом:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;&lt;br /&gt;
{\begin{array}{lclr}&lt;br /&gt;
{\mathbf  {b}}_{1}&amp;amp;=&amp;amp;{\mathbf  {a}}_{1}&amp;amp;(1)\\&lt;br /&gt;
{\mathbf  {b}}_{2}&amp;amp;=&amp;amp;{\mathbf  {a}}_{2}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{1}}}\,{\mathbf  {a}}_{2}&amp;amp;(2)\\&lt;br /&gt;
{\mathbf  {b}}_{3}&amp;amp;=&amp;amp;{\mathbf  {a}}_{3}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{1}}}\,{\mathbf  {a}}_{3}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{2}}}\,{\mathbf  {a}}_{3}&amp;amp;(3)\\&lt;br /&gt;
{\mathbf  {b}}_{4}&amp;amp;=&amp;amp;{\mathbf  {a}}_{4}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{1}}}\,{\mathbf  {a}}_{4}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{2}}}\,{\mathbf  {a}}_{4}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{3}}}\,{\mathbf  {a}}_{4}&amp;amp;(4)\\&lt;br /&gt;
&amp;amp;\vdots &amp;amp;&amp;amp;\\{\mathbf  {b}}_{N}&amp;amp;=&amp;amp;{\mathbf  {a}}_{N}-\displaystyle \sum _{{j=1}}^{{N-1}}{\mathbf  {proj}}_{{{\mathbf  {b}}_{j}}}\,{\mathbf  {a}}_{N}&amp;amp;(N)&lt;br /&gt;
\end{array}}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
На основе каждого вектора &amp;lt;math&amp;gt;\mathbf{b}_j \;(j = 1 \ldots N)&amp;lt;/math&amp;gt; может быть получен нормированный вектор: &amp;lt;math&amp;gt;\mathbf{e}_j = {\mathbf{b}_j\over \| \mathbf{b}_j \|_2}&amp;lt;/math&amp;gt; (у нормированного вектора направление будет таким же, как у исходного, а длина — единичной).&lt;br /&gt;
&lt;br /&gt;
Результаты процесса Грама — Шмидта:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{b}_1,\;\ldots,\;\mathbf{b}_N&amp;lt;/math&amp;gt; — система ортогональных векторов либо&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{e}_1,\;\ldots,\;\mathbf{e}_N&amp;lt;/math&amp;gt; — система ортонормированных векторов.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро последовательной версии метода ортогонализации Грамма-Шмидта можно составить из множественных (всего их &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt;) вычислений проекций : &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Данный алгоритм использует в качестве составных частей другие, более мелкие. Далее описание будет не в максимально детализированном виде (т.е. на уровне арифметических операций), а только на уровне его макроструктуры. Типичной макрооперацией, часто встречающиеся в алгоритме является оператор проекции векторов. Как записано и в описании ядра алгоритма, основную часть метода ортогонализации Грамма-Шмидта составляют множественные (всего их &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt;) вычисления оператора проекции.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Следующий алгоритм реализует нормализацию Грамма-Шмидта. Векторы &amp;lt;math&amp;gt;v_1,...,v_k&amp;lt;/math&amp;gt; заменяются набором ортонормированных векторов, которые имеют ту же линейную оболочку.&lt;br /&gt;
&lt;br /&gt;
[[File:Gram-Schmidt ortho.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
Вычислительная сложность этого &amp;lt;math&amp;gt;2Nk^2&amp;lt;/math&amp;gt; операции с плавающей точкой, где N - размерность векторов.&lt;br /&gt;
&lt;br /&gt;
Последовательность исполнения метода следующая:&lt;br /&gt;
&lt;br /&gt;
1. &amp;lt;math&amp;gt;\mathbf  {b}_{1}=\mathbf  {a}_{1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Далее для всех векторов &amp;lt;math&amp;gt;\mathbf  {b}_{i}&amp;lt;/math&amp;gt; для &amp;lt;math&amp;gt;i=2 ... N&amp;lt;/math&amp;gt; производится вычисление по следующей формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;{\mathbf  {b}}_{i}={\mathbf  {a}}_{i}-\displaystyle \sum _{{j=1}}^{{i-1}}{\mathbf  {proj}}_{{{\mathbf  {b}}_{j}}}\,{\mathbf  {a}}_{i}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
В ней на каждом шаге &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; по очереди вычисляются все &amp;lt;math&amp;gt;{\mathbf  {proj}}_{{{\mathbf  {b}}_{j}}}\,{\mathbf  {a}}_{i}&amp;lt;/math&amp;gt; для &amp;lt;math&amp;gt;j=1 ... i-1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Пример реализации на Python ====&lt;br /&gt;
&lt;br /&gt;
Функция работает для произвольного количества векторов любой размерности. При этом если количество векторов &amp;lt;math&amp;gt;\mathbf{a}_1,\;\ldots,\;\mathbf{a}_N&amp;lt;/math&amp;gt; больше их размерности или они линейно зависимы то функция возвращает максимально возможное число линейно независимых векторов &amp;lt;math&amp;gt;\mathbf{b}_1,\;\ldots,\;\mathbf{b}_n&amp;lt;/math&amp;gt;, а остальные векторы &amp;lt;math&amp;gt;\mathbf{b}_{n+1},\;\ldots,\;\mathbf{b}_N&amp;lt;/math&amp;gt; нулевые.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import random&lt;br /&gt;
&lt;br /&gt;
def GramSchmidt(*a):&lt;br /&gt;
    k=len(a[0])&lt;br /&gt;
    N=len(a);&lt;br /&gt;
    b = [[0] * k for i in range(N)]&lt;br /&gt;
    b[0]=a[0]&lt;br /&gt;
    for i in range(1,N):&lt;br /&gt;
        sum=a[i]&lt;br /&gt;
        for j in range(0,i):&lt;br /&gt;
            scolar_ab=0&lt;br /&gt;
            scolar_bb=0&lt;br /&gt;
            proj=[i for i in range(k)]&lt;br /&gt;
            for n in range(k):&lt;br /&gt;
                scolar_ab+=b[j][n]*a[i][n]&lt;br /&gt;
                scolar_bb+=b[j][n]*b[j][n]&lt;br /&gt;
            for n in range(k):&lt;br /&gt;
                proj[n]=(scolar_ab/scolar_bb)*b[j][n]&lt;br /&gt;
            for n in range(k):&lt;br /&gt;
                sum[n]-=proj[n]&lt;br /&gt;
        b[i]=sum&lt;br /&gt;
    return b;&lt;br /&gt;
&lt;br /&gt;
l1=[random.randrange(0,10) for i in range(3)]&lt;br /&gt;
l2=[random.randrange(0,10) for i in range(3)]&lt;br /&gt;
l3=[random.randrange(0,10) for i in range(3)]&lt;br /&gt;
print(l1,l2,l3)&lt;br /&gt;
print(GramSchmidt(l1,l2,l3))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Для построения ортогонального набора векторов в последовательном варианте требуется:&lt;br /&gt;
&lt;br /&gt;
При k=N:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt; делений,&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)(3N-1)}{2}&amp;lt;/math&amp;gt; сложений (вычитаний),&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{3N^2 (N-1)}{2}&amp;lt;/math&amp;gt; умножений.&lt;br /&gt;
&lt;br /&gt;
При k≠N&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt; делений,&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)(3k-1)}{2}&amp;lt;/math&amp;gt; сложений (вычитаний),&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{3Nk (N-1)}{2}&amp;lt;/math&amp;gt; умножений.&lt;br /&gt;
&lt;br /&gt;
При классификации по последовательной сложности, таким образом, ортогонализация Грамма-Шмидта относится к алгоритмам с кубической сложностью.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
Опишем граф алгоритма как аналитически, так и в виде рисунка.&lt;br /&gt;
&lt;br /&gt;
Граф алгоритма состоит из двух групп вершин, расположенных в целочисленных узлах двух областей.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Первая&#039;&#039;&#039; группа вершин расположена в двумерной области, соответствующая ей операция &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i} = {\langle \mathbf{a_i}, \mathbf{b_j} \rangle \over \langle \mathbf{b_j}, \mathbf{b_j}\rangle} \mathbf{b_j} ,&amp;lt;/math&amp;gt; . &lt;br /&gt;
&lt;br /&gt;
Естественно введённые координаты области таковы:&lt;br /&gt;
&lt;br /&gt;
i — меняется в диапазоне от 2 до N, принимая все целочисленные значения;&lt;br /&gt;
&lt;br /&gt;
j — меняется в диапазоне от 1 до i-1, принимая все целочисленные значения.&lt;br /&gt;
&lt;br /&gt;
Аргументы операции следующие:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_i&amp;lt;/math&amp;gt;:&lt;br /&gt;
элементы входных данных, а именно &amp;lt;math&amp;gt;a_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;b_j&amp;lt;/math&amp;gt;: &lt;br /&gt;
результат срабатывания операции, соответствующей вершине из второй группы, с координатой j.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вторая&#039;&#039;&#039; группа вершин расположена в двухмерной области, соответствующая ей операция  &amp;lt;math&amp;gt;a - b&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Естественно введённые координаты области таковы: &lt;br /&gt;
&lt;br /&gt;
i — меняется в диапазоне от 2 до N, принимая все целочисленные значения;&lt;br /&gt;
&lt;br /&gt;
j — меняется в диапазоне от 1 до i-1, принимая все целочисленные значения.&lt;br /&gt;
&lt;br /&gt;
Аргументы операции следующие:&lt;br /&gt;
&lt;br /&gt;
a:&lt;br /&gt;
&lt;br /&gt;
j=1 - входные данные &amp;lt;math&amp;gt;a_j&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
j&amp;gt;1 - результат срабатывания операции, соответствующей вершине из второй группы, с координатой j-1&lt;br /&gt;
&lt;br /&gt;
b: &lt;br /&gt;
&lt;br /&gt;
результат срабатывания операции, соответствующей вершине из первой группы, с координатой j&lt;br /&gt;
[[Файл:picture00001.jpg|мини|upright=2|centre|frame|Рис. 5. Граф алгоритма с отображением входных и выходных данных. Proj - вычисление оператора проекции, F - операция a-b, In - входные данные, Out - результаты.]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В параллельном варианте, в отличие от последовательного, можно параллельно производить вычитание соответствующего &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i}&amp;lt;/math&amp;gt; для всех &amp;lt;math&amp;gt;i=j+1..N&amp;lt;/math&amp;gt;. Параллельное же вычисление проекций соответствует другому алгоритму.&lt;br /&gt;
&lt;br /&gt;
При классификации по высоте (количество ярусов в ЯПФ ) ЯПФ, таким образом, ортогонализация Грамма-Шмидта относится к алгоритмам со сложностью &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При классификации по ширине (максимальное количество вершин в ярусе) ЯПФ его сложность будет &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: множества линейно независимых векторов  &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\;\mathbf {a} _{N}}&amp;lt;/math&amp;gt;, каждый из которых описывается &amp;lt;math&amp;gt;\mathbf{ a_i= [a^i_1, a^i_2, ..., a^i_k]}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения:&lt;br /&gt;
* вектора &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\;\mathbf {a} _{N}}&amp;lt;/math&amp;gt; линейно независимы, поэтому &amp;lt;math&amp;gt;k \geqslant N&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём входных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;Nk&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: множество ортогональных векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {b} _{1},\;\ldots ,\;\mathbf {b} _{N}} &amp;lt;/math&amp;gt;, каждый из которых описывается &amp;lt;math&amp;gt;\mathbf{ b_i= [b^i_1, b^i_2, ..., b^i_k]}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём выходных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;Nk&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Соотношение последовательной и параллельной сложности в случае неограниченных ресурсов, как хорошо видно, является линейным (отношение кубической к квадратичной).&lt;br /&gt;
&lt;br /&gt;
При этом вычислительная мощность алгоритма, как отношение числа операций к суммарному объему входных и выходных данных, также линейна.&lt;br /&gt;
&lt;br /&gt;
Алгоритм почти полностью детерминирован — единственность результата выполнения гарантирована, однако возможно накопление ошибок округления при использовании классического процесса Грама-Шмидта. &lt;br /&gt;
&lt;br /&gt;
Алгоритм является численно неустойчивым — ошибки округления могут привести к неортогональности полученных векторов.&lt;br /&gt;
&lt;br /&gt;
Процесс Грама — Шмидта может применяться также к бесконечной последовательности линейно независимых векторов.&lt;br /&gt;
&lt;br /&gt;
Кроме того, процесс Грама — Шмидта может применяться к линейно зависимым векторам. В этом случае он выдаёт &amp;lt;math&amp;gt;\mathbf{0}&amp;lt;/math&amp;gt; (нулевой вектор) на шаге &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;, если &amp;lt;math&amp;gt;\mathbf{a}_j&amp;lt;/math&amp;gt; является линейной комбинацией векторов &amp;lt;math&amp;gt;\mathbf{a}_1,\;\ldots,\;\mathbf{a}_{j-1}&amp;lt;/math&amp;gt;. Если это может случиться, то для сохранения ортогональности выходных векторов и для предотвращения деления на ноль при ортонормировании алгоритм должен делать проверку на нулевые векторы и отбрасывать их. Количество векторов, выдаваемых алгоритмом, будет равно размерности подпространства, порождённого векторами (т.е. количеству линейно независимых векторов, которые можно выделить среди исходных векторов).&lt;br /&gt;
&lt;br /&gt;
Процесс Грама ― Шмидта может быть истолкован как разложение невырожденной квадратной матрицы в произведение ортогональной (или унитарной матрицы в случае эрмитова пространства) и верхнетреугольной матрицы с положительными диагональными элементами ― QR-разложение, что есть частный случай разложения Ивасавы.&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4_%D0%BE%D1%80%D1%82%D0%BE%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25304</id>
		<title>Классический метод ортогонализации</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4_%D0%BE%D1%80%D1%82%D0%BE%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25304"/>
		<updated>2018-01-20T12:23:42Z</updated>

		<summary type="html">&lt;p&gt;Frolov: /* Математическое описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Классическая ортогонализация Грама-Шмидта&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(N^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;N^2&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;3N^2/2&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритмов ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Процесс ортогонализации Грама-Шмидта — это один из алгоритмов, в которых на основе множества линейно независимых векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\;\mathbf {a} _{N}}&amp;lt;/math&amp;gt; строится множество ортогональных &amp;lt;math&amp;gt;{\displaystyle \mathbf {b}_{1},\;\ldots ,\;\mathbf {b} _{N}} &amp;lt;/math&amp;gt; или ортонормированных векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {e} _{1},\;\ldots ,\;\mathbf {e}_{N}} &amp;lt;/math&amp;gt;, причём так, что каждый вектор &amp;lt;math&amp;gt;{\displaystyle \mathbf {b} _{j}} &amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;{\displaystyle \mathbf {e} _{j}}&amp;lt;/math&amp;gt; может быть выражен линейной комбинацией векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\; \mathbf {a} _{j}}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Пусть имеются линейно независимые векторы &amp;lt;math&amp;gt;\mathbf{a}_1,\;\ldots,\;\mathbf{a}_N&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если определить оператор проекции следующим образом: &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b}}\,\mathbf{a} = {\langle \mathbf{a}, \mathbf{b} \rangle \over \langle \mathbf{b}, \mathbf{b}\rangle} \mathbf{b} ,&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
где &amp;lt;math&amp;gt;\langle \mathbf{a}, \mathbf{b} \rangle&amp;lt;/math&amp;gt; — скалярное произведение векторов &amp;lt;math&amp;gt;\mathbf{a}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\mathbf{b}&amp;lt;/math&amp;gt;, &lt;br /&gt;
&lt;br /&gt;
то классический процесс Грама — Шмидта выполняется следующим образом:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;&lt;br /&gt;
{\begin{array}{lclr}&lt;br /&gt;
{\mathbf  {b}}_{1}&amp;amp;=&amp;amp;{\mathbf  {a}}_{1}&amp;amp;(1)\\&lt;br /&gt;
{\mathbf  {b}}_{2}&amp;amp;=&amp;amp;{\mathbf  {a}}_{2}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{1}}}\,{\mathbf  {a}}_{2}&amp;amp;(2)\\&lt;br /&gt;
{\mathbf  {b}}_{3}&amp;amp;=&amp;amp;{\mathbf  {a}}_{3}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{1}}}\,{\mathbf  {a}}_{3}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{2}}}\,{\mathbf  {a}}_{3}&amp;amp;(3)\\&lt;br /&gt;
{\mathbf  {b}}_{4}&amp;amp;=&amp;amp;{\mathbf  {a}}_{4}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{1}}}\,{\mathbf  {a}}_{4}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{2}}}\,{\mathbf  {a}}_{4}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{3}}}\,{\mathbf  {a}}_{4}&amp;amp;(4)\\&lt;br /&gt;
&amp;amp;\vdots &amp;amp;&amp;amp;\\{\mathbf  {b}}_{N}&amp;amp;=&amp;amp;{\mathbf  {a}}_{N}-\displaystyle \sum _{{j=1}}^{{N-1}}{\mathbf  {proj}}_{{{\mathbf  {b}}_{j}}}\,{\mathbf  {a}}_{N}&amp;amp;(N)&lt;br /&gt;
\end{array}}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
На основе каждого вектора &amp;lt;math&amp;gt;\mathbf{b}_j \;(j = 1 \ldots N)&amp;lt;/math&amp;gt; может быть получен нормированный вектор: &amp;lt;math&amp;gt;\mathbf{e}_j = {\mathbf{b}_j\over \| \mathbf{b}_j \|_2}&amp;lt;/math&amp;gt; (у нормированного вектора направление будет таким же, как у исходного, а длина — единичной).&lt;br /&gt;
&lt;br /&gt;
Результаты процесса Грама — Шмидта:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{b}_1,\;\ldots,\;\mathbf{b}_N&amp;lt;/math&amp;gt; — система ортогональных векторов либо&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{e}_1,\;\ldots,\;\mathbf{e}_N&amp;lt;/math&amp;gt; — система ортонормированных векторов.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро последовательной версии метода ортогонализации Грамма-Шмидта можно составить из множественных (всего их &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt;) вычислений проекций : &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Данный алгоритм использует в качестве составных частей другие, более мелкие. Далее описание будет не в максимально детализированном виде (т.е. на уровне арифметических операций), а только на уровне его макроструктуры. Типичной макрооперацией, часто встречающиеся в алгоритме является оператор проекции векторов. Как записано и в описании ядра алгоритма, основную часть метода ортогонализации Грамма-Шмидта составляют множественные (всего их &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt;) вычисления оператора проекции.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Следующий алгоритм реализует нормализацию Грамма-Шмидта. Векторы &amp;lt;math&amp;gt;v_1,...,v_k&amp;lt;/math&amp;gt; заменяются набором ортонормированных векторов, которые имеют ту же линейную оболочку.&lt;br /&gt;
&lt;br /&gt;
[[File:Gram-Schmidt ortho.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
Вычислительная сложность этого &amp;lt;math&amp;gt;2Nk^2&amp;lt;/math&amp;gt; операции с плавающей точкой, где N - размерность векторов.&lt;br /&gt;
&lt;br /&gt;
Последовательность исполнения метода следующая:&lt;br /&gt;
&lt;br /&gt;
1. &amp;lt;math&amp;gt;\mathbf  {b}_{1}=\mathbf  {a}_{1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Далее для всех векторов &amp;lt;math&amp;gt;\mathbf  {b}_{i}&amp;lt;/math&amp;gt; для &amp;lt;math&amp;gt;i=2 ... N&amp;lt;/math&amp;gt; производится вычисление по следующей формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;{\mathbf  {b}}_{i}={\mathbf  {a}}_{i}-\displaystyle \sum _{{j=1}}^{{i-1}}{\mathbf  {proj}}_{{{\mathbf  {b}}_{j}}}\,{\mathbf  {a}}_{i}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
В ней на каждом шаге &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; по очереди вычисляются все &amp;lt;math&amp;gt;{\mathbf  {proj}}_{{{\mathbf  {b}}_{j}}}\,{\mathbf  {a}}_{i}&amp;lt;/math&amp;gt; для &amp;lt;math&amp;gt;j=1 ... i-1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Пример реализации на Python ====&lt;br /&gt;
&lt;br /&gt;
Функция работает для произвольного количества векторов любой размерности. При этом если количество векторов &amp;lt;math&amp;gt;\mathbf{a}_1,\;\ldots,\;\mathbf{a}_N&amp;lt;/math&amp;gt; больше их размерности или они линейно зависимы то функция возвращает максимально возможное число линейно независимых векторов &amp;lt;math&amp;gt;\mathbf{b}_1,\;\ldots,\;\mathbf{b}_n&amp;lt;/math&amp;gt;, а остальные векторы &amp;lt;math&amp;gt;\mathbf{b}_{n+1},\;\ldots,\;\mathbf{b}_N&amp;lt;/math&amp;gt; нулевые.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import random&lt;br /&gt;
&lt;br /&gt;
def GramSchmidt(*a):&lt;br /&gt;
    k=len(a[0])&lt;br /&gt;
    N=len(a);&lt;br /&gt;
    b = [[0] * k for i in range(N)]&lt;br /&gt;
    b[0]=a[0]&lt;br /&gt;
    for i in range(1,N):&lt;br /&gt;
        sum=a[i]&lt;br /&gt;
        for j in range(0,i):&lt;br /&gt;
            scolar_ab=0&lt;br /&gt;
            scolar_bb=0&lt;br /&gt;
            proj=[i for i in range(k)]&lt;br /&gt;
            for n in range(k):&lt;br /&gt;
                scolar_ab+=b[j][n]*a[i][n]&lt;br /&gt;
                scolar_bb+=b[j][n]*b[j][n]&lt;br /&gt;
            for n in range(k):&lt;br /&gt;
                proj[n]=(scolar_ab/scolar_bb)*b[j][n]&lt;br /&gt;
            for n in range(k):&lt;br /&gt;
                sum[n]-=proj[n]&lt;br /&gt;
        b[i]=sum&lt;br /&gt;
    return b;&lt;br /&gt;
&lt;br /&gt;
l1=[random.randrange(0,10) for i in range(3)]&lt;br /&gt;
l2=[random.randrange(0,10) for i in range(3)]&lt;br /&gt;
l3=[random.randrange(0,10) for i in range(3)]&lt;br /&gt;
print(l1,l2,l3)&lt;br /&gt;
print(GramSchmidt(l1,l2,l3))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Для построения ортогонального набора векторов в последовательном варианте требуется:&lt;br /&gt;
&lt;br /&gt;
При k=N:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt; делений,&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)(3N-1)}{2}&amp;lt;/math&amp;gt; сложений (вычитаний),&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{3N^2 (N-1)}{2}&amp;lt;/math&amp;gt; умножений.&lt;br /&gt;
&lt;br /&gt;
При k≠N&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt; делений,&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)(3k-1)}{2}&amp;lt;/math&amp;gt; сложений (вычитаний),&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{3Nk (N-1)}{2}&amp;lt;/math&amp;gt; умножений.&lt;br /&gt;
&lt;br /&gt;
При классификации по последовательной сложности, таким образом, ортогонализация Грамма-Шмидта относится к алгоритмам с кубической сложностью.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
Опишем граф алгоритма как аналитически, так и в виде рисунка.&lt;br /&gt;
&lt;br /&gt;
Граф алгоритма состоит из двух групп вершин, расположенных в целочисленных узлах двух областей.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Первая&#039;&#039;&#039; группа вершин расположена в двумерной области, соответствующая ей операция &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i} = {\langle \mathbf{a_i}, \mathbf{b_j} \rangle \over \langle \mathbf{b_j}, \mathbf{b_j}\rangle} \mathbf{b_j} ,&amp;lt;/math&amp;gt; . &lt;br /&gt;
&lt;br /&gt;
Естественно введённые координаты области таковы:&lt;br /&gt;
&lt;br /&gt;
i — меняется в диапазоне от 2 до N, принимая все целочисленные значения;&lt;br /&gt;
&lt;br /&gt;
j — меняется в диапазоне от 1 до i-1, принимая все целочисленные значения.&lt;br /&gt;
&lt;br /&gt;
Аргументы операции следующие:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_i&amp;lt;/math&amp;gt;:&lt;br /&gt;
элементы входных данных, а именно &amp;lt;math&amp;gt;a_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;b_j&amp;lt;/math&amp;gt;: &lt;br /&gt;
результат срабатывания операции, соответствующей вершине из второй группы, с координатой j.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вторая&#039;&#039;&#039; группа вершин расположена в двухмерной области, соответствующая ей операция  &amp;lt;math&amp;gt;a - b&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Естественно введённые координаты области таковы: &lt;br /&gt;
&lt;br /&gt;
i — меняется в диапазоне от 2 до N, принимая все целочисленные значения;&lt;br /&gt;
&lt;br /&gt;
j — меняется в диапазоне от 1 до i-1, принимая все целочисленные значения.&lt;br /&gt;
&lt;br /&gt;
Аргументы операции следующие:&lt;br /&gt;
&lt;br /&gt;
a:&lt;br /&gt;
&lt;br /&gt;
j=1 - входные данные &amp;lt;math&amp;gt;a_j&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
j&amp;gt;1 - результат срабатывания операции, соответствующей вершине из второй группы, с координатой j-1&lt;br /&gt;
&lt;br /&gt;
b: &lt;br /&gt;
&lt;br /&gt;
результат срабатывания операции, соответствующей вершине из первой группы, с координатой j&lt;br /&gt;
[[Файл:picture00001.jpg|мини|upright=2|centre|frame|Рис. 5. Граф алгоритма с отображением входных и выходных данных. Proj - вычисление оператора проекции, F - операция a-b, In - входные данные, Out - результаты.]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В параллельном варианте, в отличие от последовательного, вычисления  &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i}&amp;lt;/math&amp;gt;  можно выполнять параллельно. То есть после каждого вычисления &amp;lt;math&amp;gt;b_j&amp;lt;/math&amp;gt; можно запускать параллельное вычисление &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i}&amp;lt;/math&amp;gt; для всех &amp;lt;math&amp;gt;i=j+1..N&amp;lt;/math&amp;gt;. Кроме того можно параллельно производить вычитание соответствующего &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i}&amp;lt;/math&amp;gt; для всех &amp;lt;math&amp;gt;i=j+1..N&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для ортогонализации в параллельном варианте требуется последовательно выполнить следующие ярусы:&lt;br /&gt;
* &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; ярусов в каждом из которых будет выполнятся,&lt;br /&gt;
* по &amp;lt;math&amp;gt;N - 1&amp;lt;/math&amp;gt; операторов проекций (в каждом из ярусов линейное количество проекций, в зависимости от яруса — от &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; до &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;),&lt;br /&gt;
* по &amp;lt;math&amp;gt;N - 1&amp;lt;/math&amp;gt; сложений (в каждом из ярусов линейное количество сложений, в зависимости от яруса — от &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; до &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;),&lt;br /&gt;
&lt;br /&gt;
При классификации по высоте (количество ярусов в ЯПФ ) ЯПФ, таким образом, ортогонализация Грамма-Шмидта относится к алгоритмам со сложностью &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При классификации по ширине (максимальное количество вершин в ярусе) ЯПФ его сложность будет &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: множества линейно независимых векторов  &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\;\mathbf {a} _{N}}&amp;lt;/math&amp;gt;, каждый из которых описывается &amp;lt;math&amp;gt;\mathbf{ a_i= [a^i_1, a^i_2, ..., a^i_k]}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения:&lt;br /&gt;
* вектора &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\;\mathbf {a} _{N}}&amp;lt;/math&amp;gt; линейно независимы, поэтому &amp;lt;math&amp;gt;k \geqslant N&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём входных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;Nk&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: множество ортогональных векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {b} _{1},\;\ldots ,\;\mathbf {b} _{N}} &amp;lt;/math&amp;gt;, каждый из которых описывается &amp;lt;math&amp;gt;\mathbf{ b_i= [b^i_1, b^i_2, ..., b^i_k]}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём выходных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;Nk&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Соотношение последовательной и параллельной сложности в случае неограниченных ресурсов, как хорошо видно, является линейным (отношение кубической к квадратичной).&lt;br /&gt;
&lt;br /&gt;
При этом вычислительная мощность алгоритма, как отношение числа операций к суммарному объему входных и выходных данных, также линейна.&lt;br /&gt;
&lt;br /&gt;
Алгоритм почти полностью детерминирован — единственность результата выполнения гарантирована, однако возможно накопление ошибок округления при использовании классического процесса Грама-Шмидта. &lt;br /&gt;
&lt;br /&gt;
Алгоритм является численно неустойчивым — ошибки округления могут привести к неортогональности полученных векторов.&lt;br /&gt;
&lt;br /&gt;
Процесс Грама — Шмидта может применяться также к бесконечной последовательности линейно независимых векторов.&lt;br /&gt;
&lt;br /&gt;
Кроме того, процесс Грама — Шмидта может применяться к линейно зависимым векторам. В этом случае он выдаёт &amp;lt;math&amp;gt;\mathbf{0}&amp;lt;/math&amp;gt; (нулевой вектор) на шаге &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;, если &amp;lt;math&amp;gt;\mathbf{a}_j&amp;lt;/math&amp;gt; является линейной комбинацией векторов &amp;lt;math&amp;gt;\mathbf{a}_1,\;\ldots,\;\mathbf{a}_{j-1}&amp;lt;/math&amp;gt;. Если это может случиться, то для сохранения ортогональности выходных векторов и для предотвращения деления на ноль при ортонормировании алгоритм должен делать проверку на нулевые векторы и отбрасывать их. Количество векторов, выдаваемых алгоритмом, будет равно размерности подпространства, порождённого векторами (т.е. количеству линейно независимых векторов, которые можно выделить среди исходных векторов).&lt;br /&gt;
&lt;br /&gt;
Процесс Грама ― Шмидта может быть истолкован как разложение невырожденной квадратной матрицы в произведение ортогональной (или унитарной матрицы в случае эрмитова пространства) и верхнетреугольной матрицы с положительными диагональными элементами ― QR-разложение, что есть частный случай разложения Ивасавы.&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4_%D0%BE%D1%80%D1%82%D0%BE%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25303</id>
		<title>Классический метод ортогонализации</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4_%D0%BE%D1%80%D1%82%D0%BE%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25303"/>
		<updated>2018-01-20T12:23:05Z</updated>

		<summary type="html">&lt;p&gt;Frolov: /* Свойства и структура алгоритмов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Классическая ортогонализация Грама-Шмидта&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(N^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;N^2&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;3N^2/2&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритмов ==&lt;br /&gt;
&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Процесс ортогонализации Грама-Шмидта — это один из алгоритмов, в которых на основе множества линейно независимых векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\;\mathbf {a} _{N}}&amp;lt;/math&amp;gt; строится множество ортогональных &amp;lt;math&amp;gt;{\displaystyle \mathbf {b}_{1},\;\ldots ,\;\mathbf {b} _{N}} &amp;lt;/math&amp;gt; или ортонормированных векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {e} _{1},\;\ldots ,\;\mathbf {e}_{N}} &amp;lt;/math&amp;gt;, причём так, что каждый вектор &amp;lt;math&amp;gt;{\displaystyle \mathbf {b} _{j}} &amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;{\displaystyle \mathbf {e} _{j}}&amp;lt;/math&amp;gt; может быть выражен линейной комбинацией векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\; \mathbf {a} _{j}}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Пусть имеются линейно независимые векторы &amp;lt;math&amp;gt;\mathbf{a}_1,\;\ldots,\;\mathbf{a}_N&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если определить оператор проекции следующим образом: &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b}}\,\mathbf{a} = {\langle \mathbf{a}, \mathbf{b} \rangle \over \langle \mathbf{b}, \mathbf{b}\rangle} \mathbf{b} ,&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
где &amp;lt;math&amp;gt;\langle \mathbf{a}, \mathbf{b} \rangle&amp;lt;/math&amp;gt; — скалярное произведение векторов &amp;lt;math&amp;gt;\mathbf{a}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\mathbf{b}&amp;lt;/math&amp;gt;, &lt;br /&gt;
&lt;br /&gt;
то классический процесс Грама — Шмидта выполняется следующим образом:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;&lt;br /&gt;
{\begin{array}{lclr}&lt;br /&gt;
{\mathbf  {b}}_{1}&amp;amp;=&amp;amp;{\mathbf  {a}}_{1}&amp;amp;(1)\\&lt;br /&gt;
{\mathbf  {b}}_{2}&amp;amp;=&amp;amp;{\mathbf  {a}}_{2}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{1}}}\,{\mathbf  {a}}_{2}&amp;amp;(2)\\&lt;br /&gt;
{\mathbf  {b}}_{3}&amp;amp;=&amp;amp;{\mathbf  {a}}_{3}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{1}}}\,{\mathbf  {a}}_{3}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{2}}}\,{\mathbf  {a}}_{3}&amp;amp;(3)\\&lt;br /&gt;
{\mathbf  {b}}_{4}&amp;amp;=&amp;amp;{\mathbf  {a}}_{4}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{1}}}\,{\mathbf  {a}}_{4}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{2}}}\,{\mathbf  {a}}_{4}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{3}}}\,{\mathbf  {a}}_{4}&amp;amp;(4)\\&lt;br /&gt;
&amp;amp;\vdots &amp;amp;&amp;amp;\\{\mathbf  {b}}_{N}&amp;amp;=&amp;amp;{\mathbf  {a}}_{N}-\displaystyle \sum _{{j=1}}^{{N-1}}{\mathbf  {proj}}_{{{\mathbf  {b}}_{j}}}\,{\mathbf  {a}}_{N}&amp;amp;(N)&lt;br /&gt;
\end{array}}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
На основе каждого вектора &amp;lt;math&amp;gt;\mathbf{b}_j \;(j = 1 \ldots N)&amp;lt;/math&amp;gt; может быть получен нормированный вектор: &amp;lt;math&amp;gt;\mathbf{e}_j = {\mathbf{b}_j\over \|\| \mathbf{b}_j \|\|_2}&amp;lt;/math&amp;gt; (у нормированного вектора направление будет таким же, как у исходного, а длина — единичной).&lt;br /&gt;
&lt;br /&gt;
Результаты процесса Грама — Шмидта:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{b}_1,\;\ldots,\;\mathbf{b}_N&amp;lt;/math&amp;gt; — система ортогональных векторов либо&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{e}_1,\;\ldots,\;\mathbf{e}_N&amp;lt;/math&amp;gt; — система ортонормированных векторов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро последовательной версии метода ортогонализации Грамма-Шмидта можно составить из множественных (всего их &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt;) вычислений проекций : &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Данный алгоритм использует в качестве составных частей другие, более мелкие. Далее описание будет не в максимально детализированном виде (т.е. на уровне арифметических операций), а только на уровне его макроструктуры. Типичной макрооперацией, часто встречающиеся в алгоритме является оператор проекции векторов. Как записано и в описании ядра алгоритма, основную часть метода ортогонализации Грамма-Шмидта составляют множественные (всего их &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt;) вычисления оператора проекции.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Следующий алгоритм реализует нормализацию Грамма-Шмидта. Векторы &amp;lt;math&amp;gt;v_1,...,v_k&amp;lt;/math&amp;gt; заменяются набором ортонормированных векторов, которые имеют ту же линейную оболочку.&lt;br /&gt;
&lt;br /&gt;
[[File:Gram-Schmidt ortho.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
Вычислительная сложность этого &amp;lt;math&amp;gt;2Nk^2&amp;lt;/math&amp;gt; операции с плавающей точкой, где N - размерность векторов.&lt;br /&gt;
&lt;br /&gt;
Последовательность исполнения метода следующая:&lt;br /&gt;
&lt;br /&gt;
1. &amp;lt;math&amp;gt;\mathbf  {b}_{1}=\mathbf  {a}_{1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Далее для всех векторов &amp;lt;math&amp;gt;\mathbf  {b}_{i}&amp;lt;/math&amp;gt; для &amp;lt;math&amp;gt;i=2 ... N&amp;lt;/math&amp;gt; производится вычисление по следующей формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;{\mathbf  {b}}_{i}={\mathbf  {a}}_{i}-\displaystyle \sum _{{j=1}}^{{i-1}}{\mathbf  {proj}}_{{{\mathbf  {b}}_{j}}}\,{\mathbf  {a}}_{i}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
В ней на каждом шаге &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; по очереди вычисляются все &amp;lt;math&amp;gt;{\mathbf  {proj}}_{{{\mathbf  {b}}_{j}}}\,{\mathbf  {a}}_{i}&amp;lt;/math&amp;gt; для &amp;lt;math&amp;gt;j=1 ... i-1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Пример реализации на Python ====&lt;br /&gt;
&lt;br /&gt;
Функция работает для произвольного количества векторов любой размерности. При этом если количество векторов &amp;lt;math&amp;gt;\mathbf{a}_1,\;\ldots,\;\mathbf{a}_N&amp;lt;/math&amp;gt; больше их размерности или они линейно зависимы то функция возвращает максимально возможное число линейно независимых векторов &amp;lt;math&amp;gt;\mathbf{b}_1,\;\ldots,\;\mathbf{b}_n&amp;lt;/math&amp;gt;, а остальные векторы &amp;lt;math&amp;gt;\mathbf{b}_{n+1},\;\ldots,\;\mathbf{b}_N&amp;lt;/math&amp;gt; нулевые.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import random&lt;br /&gt;
&lt;br /&gt;
def GramSchmidt(*a):&lt;br /&gt;
    k=len(a[0])&lt;br /&gt;
    N=len(a);&lt;br /&gt;
    b = [[0] * k for i in range(N)]&lt;br /&gt;
    b[0]=a[0]&lt;br /&gt;
    for i in range(1,N):&lt;br /&gt;
        sum=a[i]&lt;br /&gt;
        for j in range(0,i):&lt;br /&gt;
            scolar_ab=0&lt;br /&gt;
            scolar_bb=0&lt;br /&gt;
            proj=[i for i in range(k)]&lt;br /&gt;
            for n in range(k):&lt;br /&gt;
                scolar_ab+=b[j][n]*a[i][n]&lt;br /&gt;
                scolar_bb+=b[j][n]*b[j][n]&lt;br /&gt;
            for n in range(k):&lt;br /&gt;
                proj[n]=(scolar_ab/scolar_bb)*b[j][n]&lt;br /&gt;
            for n in range(k):&lt;br /&gt;
                sum[n]-=proj[n]&lt;br /&gt;
        b[i]=sum&lt;br /&gt;
    return b;&lt;br /&gt;
&lt;br /&gt;
l1=[random.randrange(0,10) for i in range(3)]&lt;br /&gt;
l2=[random.randrange(0,10) for i in range(3)]&lt;br /&gt;
l3=[random.randrange(0,10) for i in range(3)]&lt;br /&gt;
print(l1,l2,l3)&lt;br /&gt;
print(GramSchmidt(l1,l2,l3))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Для построения ортогонального набора векторов в последовательном варианте требуется:&lt;br /&gt;
&lt;br /&gt;
При k=N:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt; делений,&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)(3N-1)}{2}&amp;lt;/math&amp;gt; сложений (вычитаний),&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{3N^2 (N-1)}{2}&amp;lt;/math&amp;gt; умножений.&lt;br /&gt;
&lt;br /&gt;
При k≠N&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt; делений,&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)(3k-1)}{2}&amp;lt;/math&amp;gt; сложений (вычитаний),&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{3Nk (N-1)}{2}&amp;lt;/math&amp;gt; умножений.&lt;br /&gt;
&lt;br /&gt;
При классификации по последовательной сложности, таким образом, ортогонализация Грамма-Шмидта относится к алгоритмам с кубической сложностью.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
Опишем граф алгоритма как аналитически, так и в виде рисунка.&lt;br /&gt;
&lt;br /&gt;
Граф алгоритма состоит из двух групп вершин, расположенных в целочисленных узлах двух областей.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Первая&#039;&#039;&#039; группа вершин расположена в двумерной области, соответствующая ей операция &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i} = {\langle \mathbf{a_i}, \mathbf{b_j} \rangle \over \langle \mathbf{b_j}, \mathbf{b_j}\rangle} \mathbf{b_j} ,&amp;lt;/math&amp;gt; . &lt;br /&gt;
&lt;br /&gt;
Естественно введённые координаты области таковы:&lt;br /&gt;
&lt;br /&gt;
i — меняется в диапазоне от 2 до N, принимая все целочисленные значения;&lt;br /&gt;
&lt;br /&gt;
j — меняется в диапазоне от 1 до i-1, принимая все целочисленные значения.&lt;br /&gt;
&lt;br /&gt;
Аргументы операции следующие:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_i&amp;lt;/math&amp;gt;:&lt;br /&gt;
элементы входных данных, а именно &amp;lt;math&amp;gt;a_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;b_j&amp;lt;/math&amp;gt;: &lt;br /&gt;
результат срабатывания операции, соответствующей вершине из второй группы, с координатой j.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вторая&#039;&#039;&#039; группа вершин расположена в двухмерной области, соответствующая ей операция  &amp;lt;math&amp;gt;a - b&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Естественно введённые координаты области таковы: &lt;br /&gt;
&lt;br /&gt;
i — меняется в диапазоне от 2 до N, принимая все целочисленные значения;&lt;br /&gt;
&lt;br /&gt;
j — меняется в диапазоне от 1 до i-1, принимая все целочисленные значения.&lt;br /&gt;
&lt;br /&gt;
Аргументы операции следующие:&lt;br /&gt;
&lt;br /&gt;
a:&lt;br /&gt;
&lt;br /&gt;
j=1 - входные данные &amp;lt;math&amp;gt;a_j&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
j&amp;gt;1 - результат срабатывания операции, соответствующей вершине из второй группы, с координатой j-1&lt;br /&gt;
&lt;br /&gt;
b: &lt;br /&gt;
&lt;br /&gt;
результат срабатывания операции, соответствующей вершине из первой группы, с координатой j&lt;br /&gt;
[[Файл:picture00001.jpg|мини|upright=2|centre|frame|Рис. 5. Граф алгоритма с отображением входных и выходных данных. Proj - вычисление оператора проекции, F - операция a-b, In - входные данные, Out - результаты.]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В параллельном варианте, в отличие от последовательного, вычисления  &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i}&amp;lt;/math&amp;gt;  можно выполнять параллельно. То есть после каждого вычисления &amp;lt;math&amp;gt;b_j&amp;lt;/math&amp;gt; можно запускать параллельное вычисление &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i}&amp;lt;/math&amp;gt; для всех &amp;lt;math&amp;gt;i=j+1..N&amp;lt;/math&amp;gt;. Кроме того можно параллельно производить вычитание соответствующего &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i}&amp;lt;/math&amp;gt; для всех &amp;lt;math&amp;gt;i=j+1..N&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для ортогонализации в параллельном варианте требуется последовательно выполнить следующие ярусы:&lt;br /&gt;
* &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; ярусов в каждом из которых будет выполнятся,&lt;br /&gt;
* по &amp;lt;math&amp;gt;N - 1&amp;lt;/math&amp;gt; операторов проекций (в каждом из ярусов линейное количество проекций, в зависимости от яруса — от &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; до &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;),&lt;br /&gt;
* по &amp;lt;math&amp;gt;N - 1&amp;lt;/math&amp;gt; сложений (в каждом из ярусов линейное количество сложений, в зависимости от яруса — от &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; до &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;),&lt;br /&gt;
&lt;br /&gt;
При классификации по высоте (количество ярусов в ЯПФ ) ЯПФ, таким образом, ортогонализация Грамма-Шмидта относится к алгоритмам со сложностью &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При классификации по ширине (максимальное количество вершин в ярусе) ЯПФ его сложность будет &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: множества линейно независимых векторов  &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\;\mathbf {a} _{N}}&amp;lt;/math&amp;gt;, каждый из которых описывается &amp;lt;math&amp;gt;\mathbf{ a_i= [a^i_1, a^i_2, ..., a^i_k]}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения:&lt;br /&gt;
* вектора &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\;\mathbf {a} _{N}}&amp;lt;/math&amp;gt; линейно независимы, поэтому &amp;lt;math&amp;gt;k \geqslant N&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём входных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;Nk&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: множество ортогональных векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {b} _{1},\;\ldots ,\;\mathbf {b} _{N}} &amp;lt;/math&amp;gt;, каждый из которых описывается &amp;lt;math&amp;gt;\mathbf{ b_i= [b^i_1, b^i_2, ..., b^i_k]}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём выходных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;Nk&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Соотношение последовательной и параллельной сложности в случае неограниченных ресурсов, как хорошо видно, является линейным (отношение кубической к квадратичной).&lt;br /&gt;
&lt;br /&gt;
При этом вычислительная мощность алгоритма, как отношение числа операций к суммарному объему входных и выходных данных, также линейна.&lt;br /&gt;
&lt;br /&gt;
Алгоритм почти полностью детерминирован — единственность результата выполнения гарантирована, однако возможно накопление ошибок округления при использовании классического процесса Грама-Шмидта. &lt;br /&gt;
&lt;br /&gt;
Алгоритм является численно неустойчивым — ошибки округления могут привести к неортогональности полученных векторов.&lt;br /&gt;
&lt;br /&gt;
Процесс Грама — Шмидта может применяться также к бесконечной последовательности линейно независимых векторов.&lt;br /&gt;
&lt;br /&gt;
Кроме того, процесс Грама — Шмидта может применяться к линейно зависимым векторам. В этом случае он выдаёт &amp;lt;math&amp;gt;\mathbf{0}&amp;lt;/math&amp;gt; (нулевой вектор) на шаге &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;, если &amp;lt;math&amp;gt;\mathbf{a}_j&amp;lt;/math&amp;gt; является линейной комбинацией векторов &amp;lt;math&amp;gt;\mathbf{a}_1,\;\ldots,\;\mathbf{a}_{j-1}&amp;lt;/math&amp;gt;. Если это может случиться, то для сохранения ортогональности выходных векторов и для предотвращения деления на ноль при ортонормировании алгоритм должен делать проверку на нулевые векторы и отбрасывать их. Количество векторов, выдаваемых алгоритмом, будет равно размерности подпространства, порождённого векторами (т.е. количеству линейно независимых векторов, которые можно выделить среди исходных векторов).&lt;br /&gt;
&lt;br /&gt;
Процесс Грама ― Шмидта может быть истолкован как разложение невырожденной квадратной матрицы в произведение ортогональной (или унитарной матрицы в случае эрмитова пространства) и верхнетреугольной матрицы с положительными диагональными элементами ― QR-разложение, что есть частный случай разложения Ивасавы.&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4_%D0%BE%D1%80%D1%82%D0%BE%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25302</id>
		<title>Классический метод ортогонализации</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4_%D0%BE%D1%80%D1%82%D0%BE%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25302"/>
		<updated>2018-01-20T12:06:11Z</updated>

		<summary type="html">&lt;p&gt;Frolov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Классическая ортогонализация Грама-Шмидта&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(N^3)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;N^2&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;3N^2/2&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритмов ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
Создатели алгоритма Эрхард Шмидт и Йорген Педерсен Грам.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Эрхард Шмидт&#039;&#039;&#039; (14 января 1876 — 6 декабря 1959) — немецкий математик, с 1917 года профессор Берлинского университета. В 1946—58 первый директор Института математики АН ГДР. Основные труды по теории функций, интегральным уравнениям, функциональному анализу. Определил и изучил геометрически гильбертово пространство, используя аналогии с геометрией Евклида. Занимался квадратичными формами. Известен оператор Гильберта-Шмидта и процесс Грама ― Шмидта.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Йорген Педерсен Грам&#039;&#039;&#039; (27 июня 1850 - 29 апреля 1916) датский математик, родился в герцогстве Шлезвиг, Дания и умер в Копенгагене, Дания. Основные его работы &amp;quot;On series expansions determined by the methods of least squares&amp;quot;, &amp;quot;Investigations of the number of primes less than a given number&amp;quot;. Математический метод, который носит его имя, процесс Грама-Шмидта, впервые был опубликован в 1883. Теорема Грама и Определитель Грама также назван в его честь.&lt;br /&gt;
&lt;br /&gt;
Процесс Грама-Шмидта — это один из алгоритмов, в которых на основе множества линейно независимых векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\;\mathbf {a} _{N}}&amp;lt;/math&amp;gt; строится множество ортогональных векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {b}_{1},\;\ldots ,\;\mathbf {b} _{N}} &amp;lt;/math&amp;gt; или ортонормированных векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {e} _{1},\;\ldots ,\;\mathbf {e}_{N}} &amp;lt;/math&amp;gt;, причём так, что каждый вектор &amp;lt;math&amp;gt;{\displaystyle \mathbf {b} _{j}} &amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;{\displaystyle \mathbf {e} _{j}}&amp;lt;/math&amp;gt; может быть выражен линейной комбинацией векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\; \mathbf {a} _{j}}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
==== Классический процесс Грама — Шмидта ====&lt;br /&gt;
&lt;br /&gt;
===== Алгоритм =====&lt;br /&gt;
Пусть имеются линейно независимые векторы &amp;lt;math&amp;gt;\mathbf{a}_1,\;\ldots,\;\mathbf{a}_N&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Определим оператор проекции следующим образом: &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b}}\,\mathbf{a} = {\langle \mathbf{a}, \mathbf{b} \rangle \over \langle \mathbf{b}, \mathbf{b}\rangle} \mathbf{b} ,&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
где &amp;lt;math&amp;gt;\langle \mathbf{a}, \mathbf{b} \rangle&amp;lt;/math&amp;gt; — скалярное произведение векторов &amp;lt;math&amp;gt;\mathbf{a}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\mathbf{b}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Скалярное произведение для двух векторов  &amp;lt;math&amp;gt;\mathbf{ a= [a_1, a_2, ...,a_k]}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\mathbf{ b= [b_1, b_2, ..., b_k]}&amp;lt;/math&amp;gt;  в &#039;&#039;&#039;&#039;&#039;k&#039;&#039;&#039;&#039;&#039;-мерном действительном пространстве определяется как:&lt;br /&gt;
:&amp;lt;math&amp;gt;\langle \mathbf{a}, \mathbf{b} \rangle=\sum_{i=1}^k a_ib_i=a_1b_1+a_2b_2+\cdots+ a_kb_k&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Этот оператор проецирует вектор &amp;lt;math&amp;gt;\mathbf{a}&amp;lt;/math&amp;gt; коллинеарно вектору &amp;lt;math&amp;gt;\mathbf{b}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ортогональность векторов &amp;lt;math&amp;gt;\mathbf{a}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\mathbf{b}&amp;lt;/math&amp;gt; достигается на шаге (2).&lt;br /&gt;
&lt;br /&gt;
Классический процесс Грама — Шмидта выполняется следующим образом:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;&lt;br /&gt;
{\begin{array}{lclr}&lt;br /&gt;
{\mathbf  {b}}_{1}&amp;amp;=&amp;amp;{\mathbf  {a}}_{1}&amp;amp;(1)\\&lt;br /&gt;
{\mathbf  {b}}_{2}&amp;amp;=&amp;amp;{\mathbf  {a}}_{2}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{1}}}\,{\mathbf  {a}}_{2}&amp;amp;(2)\\&lt;br /&gt;
{\mathbf  {b}}_{3}&amp;amp;=&amp;amp;{\mathbf  {a}}_{3}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{1}}}\,{\mathbf  {a}}_{3}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{2}}}\,{\mathbf  {a}}_{3}&amp;amp;(3)\\&lt;br /&gt;
{\mathbf  {b}}_{4}&amp;amp;=&amp;amp;{\mathbf  {a}}_{4}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{1}}}\,{\mathbf  {a}}_{4}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{2}}}\,{\mathbf  {a}}_{4}-{\mathbf  {proj}}_{{{\mathbf  {b}}_{3}}}\,{\mathbf  {a}}_{4}&amp;amp;(4)\\&lt;br /&gt;
&amp;amp;\vdots &amp;amp;&amp;amp;\\{\mathbf  {b}}_{N}&amp;amp;=&amp;amp;{\mathbf  {a}}_{N}-\displaystyle \sum _{{j=1}}^{{N-1}}{\mathbf  {proj}}_{{{\mathbf  {b}}_{j}}}\,{\mathbf  {a}}_{N}&amp;amp;(N)&lt;br /&gt;
\end{array}}&lt;br /&gt;
 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
На основе каждого вектора &amp;lt;math&amp;gt;\mathbf{b}_j \;(j = 1 \ldots N)&amp;lt;/math&amp;gt; может быть получен нормированный вектор: &amp;lt;math&amp;gt;\mathbf{e}_j = {\mathbf{b}_j\over \| \mathbf{b}_j \|}&amp;lt;/math&amp;gt; (у нормированного вектора направление будет таким же, как у исходного, а длина — единичной). Причем берется норма согласованная со скалярным произведением &amp;lt;math&amp;gt;\| x \| = \sqrt{\langle x, x \rangle}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результаты процесса Грама — Шмидта:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{b}_1,\;\ldots,\;\mathbf{b}_N&amp;lt;/math&amp;gt; — система ортогональных векторов либо&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf{e}_1,\;\ldots,\;\mathbf{e}_N&amp;lt;/math&amp;gt; — система ортонормированных векторов.&lt;br /&gt;
&lt;br /&gt;
Вычисление &amp;lt;math&amp;gt;\mathbf{b}_1,\;\ldots,\;\mathbf{b}_N&amp;lt;/math&amp;gt; носит название ортогонализации Грама — Шмидта, а &amp;lt;math&amp;gt;\mathbf{e}_1,\;\ldots,\;\mathbf{e}_N&amp;lt;/math&amp;gt; — ортонормализации Грама — Шмидта.&lt;br /&gt;
&lt;br /&gt;
===== Доказательство =====&lt;br /&gt;
Докажем ортогональность векторов &amp;lt;math&amp;gt;\mathbf{b}_1,\;\ldots,\;\mathbf{b}_N&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для этого вычислим скалярное произведение &amp;lt;math&amp;gt;\langle \mathbf{b}_1, \mathbf{b}_2 \rangle&amp;lt;/math&amp;gt;, подставив в него формулу (2). Мы получим ноль. Равенство нулю скалярного произведения векторов означает, что эти векторы ортогональны. Затем вычислим скалярное произведение &amp;lt;math&amp;gt;\langle \mathbf{b}_1, \mathbf{b}_3 \rangle&amp;lt;/math&amp;gt;, используя результат для &amp;lt;math&amp;gt;\langle \mathbf{b}_1, \mathbf{b}_2 \rangle&amp;lt;/math&amp;gt; и формулу (3). Мы снова получим ноль, то есть векторы &amp;lt;math&amp;gt;\mathbf{b}_1&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\mathbf{b}_3&amp;lt;/math&amp;gt; ортогональны. Общее доказательство выполняется методом математической индукции.&lt;br /&gt;
&lt;br /&gt;
===== Геометрическая интерпретация — вариант 1 =====&lt;br /&gt;
[[Файл:Gram-Schmidt-step2.svg|right|frame|Рис. 1. Второй шаг процесса Грама — Шмидта]]&lt;br /&gt;
Рассмотрим формулу (2) — второй шаг алгоритма.&lt;br /&gt;
Её геометрическое представление изображено на рис. 1:&lt;br /&gt;
&lt;br /&gt;
1 — получение проекции вектора &amp;lt;math&amp;gt;\mathbf{a}_2&amp;lt;/math&amp;gt; на &amp;lt;math&amp;gt;\mathbf{b}_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
2 — вычисление &amp;lt;math&amp;gt;\mathbf{a}_2-\mathbf{proj}_{\mathbf{b}_1}\mathbf{a}_2&amp;lt;/math&amp;gt;, то есть [[перпендикуляр]]а, которым выполняется проецирование конца &amp;lt;math&amp;gt;\mathbf{a}_2&amp;lt;/math&amp;gt; на &amp;lt;math&amp;gt;\mathbf{b}_1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Этот перпендикуляр — вычисляемый в формуле (2) вектор &amp;lt;math&amp;gt;\mathbf{b}_2&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
3 — перемещение полученного на шаге 2 вектора &amp;lt;math&amp;gt;\mathbf{b}_2&amp;lt;/math&amp;gt; в начало координат. Это перемещение сделано на рисунке лишь для наглядности. Оно не является математическим действием и поэтому не отражается в формуле (2).&lt;br /&gt;
&lt;br /&gt;
На рисунке видно, что вектор &amp;lt;math&amp;gt;\mathbf{b}_2&amp;lt;/math&amp;gt; ортогонален вектору &amp;lt;math&amp;gt;\mathbf{b}_1&amp;lt;/math&amp;gt;, так как &amp;lt;math&amp;gt;\mathbf{b}_2&amp;lt;/math&amp;gt; является перпендикуляром, по которому &amp;lt;math&amp;gt;\mathbf{a}_2&amp;lt;/math&amp;gt; проецируется на &amp;lt;math&amp;gt;\mathbf{b}_1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим формулу (3) — третий шаг алгоритма — в следующем варианте:&lt;br /&gt;
: &amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{lcr}&lt;br /&gt;
\mathbf{b}_3 = \mathbf{a}_3-(\mathbf{proj}_{\mathbf{b}_1}\mathbf{a}_3+\mathbf{proj}_{\mathbf{b}_2}\mathbf{a}_3) &amp;amp; &amp;amp; (6) \\&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Её геометрическое представление изображено на рис. 2:&lt;br /&gt;
[[Файл:Gram-schmidt-step3base1.png|center|frame|Рис. 2. Третий шаг процесса Грама — Шмидта]]&lt;br /&gt;
&lt;br /&gt;
1 — получение проекции вектора &amp;lt;math&amp;gt;\mathbf{a}_3&amp;lt;/math&amp;gt; на &amp;lt;math&amp;gt;\mathbf{b}_1&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
2 — получение проекции вектора &amp;lt;math&amp;gt;\mathbf{a}_3&amp;lt;/math&amp;gt; на &amp;lt;math&amp;gt;\mathbf{b}_2&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
3 — вычисление суммы &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b}_1}\mathbf{a}_3 + \mathbf{proj}_{\mathbf{b}_2}\mathbf{a}_3&amp;lt;/math&amp;gt;, то есть проекции вектора &amp;lt;math&amp;gt;\mathbf{a}_3&amp;lt;/math&amp;gt; на плоскость, образуемую векторами &amp;lt;math&amp;gt;\mathbf{b}_1&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\mathbf{b}_2&amp;lt;/math&amp;gt;. Эта плоскость закрашена на рисунке серым цветом;&lt;br /&gt;
&lt;br /&gt;
4 — вычисление &amp;lt;math&amp;gt;\mathbf{a}_3-(\mathbf{proj}_{\mathbf{b}_1}\mathbf{a}_3 + \mathbf{proj}_{\mathbf{b}_2}\mathbf{a}_3)&amp;lt;/math&amp;gt;, то есть перпендикуляра, которым выполняется проецирование конца &amp;lt;math&amp;gt;\mathbf{a}_3&amp;lt;/math&amp;gt; на плоскость, образуемую векторами &amp;lt;math&amp;gt;\mathbf{b}_1&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\mathbf{b}_2&amp;lt;/math&amp;gt;. Этот перпендикуляр — вычисляемый в формуле (6) вектор &amp;lt;math&amp;gt;\mathbf{b}_3&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
5 — перемещение полученного &amp;lt;math&amp;gt;\mathbf{b}_3&amp;lt;/math&amp;gt; в начало координат. Это перемещение сделано на рисунке лишь для наглядности. Оно не является математическим действием и поэтому не отражается в формуле (6).&lt;br /&gt;
&lt;br /&gt;
На рисунке видно, что вектор &amp;lt;math&amp;gt;\mathbf{b}_3&amp;lt;/math&amp;gt; ортогонален векторам &amp;lt;math&amp;gt;\mathbf{b}_1&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\mathbf{b}_2&amp;lt;/math&amp;gt;, так как &amp;lt;math&amp;gt;\mathbf{b}_3&amp;lt;/math&amp;gt; является перпендикуляром, по которому &amp;lt;math&amp;gt;\mathbf{a}_3&amp;lt;/math&amp;gt; проецируется на плоскость, образуемую векторами &amp;lt;math&amp;gt;\mathbf{b}_1&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\mathbf{b}_2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе Грама — Шмидта для вычисления &amp;lt;math&amp;gt;\mathbf{b}_j&amp;lt;/math&amp;gt; выполняется проецирование &amp;lt;math&amp;gt;\mathbf{a}_j&amp;lt;/math&amp;gt; ортогонально на [[гиперплоскость]]?, формируемую векторами &amp;lt;math&amp;gt;\mathbf{b}_1,\;\ldots,\;\mathbf{b}_{j-1}&amp;lt;/math&amp;gt;. Вектор &amp;lt;math&amp;gt;\mathbf{b}_j&amp;lt;/math&amp;gt; затем вычисляется как разность между &amp;lt;math&amp;gt;\mathbf{a}_j&amp;lt;/math&amp;gt; и его проекцией. То есть &amp;lt;math&amp;gt;\mathbf{b}_j&amp;lt;/math&amp;gt; — это перпендикуляр? от конца &amp;lt;math&amp;gt;\mathbf{a}_j&amp;lt;/math&amp;gt; к гиперплоскости?, формируемой векторами &amp;lt;math&amp;gt;\mathbf{b}_1,\;\ldots,\;\mathbf{b}_{j-1}&amp;lt;/math&amp;gt;. Поэтому &amp;lt;math&amp;gt;\mathbf{b}_j&amp;lt;/math&amp;gt; ортогонален векторам, образующим эту гиперплоскость?.&lt;br /&gt;
&lt;br /&gt;
===== Численная неустойчивость =====&lt;br /&gt;
При вычислении на ЭВМ по формулам (1) — (5) векторы &amp;lt;math&amp;gt;\mathbf{b}_1,\;\ldots,\;\mathbf{b}_{N-1}&amp;lt;/math&amp;gt; часто не точно ортогональны из-за [[Ошибка квантования|ошибок округления]]. Из-за потери ортогональности в процессе вычислений классический процесс Грама — Шмидта называют [[Численная устойчивость|численно неустойчивым]].&lt;br /&gt;
&lt;br /&gt;
==== Модифицированный процесс Грама — Шмидта ====&lt;br /&gt;
Процесс Грама — Шмидта может быть сделан более вычислительно устойчивым путём небольшой модификации. Вместо вычисления &amp;lt;math&amp;gt;\mathbf{b}_j&amp;lt;/math&amp;gt; как: &amp;lt;math&amp;gt; \mathbf{b}_j = \mathbf{a}_j - \mathbf{proj}_{\mathbf{b}_1}\,\mathbf{a}_j - \mathbf{proj}_{\mathbf{b}_2}\,\mathbf{a}_j - \ldots - \mathbf{proj}_{\mathbf{b}_{j-1}}\,\mathbf{a}_j  \; (7) &amp;lt;/math&amp;gt; этот вектор вычисляется следующим образом:&lt;br /&gt;
: &amp;lt;math&amp;gt; \begin{array}{lclr}&lt;br /&gt;
\mathbf{a}_j^{(1)} &amp;amp; = &amp;amp;\mathbf{a}_j - \mathbf{proj}_{\mathbf{b}_1}\,\mathbf{a}_j &amp;amp; (8) \\&lt;br /&gt;
\mathbf{a}_j^{(2)} &amp;amp; = &amp;amp;\mathbf{a}_j^{(1)} - \mathbf{proj}_{\mathbf{b}_2} \, \mathbf{a}_j^{(1)} &amp;amp; (9) \\&amp;amp; \vdots &amp;amp; &amp;amp; \\&lt;br /&gt;
\mathbf{a}_j^{(j-2)} &amp;amp; = &amp;amp; \mathbf{a}_j^{(j-3)} - \mathbf{proj}_{\mathbf{b}_{j-2}} \, \mathbf{a}_j^{(j-3)} &amp;amp; (10) \\&lt;br /&gt;
\mathbf{b}_j &amp;amp; = &amp;amp; \mathbf{a}_j^{(j-2)} - \mathbf{proj}_{\mathbf{b}_{j-1}} \, \mathbf{a}_j^{(j-2)} &amp;amp; (11)&lt;br /&gt;
\end{array} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Вычислительное ядро последовательной версии метода ортогонализации Грамма-Шмидта можно составить из множественных (всего их &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt;) вычислений проекций : &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
Данный алгоритм использует в качестве составных частей другие алгоритмы. В дальнейшем имеет смысл описывать алгоритм не в максимально детализированном виде (т.е. на уровне арифметических операций), а давать только его макроструктуру, то есть описывает структуру и состав макроопераций. Типичной макрооперацией, часто встречающиеся в алгоритме является оператор проекции векторов. Как записано и в описании ядра алгоритма, основную часть метода ортогонализации Грамма-Шмидта составляют множественные (всего их &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt;) вычисления оператора проекции.&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Следующий алгоритм реализует нормализацию Грамма-Шмидта. Векторы &amp;lt;math&amp;gt;v_1,...,v_k&amp;lt;/math&amp;gt; заменяются набором ортонормированных векторов, которые имеют ту же линейную оболочку.&lt;br /&gt;
[[File:Gram-Schmidt ortho.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
Вычислительная сложность этого &amp;lt;math&amp;gt;2Nk^2&amp;lt;/math&amp;gt; операции с плавающей точкой, где N - размерность векторов.&lt;br /&gt;
&lt;br /&gt;
Последовательность исполнения метода следующая:&lt;br /&gt;
&lt;br /&gt;
1. &amp;lt;math&amp;gt;\mathbf  {b}_{1}=\mathbf  {a}_{1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Далее для всех векторов &amp;lt;math&amp;gt;\mathbf  {b}_{i}&amp;lt;/math&amp;gt; для &amp;lt;math&amp;gt;i=2 ... N&amp;lt;/math&amp;gt; производим вычисление по следующей формуле:&lt;br /&gt;
&amp;lt;math&amp;gt;{\mathbf  {b}}_{i}={\mathbf  {a}}_{i}-\displaystyle \sum _{{j=1}}^{{i-1}}{\mathbf  {proj}}_{{{\mathbf  {b}}_{j}}}\,{\mathbf  {a}}_{i}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
В ней на каждом шаге &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; по очереди вычисляются все &amp;lt;math&amp;gt;{\mathbf  {proj}}_{{{\mathbf  {b}}_{j}}}\,{\mathbf  {a}}_{i}&amp;lt;/math&amp;gt; для &amp;lt;math&amp;gt;j=1 ... i-1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример реализации на Python. Функция работает для произвольного количества векторов любой размерности. При этом если количество векторов &amp;lt;math&amp;gt;\mathbf{a}_1,\;\ldots,\;\mathbf{a}_N&amp;lt;/math&amp;gt; больше их размерности или они линейно зависимы то функция возвращает максимально возможное число линейно независимых векторов &amp;lt;math&amp;gt;\mathbf{b}_1,\;\ldots,\;\mathbf{b}_n&amp;lt;/math&amp;gt;, а остальные векторы &amp;lt;math&amp;gt;\mathbf{b}_{n+1},\;\ldots,\;\mathbf{b}_N&amp;lt;/math&amp;gt; нулевые.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import random&lt;br /&gt;
&lt;br /&gt;
def GramSchmidt(*a):&lt;br /&gt;
    k=len(a[0])&lt;br /&gt;
    N=len(a);&lt;br /&gt;
    b = [[0] * k for i in range(N)]&lt;br /&gt;
    b[0]=a[0]&lt;br /&gt;
    for i in range(1,N):&lt;br /&gt;
        sum=a[i]&lt;br /&gt;
        for j in range(0,i):&lt;br /&gt;
            scolar_ab=0&lt;br /&gt;
            scolar_bb=0&lt;br /&gt;
            proj=[i for i in range(k)]&lt;br /&gt;
            for n in range(k):&lt;br /&gt;
                scolar_ab+=b[j][n]*a[i][n]&lt;br /&gt;
                scolar_bb+=b[j][n]*b[j][n]&lt;br /&gt;
            for n in range(k):&lt;br /&gt;
                proj[n]=(scolar_ab/scolar_bb)*b[j][n]&lt;br /&gt;
            for n in range(k):&lt;br /&gt;
                sum[n]-=proj[n]&lt;br /&gt;
        b[i]=sum&lt;br /&gt;
    return b;&lt;br /&gt;
&lt;br /&gt;
l1=[random.randrange(0,10) for i in range(3)]&lt;br /&gt;
l2=[random.randrange(0,10) for i in range(3)]&lt;br /&gt;
l3=[random.randrange(0,10) for i in range(3)]&lt;br /&gt;
print(l1,l2,l3)&lt;br /&gt;
print(GramSchmidt(l1,l2,l3))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Для построения ортогонального набора векторов в последовательном варианте требуется:&lt;br /&gt;
&lt;br /&gt;
При k=N:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt; делений,&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)(3N-1)}{2}&amp;lt;/math&amp;gt; сложений (вычитаний),&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{3N^2 (N-1)}{2}&amp;lt;/math&amp;gt; умножений.&lt;br /&gt;
&lt;br /&gt;
При k≠N&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)}{2}&amp;lt;/math&amp;gt; делений,&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{N(N-1)(3k-1)}{2}&amp;lt;/math&amp;gt; сложений (вычитаний),&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\frac{3Nk (N-1)}{2}&amp;lt;/math&amp;gt; умножений.&lt;br /&gt;
&lt;br /&gt;
При классификации по последовательной сложности, таким образом, ортогонализация Грамма-Шмидта относится к алгоритмам с кубической сложностью.&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
Опишем граф алгоритма как аналитически, так и в виде рисунка.&lt;br /&gt;
&lt;br /&gt;
Граф алгоритма состоит из двух групп вершин, расположенных в целочисленных узлах двух областей.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Первая&#039;&#039;&#039; группа вершин расположена в двумерной области, соответствующая ей операция &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i} = {\langle \mathbf{a_i}, \mathbf{b_j} \rangle \over \langle \mathbf{b_j}, \mathbf{b_j}\rangle} \mathbf{b_j} ,&amp;lt;/math&amp;gt; . &lt;br /&gt;
&lt;br /&gt;
Естественно введённые координаты области таковы:&lt;br /&gt;
&lt;br /&gt;
i — меняется в диапазоне от 2 до N, принимая все целочисленные значения;&lt;br /&gt;
&lt;br /&gt;
j — меняется в диапазоне от 1 до i-1, принимая все целочисленные значения.&lt;br /&gt;
&lt;br /&gt;
Аргументы операции следующие:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a_i&amp;lt;/math&amp;gt;:&lt;br /&gt;
элементы входных данных, а именно &amp;lt;math&amp;gt;a_i&amp;lt;/math&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;b_j&amp;lt;/math&amp;gt;: &lt;br /&gt;
результат срабатывания операции, соответствующей вершине из второй группы, с координатой j.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Вторая&#039;&#039;&#039; группа вершин расположена в двухмерной области, соответствующая ей операция  &amp;lt;math&amp;gt;a - b&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Естественно введённые координаты области таковы: &lt;br /&gt;
&lt;br /&gt;
i — меняется в диапазоне от 2 до N, принимая все целочисленные значения;&lt;br /&gt;
&lt;br /&gt;
j — меняется в диапазоне от 1 до i-1, принимая все целочисленные значения.&lt;br /&gt;
&lt;br /&gt;
Аргументы операции следующие:&lt;br /&gt;
&lt;br /&gt;
a:&lt;br /&gt;
&lt;br /&gt;
j=1 - входные данные &amp;lt;math&amp;gt;a_j&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
j&amp;gt;1 - результат срабатывания операции, соответствующей вершине из второй группы, с координатой j-1&lt;br /&gt;
&lt;br /&gt;
b: &lt;br /&gt;
&lt;br /&gt;
результат срабатывания операции, соответствующей вершине из первой группы, с координатой j&lt;br /&gt;
[[Файл:picture00001.jpg|мини|upright=2|centre|frame|Рис. 5. Граф алгоритма с отображением входных и выходных данных. Proj - вычисление оператора проекции, F - операция a-b, In - входные данные, Out - результаты.]]&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
В параллельном варианте, в отличие от последовательного, вычисления  &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i}&amp;lt;/math&amp;gt;  можно выполнять параллельно. То есть после каждого вычисления &amp;lt;math&amp;gt;b_j&amp;lt;/math&amp;gt; можно запускать параллельное вычисление &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i}&amp;lt;/math&amp;gt; для всех &amp;lt;math&amp;gt;i=j+1..N&amp;lt;/math&amp;gt;. Кроме того можно параллельно производить вычитание соответствующего &amp;lt;math&amp;gt;\mathbf{proj}_{\mathbf{b_j}}\,\mathbf{a_i}&amp;lt;/math&amp;gt; для всех &amp;lt;math&amp;gt;i=j+1..N&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для ортогонализации в параллельном варианте требуется последовательно выполнить следующие ярусы:&lt;br /&gt;
* &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; ярусов в каждом из которых будет выполнятся,&lt;br /&gt;
* по &amp;lt;math&amp;gt;N - 1&amp;lt;/math&amp;gt; операторов проекций (в каждом из ярусов линейное количество проекций, в зависимости от яруса — от &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; до &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;),&lt;br /&gt;
* по &amp;lt;math&amp;gt;N - 1&amp;lt;/math&amp;gt; сложений (в каждом из ярусов линейное количество сложений, в зависимости от яруса — от &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; до &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;),&lt;br /&gt;
&lt;br /&gt;
При классификации по высоте (количество ярусов в ЯПФ ) ЯПФ, таким образом, ортогонализация Грамма-Шмидта относится к алгоритмам со сложностью &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При классификации по ширине (максимальное количество вершин в ярусе) ЯПФ его сложность будет &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Входные данные&#039;&#039;&#039;: множества линейно независимых векторов  &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\;\mathbf {a} _{N}}&amp;lt;/math&amp;gt;, каждый из которых описывается &amp;lt;math&amp;gt;\mathbf{ a_i= [a^i_1, a^i_2, ..., a^i_k]}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Дополнительные ограничения:&lt;br /&gt;
* вектора &amp;lt;math&amp;gt;{\displaystyle \mathbf {a} _{1},\;\ldots ,\;\mathbf {a} _{N}}&amp;lt;/math&amp;gt; линейно независимы, поэтому &amp;lt;math&amp;gt;k \geqslant N&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём входных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;Nk&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Выходные данные&#039;&#039;&#039;: множество ортогональных векторов &amp;lt;math&amp;gt;{\displaystyle \mathbf {b} _{1},\;\ldots ,\;\mathbf {b} _{N}} &amp;lt;/math&amp;gt;, каждый из которых описывается &amp;lt;math&amp;gt;\mathbf{ b_i= [b^i_1, b^i_2, ..., b^i_k]}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Объём выходных данных&#039;&#039;&#039;: &amp;lt;math&amp;gt;Nk&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
Соотношение последовательной и параллельной сложности в случае неограниченных ресурсов, как хорошо видно, является линейным (отношение кубической к квадратичной).&lt;br /&gt;
&lt;br /&gt;
При этом вычислительная мощность алгоритма, как отношение числа операций к суммарному объему входных и выходных данных, также линейна.&lt;br /&gt;
&lt;br /&gt;
Алгоритм почти полностью детерминирован — единственность результата выполнения гарантирована, однако возможно накопление ошибок округления при использовании классического процесса Грама-Шмидта. При этом модифицированный алгоритм дает более хороший результат.&lt;br /&gt;
&lt;br /&gt;
Алгоритм является численно неустойчивым — ошибки округления могут привести к неортогональности полученных векторов.&lt;br /&gt;
&lt;br /&gt;
Процесс Грама — Шмидта может применяться также к бесконечной последовательности линейно независимых векторов.&lt;br /&gt;
&lt;br /&gt;
Кроме того, процесс Грама — Шмидта может применяться к линейно зависимым векторам. В этом случае он выдаёт &amp;lt;math&amp;gt;\mathbf{0}&amp;lt;/math&amp;gt; (нулевой вектор) на шаге &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt;, если &amp;lt;math&amp;gt;\mathbf{a}_j&amp;lt;/math&amp;gt; является линейной комбинацией векторов &amp;lt;math&amp;gt;\mathbf{a}_1,\;\ldots,\;\mathbf{a}_{j-1}&amp;lt;/math&amp;gt;. Если это может случиться, то для сохранения ортогональности выходных векторов и для предотвращения деления на ноль при ортонормировании алгоритм должен делать проверку на нулевые векторы и отбрасывать их. Количество векторов, выдаваемых алгоритмом, будет равно размерности подпространства, порождённого векторами (т.е. количеству линейно независимых векторов, которые можно выделить среди исходных векторов).&lt;br /&gt;
&lt;br /&gt;
Процесс Грама ― Шмидта может быть истолкован как разложение невырожденной квадратной матрицы в произведение ортогональной (или унитарной матрицы в случае эрмитова пространства) и верхнетреугольной матрицы с положительными диагональными элементами ― QR-разложение, что есть частный случай разложения Ивасавы.&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25301</id>
		<title>Классификация алгоритмов</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%BE%D0%B2&amp;diff=25301"/>
		<updated>2018-01-20T12:01:05Z</updated>

		<summary type="html">&lt;p&gt;Frolov: /* Векторные операции */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
=Векторные операции=&lt;br /&gt;
# {{level|Суммирование сдваиванием}}&lt;br /&gt;
## {{level|Нахождение суммы элементов массива сдваиванием}}&lt;br /&gt;
## {{level|Нахождение частных сумм элементов массива сдваиванием}}&lt;br /&gt;
# {{level|Равномерная норма вектора, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Скалярное произведение векторов, вещественная версия, последовательно-параллельный вариант}}&lt;br /&gt;
# {{level|Последовательно-параллельный метод суммирования}}&lt;br /&gt;
=Матрично-векторные операции=&lt;br /&gt;
# {{level|Умножение плотной матрицы на вектор}}&lt;br /&gt;
## {{level|Умножение плотной неособенной матрицы на вектор (последовательный вещественный вариант)}}&lt;br /&gt;
&lt;br /&gt;
=Матричные операции=&lt;br /&gt;
# {{level|Умножение плотных матриц}}&lt;br /&gt;
## {{level|Перемножение плотных неособенных матриц (последовательный вещественный вариант)}}&lt;br /&gt;
## {{level|Метод Штрассена}}&lt;br /&gt;
=Разложения матриц=&lt;br /&gt;
{{level|Задача разложения матриц}}&lt;br /&gt;
# {{level|Треугольные разложения}}&lt;br /&gt;
## {{level|Метод Гаусса (нахождение LU-разложения)}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса без перестановок}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса}}&lt;br /&gt;
#### {{level|Компактная схема метода Гаусса и её модификации}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для плотной матрицы}}&lt;br /&gt;
##### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы и её модификации}}&lt;br /&gt;
###### {{level|Компактная схема метода Гаусса для трёхдиагональной матрицы, последовательный вариант}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Последовательно-параллельный алгоритм для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
### {{level|LU-разложение методом Гаусса с перестановками}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по столбцу}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по строке}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по главной диагонали}}&lt;br /&gt;
#### {{level|LU-разложение методом Гаусса с выбором ведущего элемента по всей матрице}}&lt;br /&gt;
## {{level|Метод Холецкого (нахождение симметричного треугольного разложения)}}&lt;br /&gt;
### {{level|Разложение Холецкого (метод квадратного корня)}} базовый точечный вещественный вариант для плотной симметричной положительно-определённой матрицы&lt;br /&gt;
# {{level|Известные треугольные разложения для матриц специального вида}}&lt;br /&gt;
# {{level|Унитарно-треугольные разложения}}&lt;br /&gt;
## {{level|QR-разложения плотных неособенных матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Гивенса (вращений) QR-разложения квадратной матрицы (вещественный точечный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения матрицы}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) QR-разложения квадратной матрицы, вещественный точечный вариант}}&lt;br /&gt;
### {{level|Метод ортогонализации}}&lt;br /&gt;
#### {{level|Классический метод ортогонализации}}&lt;br /&gt;
#### {{level|Метод ортогонализации с переортогонализацией}}&lt;br /&gt;
### {{level|Метод треугольного разложения матрицы Грама}}&lt;br /&gt;
## {{level|Методы QR-разложения плотных хессенберговых матриц}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) QR-разложения хессенберговой матрицы (вещественный вариант)}}&lt;br /&gt;
# {{level|Подобные разложения}}&lt;br /&gt;
## {{level|Подобные разложения на унитарные и хессенберговы матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|Классический точечный метод Гивенса (вращений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
## {{level|Симметричные разложения на унитарные и трёхдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к трёхдиагональной форме}}&lt;br /&gt;
## {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
# {{level|Неподобные унитарные разложения}}&lt;br /&gt;
## {{level|Неподобные разложения на унитарные и двухдиагональные матрицы}}&lt;br /&gt;
### {{level|Метод Хаусхолдера (отражений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
### {{level|Метод Гивенса (вращений) приведения матрицы к двухдиагональной форме}}&lt;br /&gt;
## {{level|Разложения на унитарные и диагональные матрицы}}&lt;br /&gt;
### {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
#### {{level|Методы нахождения сингулярных чисел двухдиагональных матриц}}&lt;br /&gt;
##### {{level|Алгоритм dqds нахождения сингулярных чисел двухдиагональной матрицы}}&lt;br /&gt;
###### {{level|Итерация алгоритма dqds}}&lt;br /&gt;
=Решение систем линейных уравнений=&lt;br /&gt;
# {{level|Прямые методы решения СЛАУ}}&lt;br /&gt;
## {{level|Linpack benchmark}}&lt;br /&gt;
## {{level|Методы решения СЛАУ с матрицами специального вида}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с треугольными матрицами}}&lt;br /&gt;
#### {{level|Прямая подстановка (вещественный вариант)|Прямая подстановка}}&lt;br /&gt;
#### {{level|Обратная подстановка (вещественный вариант)|Обратная подстановка}}&lt;br /&gt;
#### {{level|Методы решения СЛАУ с двудиагональными матрицами}}&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант обратной подстановки}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с трёхдиагональными матрицами}}&lt;br /&gt;
#### {{level|Методы, основанные на стандартном LU-разложении матрицы}}&lt;br /&gt;
##### {{level|Прогонка}}&lt;br /&gt;
###### {{level|Прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Классическая монотонная прогонка, повторный вариант}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна}}&lt;br /&gt;
###### {{level|Алгоритм сдваивания Стоуна для LU-разложения трёхдиагональной матрицы}}&lt;br /&gt;
###### {{level|Метод сдваивания Стоуна для решения двудиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Последовательно-параллельный вариант решения трёхдиагональной СЛАУ с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Метод редукции}}&lt;br /&gt;
###### {{level|Полный метод редукции}}&lt;br /&gt;
###### {{level|Повторный метод редукции для новой правой части}}&lt;br /&gt;
##### {{level|Встречная прогонка}}&lt;br /&gt;
###### {{level|Встречная прогонка, точечный вариант}}&lt;br /&gt;
###### {{level|Повторная встречная прогонка, точечный вариант}}&lt;br /&gt;
##### {{level|Метод циклической редукции}}&lt;br /&gt;
###### {{level|Полный метод циклической редукции}}&lt;br /&gt;
###### {{level|Повторный метод циклической редукции для новой правой части}}&lt;br /&gt;
##### {{level|Метод окаймления}}&lt;br /&gt;
### Методы решения СЛАУ с блочно-треугольными матрицами&lt;br /&gt;
#### {{level|Блочная прямая подстановка (вещественный вариант)|Блочная прямая подстановка}}&lt;br /&gt;
#### {{level|Блочная обратная подстановка (вещественный вариант)|Блочная обратная подстановка}}&lt;br /&gt;
#### Методы решения СЛАУ с блочно-двухдиагональными матрицами&lt;br /&gt;
##### {{level|Прямая и обратная подстановка в СЛАУ с блочно-двухдиагональной матрицей}}&lt;br /&gt;
##### {{level|Метод сдваивания Стоуна для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант обратной подстановки для решения блочно-двухдиагональных СЛАУ}}&lt;br /&gt;
### {{level|Методы решения СЛАУ с блочно-трёхдиагональными матрицами}}&lt;br /&gt;
#### Методы, основанные на стандартном LU-разложении матрицы&lt;br /&gt;
##### {{level|Блочная прогонка}}&lt;br /&gt;
##### {{level|Блочный последовательно-параллельный вариант решения с LU-разложением и обратными подстановками}}&lt;br /&gt;
#### Другие методы&lt;br /&gt;
##### {{level|Встречная прогонка, блочный вариант}}&lt;br /&gt;
##### {{level|Блочный метод циклической редукции}}&lt;br /&gt;
##### {{level|Блочный метод окаймления}}&lt;br /&gt;
## {{level|Решения СЛАУ с матрицами специального вида, имеющими известные обратные матрицы}}&lt;br /&gt;
# Итерационные методы решения СЛАУ&lt;br /&gt;
## {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
## {{level|Стабилизированный метод бисопряженных градиентов (BiCGStab)}}&lt;br /&gt;
## {{level|Алгоритм_Качмажа}}&lt;br /&gt;
=Решение систем нелинейных уравнений=&lt;br /&gt;
# {{level|Метод Ньютона для систем нелинейных уравнений}}&lt;br /&gt;
=Решения спектральных задач=&lt;br /&gt;
# {{level|Спектральное разложение (нахождение собственных значений и векторов)}}&lt;br /&gt;
## {{level|QR-алгоритм}}&lt;br /&gt;
### {{level|QR-алгоритм, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Классический точечный метод Хаусхолдера (отражений) приведения матрицы к хессенберговой (почти треугольной) форме}}&lt;br /&gt;
#### {{level|QR-алгоритм для хессенберговой матрицы, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для симметричных матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения симметричных матриц к трёхдиагональному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
### {{level|QR-алгоритм для комплексных эрмитовых матриц, используемый в SCALAPACK}}&lt;br /&gt;
#### {{level|Метод Хаусхолдера (отражений) для приведения комплексных эрмитовых матриц к трёхдиагональному симметричному виду}}&lt;br /&gt;
#### {{level|QR-алгоритм для симметричных трёхдиагональных матриц, используемый в SCALAPACK}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для решения спектральной задачи у симметричных матриц}}&lt;br /&gt;
### {{level|Классический метод Якоби (вращений) для симметричных матриц с выбором по всей матрице}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для симметричных матриц с циклическим исключением и барьерами}}&lt;br /&gt;
## {{level|Метод Ланцоша}}&lt;br /&gt;
### {{level|Алгоритм Ланцоша для точной арифметики (без переортогонализации)}}&lt;br /&gt;
# {{level|Частичная спектральная задача}}&lt;br /&gt;
## {{level|Метод бисекций}}&lt;br /&gt;
# {{level|Сингулярное разложение (нахождение сингулярных значений и векторов)}}&lt;br /&gt;
## {{level|Метод Якоби (вращений) для нахождения сингулярных значений неособенных матриц}}&lt;br /&gt;
### {{level|Метод Якоби (вращений) для нахождения сингулярных значений с циклическим перебором}}&lt;br /&gt;
### {{level|Метод Якоби для нахождения сингулярных значений со специальным подбором вращений}}&lt;br /&gt;
## {{level|QR-алгоритм в приложении к сингулярному разложению}}&lt;br /&gt;
=Тесты производительности компьютеров=&lt;br /&gt;
# {{level|High Performance Conjugate Gradient (HPCG) benchmark}}&lt;br /&gt;
# {{level|Linpack benchmark}}&lt;br /&gt;
=Преобразование Фурье=&lt;br /&gt;
# {{level|Быстрое преобразование Фурье}}&lt;br /&gt;
## {{level|Быстрое преобразование Фурье для степеней двойки}}&lt;br /&gt;
=Алгебра многочленов=&lt;br /&gt;
# {{level|Схема Горнера, вещественная версия, последовательный вариант}}&lt;br /&gt;
=Численные методы интегрирования=&lt;br /&gt;
# {{level|Квадратурные формулы}}&lt;br /&gt;
# {{level|Квадратурные (кубатурные) методы численного интегрирования по отрезку (многомерному кубу)}}&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод прямоугольников|Метод прямоугольников]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод трапеций|Метод трапеций]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод парабол (метод Симпсона)|Метод парабол (метод Симпсона)]]&lt;br /&gt;
## [[Квадратурные_(кубатурные)_методы_численного_интегрирования_по_отрезку_(многомерному_кубу)#Метод Гаусса|Метод Гаусса]]&lt;br /&gt;
=Алгоритмы на графах=&lt;br /&gt;
# Обход графа&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}}&lt;br /&gt;
## {{level|Поиск в глубину (DFS)}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути от одной вершины (SSSP)}}&lt;br /&gt;
## {{level|Поиск в ширину (BFS)}} (для невзвешенных графов)&lt;br /&gt;
## {{level|Алгоритм Дейкстры}}&lt;br /&gt;
## {{level|Алгоритм Беллмана-Форда}}&lt;br /&gt;
## {{level|Алгоритм Δ-шагания}}&lt;br /&gt;
# {{level|Поиск кратчайшего пути для всех пар вершин (APSP)}}&lt;br /&gt;
## {{level|Алгоритм Джонсона}}&lt;br /&gt;
## {{level|Алгоритм Флойда-Уоршелла}}&lt;br /&gt;
# {{level|Поиск транзитивного замыкания орграфа}}&lt;br /&gt;
## {{level|Алгоритм Пурдома}}&lt;br /&gt;
# {{level|Определение диаметра графа}}&lt;br /&gt;
# {{level|Построение минимального остовного дерева (MST)}}&lt;br /&gt;
## {{level|Алгоритм Борувки}}&lt;br /&gt;
## {{level|Алгоритм Крускала}}&lt;br /&gt;
## {{level|Алгоритм Прима}}&lt;br /&gt;
## {{level|Алгоритм GHS}}&lt;br /&gt;
# {{level|Поиск изоморфных подграфов}}&lt;br /&gt;
## {{level|Алгоритм Ульмана}}&lt;br /&gt;
## {{level|Алгоритм VF2}}&lt;br /&gt;
# {{level|Связность в графах}}&lt;br /&gt;
## {{level|Алгоритм Шилоаха-Вишкина поиска компонент связности}}&lt;br /&gt;
## {{level|Система непересекающихся множеств}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм DCSC поиска компонент сильной связности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна-Вишкина поиска компонент двусвязности}}&lt;br /&gt;
## {{level|Алгоритм Тарьяна поиска «мостов» в графе}}&lt;br /&gt;
## {{level|Определение вершинной связности графа}}&lt;br /&gt;
## {{level|Алгоритм Габова определения рёберной связности графа}}&lt;br /&gt;
# {{level|Поиск максимального потока в транспортной сети}}&lt;br /&gt;
## {{level|Алгоритм Форда-Фалкерсона}}&lt;br /&gt;
## {{level|Алгоритм проталкивания предпотока}}&lt;br /&gt;
# {{level|Поиск потока минимальной стоимости в транспортной сети}}&lt;br /&gt;
# {{level|Задача о назначениях}}&lt;br /&gt;
## {{level|Венгерский алгоритм}}&lt;br /&gt;
## {{level|Алгоритм аукциона}}&lt;br /&gt;
## {{level|Алгоритм Гопкрофта-Карпа}}&lt;br /&gt;
# {{level|Вычисление betweenness centrality|Вычисление центральности вершин}}&lt;br /&gt;
=Алгоритмы поиска=&lt;br /&gt;
# {{level|Линейный поиск - находит элемент в любом списке|Линейный поиск}}, &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;&lt;br /&gt;
# {{level|Двоичный поиск - находит элемент в отсортированном списке|Двоичный поиск}}, &amp;lt;math&amp;gt;O(\log(n))&amp;lt;/math&amp;gt;&lt;br /&gt;
=Алгоритмы сортировки=&lt;br /&gt;
# {{level|Сортировка с помощью двоичного дерева}}&lt;br /&gt;
# {{level|Сортировка пузырьком}}&lt;br /&gt;
# {{level|Сортировка слиянием (последовательный и параллельный варианты)}}&lt;br /&gt;
=Вычислительная геометрия=&lt;br /&gt;
# {{level|Поиск диаметра множества точек}}&lt;br /&gt;
# {{level|Построение выпуклой оболочки набора точек}}&lt;br /&gt;
# {{level|Триангуляция Делоне}}&lt;br /&gt;
# {{level|Диаграмма Вороного}}&lt;br /&gt;
# {{level|Принадлежность точки многоугольнику}}&lt;br /&gt;
# {{level|Пересечения выпуклых многоугольников}} - трудоёмкость &amp;lt;math&amp;gt;O(n_1 + n_2)&amp;lt;/math&amp;gt;&lt;br /&gt;
# {{level|Пересечение звёздных многоугольников}} - трудоёмкость &amp;lt;math&amp;gt;O(n_1 \cdot n_2)&amp;lt;/math&amp;gt;&lt;br /&gt;
=Компьютерная графика=&lt;br /&gt;
# {{level|Алгоритмы построения отрезка - алгоритмы для аппроксимации отрезка на дискретной графической поверхности}}&lt;br /&gt;
# {{level|Алгоритм определения видимых частей трёхмерной сцены}}&lt;br /&gt;
# {{level|Трассировка лучей - рендеринг реалистичных изображений}}&lt;br /&gt;
# {{level|Глобальное освещение - рассматривает прямое освещение и отражение от других объектов}}&lt;br /&gt;
=Криптографические алгоритмы=&lt;br /&gt;
# {{level|Метод встречи посередине}}&lt;br /&gt;
=Нейронные сети=&lt;br /&gt;
# {{level|Распознование образов}}&lt;br /&gt;
## {{level|Распознование текста}}&lt;br /&gt;
## {{level|Распознование речи}}&lt;br /&gt;
## {{level|Распознование лиц}}&lt;br /&gt;
=Алгоритмы оптимизации=&lt;br /&gt;
# {{level|Линейное программирование}}&lt;br /&gt;
# {{level|Симплекс-метод}}&lt;br /&gt;
# {{level|Метод ветвей и границ}}&lt;br /&gt;
# {{level|Генетические алгоритмы}}&lt;br /&gt;
# {{level|Муравьиные алгоритмы}}&lt;br /&gt;
# {{level|Комбинированные алгоритмы}}&lt;br /&gt;
# {{level|Стохастическое двойственное динамическое программирование (SDDP)}}&lt;br /&gt;
=Алгоритмы машинного обучения=&lt;br /&gt;
# {{level|Алгоритм k средних (k-means)}}&lt;br /&gt;
=Алгоритмы теории игр=&lt;br /&gt;
=Алгоритмы моделирования квантовых систем=&lt;br /&gt;
# {{level|Алгоритмы моделирования квантовых вычислений}}&lt;br /&gt;
## {{level|Однокубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Двухкубитное преобразование вектора-состояния}}&lt;br /&gt;
## {{level|Моделирование квантового преобразования Фурье}}&lt;br /&gt;
=Алгоритмы решения уравнений математической физики=&lt;br /&gt;
# {{level|Уравнение Пуассона, решение дискретным преобразованием Фурье}}&lt;br /&gt;
=Другие алгоритмы=&lt;br /&gt;
&lt;br /&gt;
[[en:Algorithm classification]]&lt;br /&gt;
&lt;br /&gt;
[[Категория:Алгоритмы|*]]&lt;/div&gt;</summary>
		<author><name>Frolov</name></author>
	</entry>
</feed>