<?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=Ivanov+Andrey</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=Ivanov+Andrey"/>
	<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/Ivanov_Andrey"/>
	<updated>2026-10-22T15:11:44Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3989</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3989"/>
		<updated>2016-07-19T20:05:38Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Возможные способы и особенности параллельной реализации алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt; (количества измерений).&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный граф алгоритма (см. Рис. 3). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;
* операция [[SAXPY]];&lt;br /&gt;
* вычисление евклидовой нормы вектора.&lt;br /&gt;
&lt;br /&gt;
При реализации параллельной версии алгоритма на системах с общей памятью параллельную программу можно разделить на следующие этапы. &lt;br /&gt;
# Распределение памяти, загрузка исходных данных, уточнение параметров параллелизации.&lt;br /&gt;
# Предрасчет проекционной последовательности (для рандомизированной реализации, оказывается эффективнее сгенерировать случайную последовательность из &amp;lt;math&amp;gt;j(k)&amp;lt;/math&amp;gt; заранее).&lt;br /&gt;
# Вычисление приближения решения.&lt;br /&gt;
# Сохранение результатов.&lt;br /&gt;
&lt;br /&gt;
Для параллельных реализаций алгоритма достаточно иметь соответсвующие реализации для  [[BLAS]] &#039;&#039;(Basic Linear Algebra Subprograms)&#039;&#039;  операций. К примеру, одна из модификаций алгоритма Качмажа для решения задачи регуляризации А.Н. Тихонова представлена в &amp;lt;ref name=&amp;quot;Sidorov_Jdanov&amp;quot;&amp;gt;А.И. Жданов, Ю.В. Сидоров. Параллельная реализация рандомизированного регуляризованного алгоритма Качмажа / Компьютерная оптика. - 2015. - Т.39(4). - С. 536-541 &amp;lt;/ref&amp;gt; (&#039;&#039;описание данной модификации выходит за рамки содержания данной публикации&#039;&#039;). В этой работе использовались функции&lt;br /&gt;
* &#039;&#039;cblas_ddoti&#039;&#039; - скалярное произведение векторов,&lt;br /&gt;
* &#039;&#039;cblas_daxpyi&#039;&#039; - реализация операции [[SAXPY]],&lt;br /&gt;
из библиотеки базовых математических операций [https://software.intel.com/en-us/intel-mkl| Intel MKL]. В статье отмечается, что за счет распараллеливания макро-операций представленная реализация позволила уменьшить время решения задачи от 2 до 4 раз по сравнению с последовательной версией.&lt;br /&gt;
&lt;br /&gt;
Реализации базовых операций линейной алгебры существуют и для графических процессоров, например, библиотека [http://docs.nvidia.com/cuda/cublas/#axzz4EsnAK5Tf| cuBLAS] для архитектуры параллельных вычислений от NVIDIA. Как отмечено в работе &amp;lt;ref&amp;gt;Elble J. M., Sahinidis N. V., Vouzis P. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems //Parallel computing. – 2010. – Т. 36. – №. 5. – С. 215-231.&amp;lt;/ref&amp;gt; параллельная реализация алгоритма Качмажа на CUDA архитектуре оказывается неэффективной за счет операций первичной инициализации и копирования между различными ОЗУ.&lt;br /&gt;
&lt;br /&gt;
Наиболее перспективными архитектурами для реализации алгоритма Качмажа, по мнению авторов, являются ARM архитектуры (&#039;&#039;Advanced RISC Machine, Acorn RISC Machine, усовершенствованная RISC-машина&#039;&#039;). Например, существенное ускорение  можно получить в реализациях для процессоров, построенных по SIMD (&#039;&#039;single instruction, multiple data — одиночный поток команд, множественный поток данных&#039;&#039;) принципу. Стоит отметить технологию [http://www.arm.com/products/processors/technologies/neon.php| ARM NEON], которая может быть применена при разработке приложений для iPhone устройств, в которых, по причине ограниченного заряда батареи и в целом вычислительных ресурсов мобильного устройства, остро стоят задачи оптимизации вычислений при обработке снимков с камеры телефона или видео-ряда в режиме реального времени.&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить, что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;. Но, затраты, связанные с операциями инициализации, обращения и копирования между основным ОЗУ и ОЗУ графического устройства, нивелируют какое-либо преимущество, получаемое за счет ускорения времени выполнения одной итерации алгоритма.&lt;br /&gt;
&lt;br /&gt;
Авторы считают, что векторные процессоры, построенные по SIMD принципам, находятся вне конкуренции для реализации алгоритма Качмажа, например, архитектура [http://www.arm.com/products/processors/technologies/neon.php| ARM NEON].&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для, в определенном смысле, информативных фрагментов изображений. Формально, это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in \mathbb{R}^{m\times n},\ u\in  \mathbb{R}^{n},\ f\in  \mathbb{R}^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3988</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3988"/>
		<updated>2016-07-19T20:03:17Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt; (количества измерений).&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный граф алгоритма (см. Рис. 3). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;
* операция [[SAXPY]];&lt;br /&gt;
* вычисление евклидовой нормы вектора.&lt;br /&gt;
&lt;br /&gt;
При реализации параллельной версии алгоритма на системах с общей памятью параллельную программу можно разделить на следующие этапы. &lt;br /&gt;
# Распределение памяти, загрузка исходных данных, уточнение параметров параллелизации.&lt;br /&gt;
# Предрасчет проекционной последовательности (для рандомизированной реализации, оказывается эффективнее сгенерировать случайную последовательность из &amp;lt;math&amp;gt;j(k)&amp;lt;/math&amp;gt; заранее).&lt;br /&gt;
# Вычисление приближения решения.&lt;br /&gt;
# Сохранение результатов.&lt;br /&gt;
&lt;br /&gt;
Для параллельных реализаций алгоритма достаточно иметь соответсвующие реализации для  [[BLAS]] &#039;&#039;(Basic Linear Algebra Subprograms)&#039;&#039;  операций. К примеру, одна из модификаций алгоритма Качмажа для решения задачи регуляризации А.Н. Тихонова представлена в &amp;lt;ref name=&amp;quot;Sidorov_Jdanov&amp;quot;&amp;gt;А.И. Жданов, Ю.В. Сидоров. Параллельная реализация рандомизированного регуляризованного алгоритма Качмажа / Компьютерная оптика. - 2015. - Т.39(4). - С. 536-541 &amp;lt;/ref&amp;gt; (&#039;&#039;описание данной модификации выходит за рамки содержания данной публикации&#039;&#039;). В этой работе использовались функции&lt;br /&gt;
* &#039;&#039;cblas_ddoti&#039;&#039; - скалярное произведение векторов,&lt;br /&gt;
* &#039;&#039;cblas_daxpyi&#039;&#039; - реализация операции [[SAXPY]],&lt;br /&gt;
из библиотеки базовых математических операций [https://software.intel.com/en-us/intel-mkl| Intel MKL]. В статье отмечается, что за счет распараллеливания макро-операций представленная реализация позволила уменьшить время решения задачи от 2 до 4 раз по сравнению с последовательной версией.&lt;br /&gt;
&lt;br /&gt;
Реализации базовых операций линейной алгебры существует и для графических процессоров, например, библиотека [http://docs.nvidia.com/cuda/cublas/#axzz4EsnAK5Tf| cuBLAS] для архитектуры параллельных вычислений от NVIDIA. Как отмечено в работе &amp;lt;ref&amp;gt;Elble J. M., Sahinidis N. V., Vouzis P. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems //Parallel computing. – 2010. – Т. 36. – №. 5. – С. 215-231.&amp;lt;/ref&amp;gt; параллельная реализация алгоритма Качмажа на CUDA архитектуре оказывается неэффективной за счет операций первичной инициализации и копирования между различными ОЗУ.&lt;br /&gt;
&lt;br /&gt;
Наиболее перспективными архитектурами для реализации алгоритма Качмажа, по мнению авторов, являются ARM архитектуры (&#039;&#039;Advanced RISC Machine, Acorn RISC Machine, усовершенствованная RISC-машина&#039;&#039;). Например, существенное ускорение  можно получить в реализациях для процессоров, построенных по SIMD (&#039;&#039;single instruction, multiple data — одиночный поток команд, множественный поток данных&#039;&#039;) принципу. Стоит отметить технологию [http://www.arm.com/products/processors/technologies/neon.php| ARM NEON], которая может быть применена при разработке приложений для iPhone устройств, в которых, по причине ограниченного заряда батареи и в целом вычислительных ресурсов мобильного устройства, остро стоят задачи оптимизации вычислений при обработке снимков с камеры телефона или видео-ряда в режиме реального времени.&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить, что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;. Но, затраты, связанные с операциями инициализации, обращения и копирования между основным ОЗУ и ОЗУ графического устройства, нивелируют какое-либо преимущество, получаемое за счет ускорения времени выполнения одной итерации алгоритма.&lt;br /&gt;
&lt;br /&gt;
Авторы считают, что векторные процессоры, построенные по SIMD принципам, находятся вне конкуренции для реализации алгоритма Качмажа, например, архитектура [http://www.arm.com/products/processors/technologies/neon.php| ARM NEON].&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для, в определенном смысле, информативных фрагментов изображений. Формально, это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in \mathbb{R}^{m\times n},\ u\in  \mathbb{R}^{n},\ f\in  \mathbb{R}^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3987</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3987"/>
		<updated>2016-07-19T20:01:52Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt; (количества измерений).&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный граф алгоритма (см. Рис. 3). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;
* операция [[SAXPY]];&lt;br /&gt;
* вычисление евклидовой нормы вектора.&lt;br /&gt;
&lt;br /&gt;
При реализации параллельной версии алгоритма на системах с общей памятью параллельную программу можно разделить на следующие этапы. &lt;br /&gt;
# Распределение памяти, загрузка исходных данных, уточнение параметров параллелизации.&lt;br /&gt;
# Предрасчет проекционной последовательности (для рандомизированной реализации, оказывается эффективнее сгенерировать случайную последовательность из &amp;lt;math&amp;gt;j(k)&amp;lt;/math&amp;gt; заранее).&lt;br /&gt;
# Вычисление приближения решения.&lt;br /&gt;
# Сохранение результатов.&lt;br /&gt;
&lt;br /&gt;
Для параллельных реализаций алгоритма достаточно иметь соответсвующие реализации для  [[BLAS]] &#039;&#039;(Basic Linear Algebra Subprograms)&#039;&#039;  операций. К примеру, одна из модификаций алгоритма Качмажа для решения задачи регуляризации А.Н. Тихонова представлена в &amp;lt;ref name=&amp;quot;Sidorov_Jdanov&amp;quot;&amp;gt;А.И. Жданов, Ю.В. Сидоров. Параллельная реализация рандомизированного регуляризованного алгоритма Качмажа / Компьютерная оптика. - 2015. - Т.39(4). - С. 536-541 &amp;lt;/ref&amp;gt; (&#039;&#039;описание данной модификации выходит за рамки содержания данной публикации&#039;&#039;). В этой работе использовались функции&lt;br /&gt;
* &#039;&#039;cblas_ddoti&#039;&#039; - скалярное произведение векторов,&lt;br /&gt;
* &#039;&#039;cblas_daxpyi&#039;&#039; - реализация операции [[SAXPY]],&lt;br /&gt;
из библиотеки базовых математических операций [https://software.intel.com/en-us/intel-mkl| Intel MKL]. В статье отмечается, что за счет распараллеливания макро-операций представленная реализация позволила уменьшить время решения задачи от 2 до 4 раз по сравнению с последовательной версией.&lt;br /&gt;
&lt;br /&gt;
Реализации базовых операций линейной алгебры существует и для графических процессоров, например, библиотека [http://docs.nvidia.com/cuda/cublas/#axzz4EsnAK5Tf| cuBLAS] для архитектуры параллельных вычислений от NVIDIA. Как отмечено в работе &amp;lt;ref&amp;gt;Elble J. M., Sahinidis N. V., Vouzis P. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems //Parallel computing. – 2010. – Т. 36. – №. 5. – С. 215-231.&amp;lt;/ref&amp;gt; параллельная реализация алгоритма Качмажа на CUDA архитектуре оказывается неэффективной за счет операций первичной инициализации и копирования между различными ОЗУ.&lt;br /&gt;
&lt;br /&gt;
Наиболее перспективными архитектурами для реализации алгоритма Качмажа, по мнению авторов, являются ARM архитектуры (&#039;&#039;Advanced RISC Machine, Acorn RISC Machine, усовершенствованная RISC-машина&#039;&#039;). Например, существенное ускорение  можно получить в реализациях для процессоров, построенных по SIMD (&#039;&#039;single instruction, multiple data — одиночный поток команд, множественный поток данных&#039;&#039;) принципу. Стоит отметить технологию [http://www.arm.com/products/processors/technologies/neon.php| ARM NEON], которая может быть применена при разработке приложений для iPhone устройств, в которых, по причине ограниченного заряда батареи и в целом вычислительных ресурсов мобильного устройства, остро стоят задачи оптимизации вычислений при обработке снимков с камеры телефона или видео-ряда в режиме реального времени.&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить, что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;. Но, затраты, связанные с операциями инициализации, обращения и копирования между основным ОЗУ и ОЗУ графического устройства, нивелируют какое-либо преимущество, получаемое за счет ускорения времени выполнения одной итерации алгоритма.&lt;br /&gt;
&lt;br /&gt;
Авторы считают, что векторные процессоры, построенные по SIMD принципам, находятся вне конкуренции для реализации алгоритма Качмажа, например, архитектура [http://www.arm.com/products/processors/technologies/neon.php| ARM NEON].&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для, в определенном смысле, информативных фрагментов изображений. Формально, это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in \mathbb{R}^{m\times n},\ u\in  \mathbb{R}^{n},\ f\in  \mathbb{R}^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3986</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3986"/>
		<updated>2016-07-19T19:53:20Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Рандомизированная версия алгоритма и скорость сходимости */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt; (количества измерений).&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный граф алгоритма (см. Рис. 3). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;
* операция [[SAXPY]];&lt;br /&gt;
* вычисление евклидовой нормы вектора.&lt;br /&gt;
&lt;br /&gt;
При реализации параллельной версии алгоритма на системах с общей памятью параллельную программу можно разделить на следующие этапы. &lt;br /&gt;
# Распределение памяти, загрузка исходных данных, уточнение параметров параллелизации.&lt;br /&gt;
# Предрасчет проекционной последовательности (для рандомизированной реализации, оказывается эффективнее сгенерировать случайную последовательность из &amp;lt;math&amp;gt;j(k)&amp;lt;/math&amp;gt; заранее).&lt;br /&gt;
# Вычисление приближения решения.&lt;br /&gt;
# Сохранение результатов.&lt;br /&gt;
&lt;br /&gt;
Для параллельных реализаций алгоритма достаточно иметь соответсвующие реализации для  [[BLAS]] &#039;&#039;(Basic Linear Algebra Subprograms)&#039;&#039;  операций. К примеру, одна из модификаций алгоритма Качмажа для решения задачи регуляризации А.Н. Тихонова представлена в &amp;lt;ref name=&amp;quot;Sidorov_Jdanov&amp;quot;&amp;gt;А.И. Жданов, Ю.В. Сидоров. Параллельная реализация рандомизированного регуляризованного алгоритма Качмажа / Компьютерная оптика. - 2015. - Т.39(4). - С. 536-541 &amp;lt;/ref&amp;gt; (&#039;&#039;описание данной модификации выходит за рамки содержания данной публикации&#039;&#039;). В этой работе использовались функции&lt;br /&gt;
* &#039;&#039;cblas_ddoti&#039;&#039; - скалярное произведение векторов,&lt;br /&gt;
* &#039;&#039;cblas_daxpyi&#039;&#039; - реализация операции [[SAXPY]],&lt;br /&gt;
из библиотеки базовых математических операций [https://software.intel.com/en-us/intel-mkl| Intel MKL]. В статье отмечается, что за счет распараллеливания макро-операций представленная реализация позволила уменьшить время решения задачи от 2 до 4 раз по сравнению с последовательной версией.&lt;br /&gt;
&lt;br /&gt;
Реализации базовых операций линейной алгебры существует и для графических процессоров, например, библиотека [http://docs.nvidia.com/cuda/cublas/#axzz4EsnAK5Tf| cuBLAS] для архитектуры параллельных вычислений от NVIDIA. Как отмечено в работе &amp;lt;ref&amp;gt;Elble J. M., Sahinidis N. V., Vouzis P. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems //Parallel computing. – 2010. – Т. 36. – №. 5. – С. 215-231.&amp;lt;/ref&amp;gt; параллельная реализация алгоритма Качмажа на CUDA архитектуре оказывается неэффективной за счет операций первичной инициализации и копирования между различными ОЗУ.&lt;br /&gt;
&lt;br /&gt;
Наиболее перспективными архитектурами для реализации алгоритма Качмажа, по мнению авторов, являются ARM архитектуры (&#039;&#039;Advanced RISC Machine, Acorn RISC Machine, усовершенствованная RISC-машина&#039;&#039;). Например, существенное ускорение  можно получить в реализациях для процессоров, построенных по SIMD (&#039;&#039;single instruction, multiple data — одиночный поток команд, множественный поток данных&#039;&#039;) принципу. Стоит отметить технологию [http://www.arm.com/products/processors/technologies/neon.php| ARM NEON], которая может быть применена при разработке приложений для iPhone устройств, в которых, по причине ограниченного заряда батареи и в целом вычислительных ресурсов мобильного устройства, остро стоят задачи оптимизации вычислений при обработке снимков с камеры телефона или видео-ряда в режиме реального времени.&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить, что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;. Но, затраты, связанные с операциями инициализации, обращения и копирования между основным ОЗУ и ОЗУ графического устройства, нивелируют какое-либо преимущество, получаемое за счет ускорения времени выполнения одной итерации алгоритма.&lt;br /&gt;
&lt;br /&gt;
Авторы считают, что векторные процессоры, построенные по SIMD принципам, находятся вне конкуренции для реализации алгоритма Качмажа, например, архитектура [http://www.arm.com/products/processors/technologies/neon.php| ARM NEON].&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для, в определенном смысле, информативных фрагментов изображений. Формально, это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in \mathbb{R}^{m\times n},\ u\in  \mathbb{R}^{n},\ f\in  \mathbb{R}^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3985</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3985"/>
		<updated>2016-07-19T19:53:07Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Рандомизированная версия алгоритма и скорость сходимости */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt; (количества измерений).&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный граф алгоритма (см. Рис. 3). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;
* операция [[SAXPY]];&lt;br /&gt;
* вычисление евклидовой нормы вектора.&lt;br /&gt;
&lt;br /&gt;
При реализации параллельной версии алгоритма на системах с общей памятью параллельную программу можно разделить на следующие этапы. &lt;br /&gt;
# Распределение памяти, загрузка исходных данных, уточнение параметров параллелизации.&lt;br /&gt;
# Предрасчет проекционной последовательности (для рандомизированной реализации, оказывается эффективнее сгенерировать случайную последовательность из &amp;lt;math&amp;gt;j(k)&amp;lt;/math&amp;gt; заранее).&lt;br /&gt;
# Вычисление приближения решения.&lt;br /&gt;
# Сохранение результатов.&lt;br /&gt;
&lt;br /&gt;
Для параллельных реализаций алгоритма достаточно иметь соответсвующие реализации для  [[BLAS]] &#039;&#039;(Basic Linear Algebra Subprograms)&#039;&#039;  операций. К примеру, одна из модификаций алгоритма Качмажа для решения задачи регуляризации А.Н. Тихонова представлена в &amp;lt;ref name=&amp;quot;Sidorov_Jdanov&amp;quot;&amp;gt;А.И. Жданов, Ю.В. Сидоров. Параллельная реализация рандомизированного регуляризованного алгоритма Качмажа / Компьютерная оптика. - 2015. - Т.39(4). - С. 536-541 &amp;lt;/ref&amp;gt; (&#039;&#039;описание данной модификации выходит за рамки содержания данной публикации&#039;&#039;). В этой работе использовались функции&lt;br /&gt;
* &#039;&#039;cblas_ddoti&#039;&#039; - скалярное произведение векторов,&lt;br /&gt;
* &#039;&#039;cblas_daxpyi&#039;&#039; - реализация операции [[SAXPY]],&lt;br /&gt;
из библиотеки базовых математических операций [https://software.intel.com/en-us/intel-mkl| Intel MKL]. В статье отмечается, что за счет распараллеливания макро-операций представленная реализация позволила уменьшить время решения задачи от 2 до 4 раз по сравнению с последовательной версией.&lt;br /&gt;
&lt;br /&gt;
Реализации базовых операций линейной алгебры существует и для графических процессоров, например, библиотека [http://docs.nvidia.com/cuda/cublas/#axzz4EsnAK5Tf| cuBLAS] для архитектуры параллельных вычислений от NVIDIA. Как отмечено в работе &amp;lt;ref&amp;gt;Elble J. M., Sahinidis N. V., Vouzis P. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems //Parallel computing. – 2010. – Т. 36. – №. 5. – С. 215-231.&amp;lt;/ref&amp;gt; параллельная реализация алгоритма Качмажа на CUDA архитектуре оказывается неэффективной за счет операций первичной инициализации и копирования между различными ОЗУ.&lt;br /&gt;
&lt;br /&gt;
Наиболее перспективными архитектурами для реализации алгоритма Качмажа, по мнению авторов, являются ARM архитектуры (&#039;&#039;Advanced RISC Machine, Acorn RISC Machine, усовершенствованная RISC-машина&#039;&#039;). Например, существенное ускорение  можно получить в реализациях для процессоров, построенных по SIMD (&#039;&#039;single instruction, multiple data — одиночный поток команд, множественный поток данных&#039;&#039;) принципу. Стоит отметить технологию [http://www.arm.com/products/processors/technologies/neon.php| ARM NEON], которая может быть применена при разработке приложений для iPhone устройств, в которых, по причине ограниченного заряда батареи и в целом вычислительных ресурсов мобильного устройства, остро стоят задачи оптимизации вычислений при обработке снимков с камеры телефона или видео-ряда в режиме реального времени.&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить, что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;. Но, затраты, связанные с операциями инициализации, обращения и копирования между основным ОЗУ и ОЗУ графического устройства, нивелируют какое-либо преимущество, получаемое за счет ускорения времени выполнения одной итерации алгоритма.&lt;br /&gt;
&lt;br /&gt;
Авторы считают, что векторные процессоры, построенные по SIMD принципам, находятся вне конкуренции для реализации алгоритма Качмажа, например, архитектура [http://www.arm.com/products/processors/technologies/neon.php| ARM NEON].&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для, в определенном смысле, информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in \mathbb{R}^{m\times n},\ u\in  \mathbb{R}^{n},\ f\in  \mathbb{R}^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3984</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3984"/>
		<updated>2016-07-19T19:51:59Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Возможные способы и особенности параллельной реализации алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt; (количества измерений).&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный граф алгоритма (см. Рис. 3). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;
* операция [[SAXPY]];&lt;br /&gt;
* вычисление евклидовой нормы вектора.&lt;br /&gt;
&lt;br /&gt;
При реализации параллельной версии алгоритма на системах с общей памятью параллельную программу можно разделить на следующие этапы. &lt;br /&gt;
# Распределение памяти, загрузка исходных данных, уточнение параметров параллелизации.&lt;br /&gt;
# Предрасчет проекционной последовательности (для рандомизированной реализации, оказывается эффективнее сгенерировать случайную последовательность из &amp;lt;math&amp;gt;j(k)&amp;lt;/math&amp;gt; заранее).&lt;br /&gt;
# Вычисление приближения решения.&lt;br /&gt;
# Сохранение результатов.&lt;br /&gt;
&lt;br /&gt;
Для параллельных реализаций алгоритма достаточно иметь соответсвующие реализации для  [[BLAS]] &#039;&#039;(Basic Linear Algebra Subprograms)&#039;&#039;  операций. К примеру, одна из модификаций алгоритма Качмажа для решения задачи регуляризации А.Н. Тихонова представлена в &amp;lt;ref name=&amp;quot;Sidorov_Jdanov&amp;quot;&amp;gt;А.И. Жданов, Ю.В. Сидоров. Параллельная реализация рандомизированного регуляризованного алгоритма Качмажа / Компьютерная оптика. - 2015. - Т.39(4). - С. 536-541 &amp;lt;/ref&amp;gt; (&#039;&#039;описание данной модификации выходит за рамки содержания данной публикации&#039;&#039;). В этой работе использовались функции&lt;br /&gt;
* &#039;&#039;cblas_ddoti&#039;&#039; - скалярное произведение векторов,&lt;br /&gt;
* &#039;&#039;cblas_daxpyi&#039;&#039; - реализация операции [[SAXPY]],&lt;br /&gt;
из библиотеки базовых математических операций [https://software.intel.com/en-us/intel-mkl| Intel MKL]. В статье отмечается, что за счет распараллеливания макро-операций представленная реализация позволила уменьшить время решения задачи от 2 до 4 раз по сравнению с последовательной версией.&lt;br /&gt;
&lt;br /&gt;
Реализации базовых операций линейной алгебры существует и для графических процессоров, например, библиотека [http://docs.nvidia.com/cuda/cublas/#axzz4EsnAK5Tf| cuBLAS] для архитектуры параллельных вычислений от NVIDIA. Как отмечено в работе &amp;lt;ref&amp;gt;Elble J. M., Sahinidis N. V., Vouzis P. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems //Parallel computing. – 2010. – Т. 36. – №. 5. – С. 215-231.&amp;lt;/ref&amp;gt; параллельная реализация алгоритма Качмажа на CUDA архитектуре оказывается неэффективной за счет операций первичной инициализации и копирования между различными ОЗУ.&lt;br /&gt;
&lt;br /&gt;
Наиболее перспективными архитектурами для реализации алгоритма Качмажа, по мнению авторов, являются ARM архитектуры (&#039;&#039;Advanced RISC Machine, Acorn RISC Machine, усовершенствованная RISC-машина&#039;&#039;). Например, существенное ускорение  можно получить в реализациях для процессоров, построенных по SIMD (&#039;&#039;single instruction, multiple data — одиночный поток команд, множественный поток данных&#039;&#039;) принципу. Стоит отметить технологию [http://www.arm.com/products/processors/technologies/neon.php| ARM NEON], которая может быть применена при разработке приложений для iPhone устройств, в которых, по причине ограниченного заряда батареи и в целом вычислительных ресурсов мобильного устройства, остро стоят задачи оптимизации вычислений при обработке снимков с камеры телефона или видео-ряда в режиме реального времени.&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить, что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;. Но, затраты, связанные с операциями инициализации, обращения и копирования между основным ОЗУ и ОЗУ графического устройства, нивелируют какое-либо преимущество, получаемое за счет ускорения времени выполнения одной итерации алгоритма.&lt;br /&gt;
&lt;br /&gt;
Авторы считают, что векторные процессоры, построенные по SIMD принципам, находятся вне конкуренции для реализации алгоритма Качмажа, например, архитектура [http://www.arm.com/products/processors/technologies/neon.php| ARM NEON].&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in \mathbb{R}^{m\times n},\ u\in  \mathbb{R}^{n},\ f\in  \mathbb{R}^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3983</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3983"/>
		<updated>2016-07-19T19:31:41Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Выводы для классов архитектур */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt; (количества измерений).&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный граф алгоритма (см. Рис. 3). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;
* операция [[SAXPY]];&lt;br /&gt;
* вычисление евклидовой нормы вектора.&lt;br /&gt;
&lt;br /&gt;
При реализации параллельной версии алгоритма на системах с общей памятью параллельную программу можно разделить на следующие этапы. &lt;br /&gt;
# Распределение памяти, загрузка исходных данных, уточнение параметров параллелизации.&lt;br /&gt;
# Предрасчет проекционной последовательности (для рандомизированной реализации, оказывается эффективнее сгенерировать случайную последовательность из &amp;lt;math&amp;gt;j(k)&amp;lt;/math&amp;gt; заранее).&lt;br /&gt;
# Вычисление приближения решения.&lt;br /&gt;
# Сохранение результатов.&lt;br /&gt;
&lt;br /&gt;
Для параллельных реализаций алгоритма достаточно иметь соответсвующие реализации для  [[BLAS]] &#039;&#039;(Basic Linear Algebra Subprograms)&#039;&#039;  операций. К примеру, одна из модификаций алгоритма Качмажа для решения задачи регуляризации А.Н. Тихонова представлена в &amp;lt;ref name=&amp;quot;Sidorov_Jdanov&amp;quot;&amp;gt;А.И. Жданов, Ю.В. Сидоров. ПАРАЛЛЕЛЬНАЯ РЕАЛИЗАЦИЯ РАНДОМИЗИРОВАННОГО РЕГУЛЯРИЗОВАННОГО АЛГОРИТМА КАЧМАЖА / Компьютерная оптика. - 2015. - Т.39(4). - С. 536-541 &amp;lt;/ref&amp;gt; (&#039;&#039;описание данной модификации выходит за рамки содержания данной публикации&#039;&#039;). В этой работе использовались функции&lt;br /&gt;
* &#039;&#039;cblas_ddoti&#039;&#039; - скалярное произведение векторов,&lt;br /&gt;
* &#039;&#039;cblas_daxpyi&#039;&#039; - реализация операции [[SAXPY]],&lt;br /&gt;
из библиотеки базовых математических операций [https://software.intel.com/en-us/intel-mkl| Intel MKL]. В статье отмечается, что за счет распараллеливания макро-операций представленная реализация позволила уменьшить время решения задачи от 2 до 4 раз по сравнению с последовательной версией.&lt;br /&gt;
&lt;br /&gt;
Реализации базовых операций линейной алгебры существует и для графических процессоров, например, библиотека [http://docs.nvidia.com/cuda/cublas/#axzz4EsnAK5Tf| cuBLAS] для архитектуры параллельных вычислений от NVIDIA. Как отмечено в работе &amp;lt;ref&amp;gt;Elble J. M., Sahinidis N. V., Vouzis P. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems //Parallel computing. – 2010. – Т. 36. – №. 5. – С. 215-231.&amp;lt;/ref&amp;gt; параллельная реализация алгоритма Качмажа на CUDA архитектуре оказывается неэффективной за счет операций первичной инициализации и копирования между различными ОЗУ.&lt;br /&gt;
&lt;br /&gt;
Наиболее перспективными архитектурами для реализации алгоритма Качмажа, по мнению авторов, являются ARM архитектуры (&#039;&#039;Advanced RISC Machine, Acorn RISC Machine, усовершенствованная RISC-машина&#039;&#039;). Например, существенное ускорение  можно получить в реализациях для процессоров, построенных по SIMD (&#039;&#039;single instruction, multiple data — одиночный поток команд, множественный поток данных&#039;&#039;) принципу. Стоит отметить технологию [http://www.arm.com/products/processors/technologies/neon.php| ARM NEON], которая может быть применена при разработке приложений для iPhone устройств, в которых, по причине ограниченного заряда батареи и в целом вычислительных ресурсов мобильного устройства, остро стоят задачи оптимизации вычислений при обработке снимков с камеры телефона или видео-ряда в режиме реального времени.&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить, что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;. Но, затраты, связанные с операциями инициализации, обращения и копирования между основным ОЗУ и ОЗУ графического устройства, нивелируют какое-либо преимущество, получаемое за счет ускорения времени выполнения одной итерации алгоритма.&lt;br /&gt;
&lt;br /&gt;
Авторы считают, что векторные процессоры, построенные по SIMD принципам, находятся вне конкуренции для реализации алгоритма Качмажа, например, архитектура [http://www.arm.com/products/processors/technologies/neon.php| ARM NEON].&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in \mathbb{R}^{m\times n},\ u\in  \mathbb{R}^{n},\ f\in  \mathbb{R}^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3982</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3982"/>
		<updated>2016-07-19T19:28:18Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Выводы для классов архитектур */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt; (количества измерений).&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный граф алгоритма (см. Рис. 3). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;
* операция [[SAXPY]];&lt;br /&gt;
* вычисление евклидовой нормы вектора.&lt;br /&gt;
&lt;br /&gt;
При реализации параллельной версии алгоритма на системах с общей памятью параллельную программу можно разделить на следующие этапы. &lt;br /&gt;
# Распределение памяти, загрузка исходных данных, уточнение параметров параллелизации.&lt;br /&gt;
# Предрасчет проекционной последовательности (для рандомизированной реализации, оказывается эффективнее сгенерировать случайную последовательность из &amp;lt;math&amp;gt;j(k)&amp;lt;/math&amp;gt; заранее).&lt;br /&gt;
# Вычисление приближения решения.&lt;br /&gt;
# Сохранение результатов.&lt;br /&gt;
&lt;br /&gt;
Для параллельных реализаций алгоритма достаточно иметь соответсвующие реализации для  [[BLAS]] &#039;&#039;(Basic Linear Algebra Subprograms)&#039;&#039;  операций. К примеру, одна из модификаций алгоритма Качмажа для решения задачи регуляризации А.Н. Тихонова представлена в &amp;lt;ref name=&amp;quot;Sidorov_Jdanov&amp;quot;&amp;gt;А.И. Жданов, Ю.В. Сидоров. ПАРАЛЛЕЛЬНАЯ РЕАЛИЗАЦИЯ РАНДОМИЗИРОВАННОГО РЕГУЛЯРИЗОВАННОГО АЛГОРИТМА КАЧМАЖА / Компьютерная оптика. - 2015. - Т.39(4). - С. 536-541 &amp;lt;/ref&amp;gt; (&#039;&#039;описание данной модификации выходит за рамки содержания данной публикации&#039;&#039;). В этой работе использовались функции&lt;br /&gt;
* &#039;&#039;cblas_ddoti&#039;&#039; - скалярное произведение векторов,&lt;br /&gt;
* &#039;&#039;cblas_daxpyi&#039;&#039; - реализация операции [[SAXPY]],&lt;br /&gt;
из библиотеки базовых математических операций [https://software.intel.com/en-us/intel-mkl| Intel MKL]. В статье отмечается, что за счет распараллеливания макро-операций представленная реализация позволила уменьшить время решения задачи от 2 до 4 раз по сравнению с последовательной версией.&lt;br /&gt;
&lt;br /&gt;
Реализации базовых операций линейной алгебры существует и для графических процессоров, например, библиотека [http://docs.nvidia.com/cuda/cublas/#axzz4EsnAK5Tf| cuBLAS] для архитектуры параллельных вычислений от NVIDIA. Как отмечено в работе &amp;lt;ref&amp;gt;Elble J. M., Sahinidis N. V., Vouzis P. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems //Parallel computing. – 2010. – Т. 36. – №. 5. – С. 215-231.&amp;lt;/ref&amp;gt; параллельная реализация алгоритма Качмажа на CUDA архитектуре оказывается неэффективной за счет операций первичной инициализации и копирования между различными ОЗУ.&lt;br /&gt;
&lt;br /&gt;
Наиболее перспективными архитектурами для реализации алгоритма Качмажа, по мнению авторов, являются ARM архитектуры (&#039;&#039;Advanced RISC Machine, Acorn RISC Machine, усовершенствованная RISC-машина&#039;&#039;). Например, существенное ускорение  можно получить в реализациях для процессоров, построенных по SIMD (&#039;&#039;single instruction, multiple data — одиночный поток команд, множественный поток данных&#039;&#039;) принципу. Стоит отметить технологию [http://www.arm.com/products/processors/technologies/neon.php| ARM NEON], которая может быть применена при разработке приложений для iPhone устройств, в которых, по причине ограниченного заряда батареи и в целом вычислительных ресурсов мобильного устройства, остро стоят задачи оптимизации вычислений при обработке снимков с камеры телефона или видео-ряда в режиме реального времени.&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить, что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;. Но, затраты, связанные с операциями инициализации, обращения и копирования между основным ОЗУ и ОЗУ графического устройства, нивелируют какое-либо преимущество, получаемое за счет ускорения времени выполнения одной итерации алгоритма.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in \mathbb{R}^{m\times n},\ u\in  \mathbb{R}^{n},\ f\in  \mathbb{R}^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3981</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3981"/>
		<updated>2016-07-19T19:24:30Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Возможные способы и особенности параллельной реализации алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt; (количества измерений).&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный граф алгоритма (см. Рис. 3). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;
* операция [[SAXPY]];&lt;br /&gt;
* вычисление евклидовой нормы вектора.&lt;br /&gt;
&lt;br /&gt;
При реализации параллельной версии алгоритма на системах с общей памятью параллельную программу можно разделить на следующие этапы. &lt;br /&gt;
# Распределение памяти, загрузка исходных данных, уточнение параметров параллелизации.&lt;br /&gt;
# Предрасчет проекционной последовательности (для рандомизированной реализации, оказывается эффективнее сгенерировать случайную последовательность из &amp;lt;math&amp;gt;j(k)&amp;lt;/math&amp;gt; заранее).&lt;br /&gt;
# Вычисление приближения решения.&lt;br /&gt;
# Сохранение результатов.&lt;br /&gt;
&lt;br /&gt;
Для параллельных реализаций алгоритма достаточно иметь соответсвующие реализации для  [[BLAS]] &#039;&#039;(Basic Linear Algebra Subprograms)&#039;&#039;  операций. К примеру, одна из модификаций алгоритма Качмажа для решения задачи регуляризации А.Н. Тихонова представлена в &amp;lt;ref name=&amp;quot;Sidorov_Jdanov&amp;quot;&amp;gt;А.И. Жданов, Ю.В. Сидоров. ПАРАЛЛЕЛЬНАЯ РЕАЛИЗАЦИЯ РАНДОМИЗИРОВАННОГО РЕГУЛЯРИЗОВАННОГО АЛГОРИТМА КАЧМАЖА / Компьютерная оптика. - 2015. - Т.39(4). - С. 536-541 &amp;lt;/ref&amp;gt; (&#039;&#039;описание данной модификации выходит за рамки содержания данной публикации&#039;&#039;). В этой работе использовались функции&lt;br /&gt;
* &#039;&#039;cblas_ddoti&#039;&#039; - скалярное произведение векторов,&lt;br /&gt;
* &#039;&#039;cblas_daxpyi&#039;&#039; - реализация операции [[SAXPY]],&lt;br /&gt;
из библиотеки базовых математических операций [https://software.intel.com/en-us/intel-mkl| Intel MKL]. В статье отмечается, что за счет распараллеливания макро-операций представленная реализация позволила уменьшить время решения задачи от 2 до 4 раз по сравнению с последовательной версией.&lt;br /&gt;
&lt;br /&gt;
Реализации базовых операций линейной алгебры существует и для графических процессоров, например, библиотека [http://docs.nvidia.com/cuda/cublas/#axzz4EsnAK5Tf| cuBLAS] для архитектуры параллельных вычислений от NVIDIA. Как отмечено в работе &amp;lt;ref&amp;gt;Elble J. M., Sahinidis N. V., Vouzis P. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems //Parallel computing. – 2010. – Т. 36. – №. 5. – С. 215-231.&amp;lt;/ref&amp;gt; параллельная реализация алгоритма Качмажа на CUDA архитектуре оказывается неэффективной за счет операций первичной инициализации и копирования между различными ОЗУ.&lt;br /&gt;
&lt;br /&gt;
Наиболее перспективными архитектурами для реализации алгоритма Качмажа, по мнению авторов, являются ARM архитектуры (&#039;&#039;Advanced RISC Machine, Acorn RISC Machine, усовершенствованная RISC-машина&#039;&#039;). Например, существенное ускорение  можно получить в реализациях для процессоров, построенных по SIMD (&#039;&#039;single instruction, multiple data — одиночный поток команд, множественный поток данных&#039;&#039;) принципу. Стоит отметить технологию [http://www.arm.com/products/processors/technologies/neon.php| ARM NEON], которая может быть применена при разработке приложений для iPhone устройств, в которых, по причине ограниченного заряда батареи и в целом вычислительных ресурсов мобильного устройства, остро стоят задачи оптимизации вычислений при обработке снимков с камеры телефона или видео-ряда в режиме реального времени.&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in \mathbb{R}^{m\times n},\ u\in  \mathbb{R}^{n},\ f\in  \mathbb{R}^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3980</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3980"/>
		<updated>2016-07-19T19:23:57Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Возможные способы и особенности параллельной реализации алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt; (количества измерений).&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный граф алгоритма (см. Рис. 3). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;
* операция [[SAXPY]];&lt;br /&gt;
* вычисление евклидовой нормы вектора.&lt;br /&gt;
&lt;br /&gt;
При реализации параллельной версии алгоритма на системах с общей памятью параллельную программу можно разделить на следующие этапы. &lt;br /&gt;
# Распределение памяти, загрузка исходных данных, уточнение параметров параллелизации.&lt;br /&gt;
# Предрасчет проекционной последовательности (для рандомизированной реализации, оказывается эффективнее сгенерировать случайную последовательность из &amp;lt;math&amp;gt;j(k)&amp;lt;/math&amp;gt; заранее).&lt;br /&gt;
# Вычисление приближения решения.&lt;br /&gt;
# Сохранение результатов.&lt;br /&gt;
&lt;br /&gt;
Для параллельных реализаций алгоритма достаточно иметь соответсвующие реализации для  [[BLAS]] &#039;&#039;(Basic Linear Algebra Subprograms)&#039;&#039;  операций. К примеру, одна из модификаций алгоритма Качмажа для решения задачи регуляризации А.Н. Тихонова представлена в &amp;lt;ref name=&amp;quot;Sidorov_Jdanov&amp;quot;&amp;gt;А.И. Жданов, Ю.В. Сидоров. ПАРАЛЛЕЛЬНАЯ РЕАЛИЗАЦИЯ РАНДОМИЗИРОВАННОГО РЕГУЛЯРИЗОВАННОГО АЛГОРИТМА КАЧМАЖА / Компьютерная оптика. - 2015. - Т.39(4). - С. 536-541 &amp;lt;/ref&amp;gt; (&#039;&#039;описание данной модификации выходит за рамки содержания данной публикации&#039;&#039;). В этой работе использовались функции&lt;br /&gt;
* &#039;&#039;cblas_ddoti&#039;&#039; - скалярное произведение векторов,&lt;br /&gt;
* &#039;&#039;cblas_daxpyi&#039;&#039; - реализация операции [[SAXPY]],&lt;br /&gt;
из библиотеки базовых математических операций [https://software.intel.com/en-us/intel-mkl| Intel MKL]. В статье отмечается, что за счет распараллеливания макро-операций представленная реализация позволила уменьшить время решения задачи от 2 до 4 раз по сравнению с последовательной версией.&lt;br /&gt;
&lt;br /&gt;
Реализации базовых операций линейной алгебры существует и для графических процессоров, например, библиотека [http://docs.nvidia.com/cuda/cublas/#axzz4EsnAK5Tf| cuBLAS] для архитектуры параллельных вычислений от NVIDIA. Как отмечено в работе &amp;lt;ref&amp;gt;Elble J. M., Sahinidis N. V., Vouzis P. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems //Parallel computing. – 2010. – Т. 36. – №. 5. – С. 215-231.&amp;lt;/ref&amp;gt; параллельная реализация алгоритма Качмажа на CUDA архитектуре оказывается неэффективной за счет операций первичной инициализации и копирования между различными ОЗУ.&lt;br /&gt;
&lt;br /&gt;
Наиболее перспективными архитектурами для реализации алгоритма Качмажа, по мнению авторов, являются ARM архитектуры (&#039;&#039;Advanced RISC Machine, Acorn RISC Machine, усовершенствованная RISC-машина&#039;&#039;). Например, существенное ускорение  можно получить в реализациях для процессоров, построенных по SIMD (&#039;&#039;single instruction, multiple data — одиночный поток команд, множественный поток данных&#039;&#039;) принципу. Стоит отметить технологию [http://www.arm.com/products/processors/technologies/neon.php| ARM NEON], которая может быть применена при разработке приложений для iPhone устройств, в которых, по причине ограниченного заряда батареи и в целом вычислительных ресурсов мобильного устройства, остро стоят задачи оптимизации вычислений при обработке снимков камеры телефона или видео-ряда.&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in \mathbb{R}^{m\times n},\ u\in  \mathbb{R}^{n},\ f\in  \mathbb{R}^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3979</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3979"/>
		<updated>2016-07-19T19:23:39Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Возможные способы и особенности параллельной реализации алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt; (количества измерений).&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный граф алгоритма (см. Рис. 3). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;
* операция [[SAXPY]];&lt;br /&gt;
* вычисление евклидовой нормы вектора.&lt;br /&gt;
&lt;br /&gt;
При реализации параллельной версии алгоритма на системах с общей памятью параллельную программу можно разделить на следующие этапы. &lt;br /&gt;
# Распределение памяти, загрузка исходных данных, уточнение параметров параллелизации.&lt;br /&gt;
# Предрасчет проекционной последовательности (для рандомизированной реализации, оказывается эффективнее сгенерировать случайную последовательность из &amp;lt;math&amp;gt;j(k)&amp;lt;/math&amp;gt; заранее).&lt;br /&gt;
# Вычисление приближения решения.&lt;br /&gt;
# Сохранение результатов.&lt;br /&gt;
&lt;br /&gt;
Для параллельных реализаций алгоритма достаточно иметь соответсвующие реализации для  [[BLAS]] &#039;&#039;(Basic Linear Algebra Subprograms)&#039;&#039;  операций. К примеру, одна из модификаций алгоритма Качмажа для решения задачи регуляризации А.Н. Тихонова представлена в &amp;lt;ref name=&amp;quot;Sidorov_Jdanov&amp;quot;&amp;gt;А.И. Жданов, Ю.В. Сидоров. ПАРАЛЛЕЛЬНАЯ РЕАЛИЗАЦИЯ РАНДОМИЗИРОВАННОГО РЕГУЛЯРИЗОВАННОГО АЛГОРИТМА КАЧМАЖА / Компьютерная оптика. - 2015. - Т.39(4). - С. 536-541 &amp;lt;/ref&amp;gt; (&#039;&#039;описание данной модификации выходит за рамки содержания данной публикации&#039;&#039;). В этой работе использовались функции&lt;br /&gt;
* &#039;&#039;cblas_ddoti&#039;&#039; - скалярное произведение векторов,&lt;br /&gt;
* &#039;&#039;cblas_daxpyi&#039;&#039; - реализация операции [[SAXPY]],&lt;br /&gt;
из библиотеки базовых математических операций [https://software.intel.com/en-us/intel-mkl| Intel MKL]. В статье отмечается, что за счет распараллеливания макро-операций представленная реализация позволила уменьшить время решения задачи от 2 до 4 раз по сравнению с последовательной версией.&lt;br /&gt;
&lt;br /&gt;
Реализации базовых операций линейной алгебры существует и для графических процессоров, например, библиотека [http://docs.nvidia.com/cuda/cublas/#axzz4EsnAK5Tf| cuBLAS] для архитектуры параллельных вычислений от NVIDIA. Как отмечено в работе &amp;lt;ref&amp;gt;Elble J. M., Sahinidis N. V., Vouzis P. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems //Parallel computing. – 2010. – Т. 36. – №. 5. – С. 215-231.&amp;lt;/ref&amp;gt; параллельная реализация алгоритма Качмажа на CUDA архитектуре оказывается неэффективной за счет операций первичной инициализации и копирования между различными ОЗУ.&lt;br /&gt;
&lt;br /&gt;
Наиболее перспективными архитектурами для реализации алгоритма Качмажа, по мнению авторов, являются ARM архитектуры (&#039;&#039;Advanced RISC Machine, Acorn RISC Machine, усовершенствованная RISC-машина&#039;&#039;). Например, существенное ускорение  можно получить в реализациях для процессоров, построенных по SIMD (&#039;&#039;single instruction, multiple data — одиночный поток команд, множественный поток данных&#039;&#039;) принципу. Стоит отметить технологию [http://www.arm.com/products/processors/technologies/neon.php | ARM NEON], которая может быть применена при разработке приложений для iPhone устройств, в которых, по причине ограниченного заряда батареи и в целом вычислительных ресурсов мобильного устройства, остро стоят задачи оптимизации вычислений при обработке снимков камеры телефона или видео-ряда.&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in \mathbb{R}^{m\times n},\ u\in  \mathbb{R}^{n},\ f\in  \mathbb{R}^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3978</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3978"/>
		<updated>2016-07-19T19:23:12Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Возможные способы и особенности параллельной реализации алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt; (количества измерений).&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный граф алгоритма (см. Рис. 3). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;
* операция [[SAXPY]];&lt;br /&gt;
* вычисление евклидовой нормы вектора.&lt;br /&gt;
&lt;br /&gt;
При реализации параллельной версии алгоритма на системах с общей памятью параллельную программу можно разделить на следующие этапы. &lt;br /&gt;
# Распределение памяти, загрузка исходных данных, уточнение параметров параллелизации.&lt;br /&gt;
# Предрасчет проекционной последовательности (для рандомизированной реализации, оказывается эффективнее сгенерировать случайную последовательность из &amp;lt;math&amp;gt;j(k)&amp;lt;/math&amp;gt; заранее).&lt;br /&gt;
# Вычисление приближения решения.&lt;br /&gt;
# Сохранение результатов.&lt;br /&gt;
&lt;br /&gt;
Для параллельных реализаций алгоритма достаточно иметь соответсвующие реализации для  [[BLAS]] &#039;&#039;(Basic Linear Algebra Subprograms)&#039;&#039;  операций. К примеру, одна из модификаций алгоритма Качмажа для решения задачи регуляризации А.Н. Тихонова представлена в &amp;lt;ref name=&amp;quot;Sidorov_Jdanov&amp;quot;&amp;gt;А.И. Жданов, Ю.В. Сидоров. ПАРАЛЛЕЛЬНАЯ РЕАЛИЗАЦИЯ РАНДОМИЗИРОВАННОГО РЕГУЛЯРИЗОВАННОГО АЛГОРИТМА КАЧМАЖА / Компьютерная оптика. - 2015. - Т.39(4). - С. 536-541 &amp;lt;/ref&amp;gt; (&#039;&#039;описание данной модификации выходит за рамки содержания данной публикации&#039;&#039;). В этой работе использовались функции&lt;br /&gt;
* &#039;&#039;cblas_ddoti&#039;&#039; - скалярное произведение векторов,&lt;br /&gt;
* &#039;&#039;cblas_daxpyi&#039;&#039; - реализация операции [[SAXPY]],&lt;br /&gt;
из библиотеки базовых математических операций [https://software.intel.com/en-us/intel-mkl| Intel MKL]. В статье отмечается, что за счет распараллеливания макро-операций представленная реализация позволила уменьшить время решения задачи от 2 до 4 раз по сравнению с последовательной версией.&lt;br /&gt;
&lt;br /&gt;
Реализации базовых операций линейной алгебры существует и для графических процессоров, например, библиотека [http://docs.nvidia.com/cuda/cublas/#axzz4EsnAK5Tf| cuBLAS] для архитектуры параллельных вычислений от NVIDIA. Как отмечено в работе &amp;lt;ref&amp;gt;Elble J. M., Sahinidis N. V., Vouzis P. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems //Parallel computing. – 2010. – Т. 36. – №. 5. – С. 215-231.&amp;lt;/ref&amp;gt; параллельная реализация алгоритма Качмажа на CUDA архитектуре оказывается неэффективной за счет операций первичной инициализации и копирования между различными ОЗУ.&lt;br /&gt;
&lt;br /&gt;
Наиболее перспективными архитектурами для реализации алгоритма Качмажа, по мнению авторов, являются ARM архитектуры (&#039;&#039;Advanced RISC Machine, Acorn RISC Machine, усовершенствованная RISC-машина&#039;&#039;). Например, существенное ускорение  можно получить в реализации для процессоров, построенных по SIMD (&#039;&#039;single instruction, multiple data — одиночный поток команд, множественный поток данных&#039;&#039;) принципу. Стоит отметить технологию [http://www.arm.com/products/processors/technologies/neon.php | ARM NEON], которая может быть применена при разработке приложений для iPhone устройств, в которых, по причине ограниченного заряда батареи и в целом вычислительных ресурсов мобильного устройства, остро стоят задачи оптимизации вычислений при обработке снимков камеры телефона или видео-ряда.&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in \mathbb{R}^{m\times n},\ u\in  \mathbb{R}^{n},\ f\in  \mathbb{R}^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3977</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3977"/>
		<updated>2016-07-19T19:14:11Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Возможные способы и особенности параллельной реализации алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt; (количества измерений).&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный граф алгоритма (см. Рис. 3). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;
* операция [[SAXPY]];&lt;br /&gt;
* вычисление евклидовой нормы вектора.&lt;br /&gt;
&lt;br /&gt;
При реализации параллельной версии алгоритма на системах с общей памятью параллельную программу можно разделить на следующие этапы. &lt;br /&gt;
# Распределение памяти, загрузка исходных данных, уточнение параметров параллелизации.&lt;br /&gt;
# Предрасчет проекционной последовательности (для рандомизированной реализации, оказывается эффективнее сгенерировать случайную последовательность из &amp;lt;math&amp;gt;j(k)&amp;lt;/math&amp;gt; заранее).&lt;br /&gt;
# Вычисление приближения решения.&lt;br /&gt;
# Сохранение результатов.&lt;br /&gt;
&lt;br /&gt;
Для параллельных реализаций алгоритма достаточно иметь соответсвующие реализации для  [[BLAS]] &#039;&#039;(Basic Linear Algebra Subprograms)&#039;&#039;  операций. К примеру, одна из модификаций алгоритма Качмажа для решения задачи регуляризации А.Н. Тихонова представлена в &amp;lt;ref name=&amp;quot;Sidorov_Jdanov&amp;quot;&amp;gt;А.И. Жданов, Ю.В. Сидоров. ПАРАЛЛЕЛЬНАЯ РЕАЛИЗАЦИЯ РАНДОМИЗИРОВАННОГО РЕГУЛЯРИЗОВАННОГО АЛГОРИТМА КАЧМАЖА / Компьютерная оптика. - 2015. - Т.39(4). - С. 536-541 &amp;lt;/ref&amp;gt; (&#039;&#039;описание данной модификации выходит за рамки содержания данной публикации&#039;&#039;). В этой работе использовались функции&lt;br /&gt;
* &#039;&#039;cblas_ddoti&#039;&#039; - скалярное произведение векторов,&lt;br /&gt;
* &#039;&#039;cblas_daxpyi&#039;&#039; - реализация операции [[SAXPY]],&lt;br /&gt;
из библиотеки базовых математических операций [https://software.intel.com/en-us/intel-mkl| Intel MKL]. В статье отмечается, что за счет распараллеливания макро-операций представленная реализация позволила уменьшить время решения задачи от 2 до 4 раз по сравнению с последовательной версией.&lt;br /&gt;
&lt;br /&gt;
Реализации базовых операций линейной алгебры существует и для графических процессоров, например, библиотека [http://docs.nvidia.com/cuda/cublas/#axzz4EsnAK5Tf| cuBLAS] для архитектуры параллельных вычислений от NVIDIA. Как отмечено в работе &amp;lt;ref&amp;gt;Elble J. M., Sahinidis N. V., Vouzis P. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems //Parallel computing. – 2010. – Т. 36. – №. 5. – С. 215-231.&amp;lt;/ref&amp;gt; параллельная реализация алгоритма Качмажа на CUDA архитектуре оказывается неэффективной за счет операций первичной инициализации и копирования между различными ОЗУ.&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in \mathbb{R}^{m\times n},\ u\in  \mathbb{R}^{n},\ f\in  \mathbb{R}^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3976</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3976"/>
		<updated>2016-07-19T19:13:52Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Возможные способы и особенности параллельной реализации алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt; (количества измерений).&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный граф алгоритма (см. Рис. 3). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;
* операция [[SAXPY]];&lt;br /&gt;
* вычисление евклидовой нормы вектора.&lt;br /&gt;
&lt;br /&gt;
При реализации параллельной версии алгоритма на системах с общей памятью параллельную программу можно разделить на следующие этапы. &lt;br /&gt;
# Распределение памяти, загрузка исходных данных, уточнение параметров параллелизации.&lt;br /&gt;
# Предрасчет проекционной последовательности (для рандомизированной реализации, оказывается эффективнее сгенерировать случайную последовательность из &amp;lt;math&amp;gt;j(k)&amp;lt;/math&amp;gt; заранее).&lt;br /&gt;
# Вычисление приближения решения.&lt;br /&gt;
# Сохранение результатов.&lt;br /&gt;
&lt;br /&gt;
Для параллельных реализаций алгоритма достаточно иметь соответсвующие реализации для  [[BLAS]] &#039;&#039;(Basic Linear Algebra Subprograms)&#039;&#039;  операций. К примеру, одна из модификаций алгоритма Качмажа для решения задачи регуляризации А.Н. Тихонова представлена в &amp;lt;ref name=&amp;quot;Sidorov_Jdanov&amp;quot;&amp;gt;А.И. Жданов, Ю.В. Сидоров. ПАРАЛЛЕЛЬНАЯ РЕАЛИЗАЦИЯ РАНДОМИЗИРОВАННОГО РЕГУЛЯРИЗОВАННОГО АЛГОРИТМА КАЧМАЖА / Компьютерная оптика. - 2015. - Т.39(4). - С. 536-541 &amp;lt;/ref&amp;gt; (&#039;&#039;описание данной модификации выходит за рамки содержания данной публикации&#039;&#039;). В этой работе использовались функции&lt;br /&gt;
* &#039;&#039;cblas_ddoti&#039;&#039; - скалярное произведение векторов,&lt;br /&gt;
* &#039;&#039;cblas_daxpyi&#039;&#039; - реализация операции [[SAXPY]],&lt;br /&gt;
из библиотеки базовых математических операций [https://software.intel.com/en-us/intel-mkl| Intel MKL]. В статье отмечается, что за счет распараллеливания макро-операций представленная реализация позволила уменьшить время решения задачи от 2 до 4 раз по сравнению с последовательной версией.&lt;br /&gt;
&lt;br /&gt;
Реализации базовых операций линейной алгебры существует и для графических процессоров, например библиотека [http://docs.nvidia.com/cuda/cublas/#axzz4EsnAK5Tf| cuBLAS] для архитектуры параллельных вычислений от NVIDIA. Как отмечено в работе &amp;lt;ref&amp;gt;Elble J. M., Sahinidis N. V., Vouzis P. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems //Parallel computing. – 2010. – Т. 36. – №. 5. – С. 215-231.&amp;lt;/ref&amp;gt; параллельная реализация алгоритма Качмажа на CUDA архитектуре оказывается неэффективной за счет операций первичной инициализации и копирования между различными ОЗУ.&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in \mathbb{R}^{m\times n},\ u\in  \mathbb{R}^{n},\ f\in  \mathbb{R}^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3975</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3975"/>
		<updated>2016-07-19T18:52:30Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Возможные способы и особенности параллельной реализации алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt; (количества измерений).&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный граф алгоритма (см. Рис. 3). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;
* операция [[SAXPY]];&lt;br /&gt;
* вычисление евклидовой нормы вектора.&lt;br /&gt;
&lt;br /&gt;
При реализации параллельной версии алгоритма на системах с общей памятью параллельную программу можно разделить на следующие этапы. &lt;br /&gt;
# Распределение памяти, загрузка исходных данных, уточнение параметров параллелизации.&lt;br /&gt;
# Предрасчет проекционной последовательности (для рандомизированной реализации, оказывается эффективнее сгенерировать случайную последовательность из &amp;lt;math&amp;gt;j(k)&amp;lt;/math&amp;gt; заранее).&lt;br /&gt;
# Вычисление приближения решения.&lt;br /&gt;
# Сохранение результатов.&lt;br /&gt;
&lt;br /&gt;
Для параллельных реализаций алгоритма достаточно иметь соответсвующие реализации для  [[BLAS]] &#039;&#039;(Basic Linear Algebra Subprograms)&#039;&#039;  операций. К примеру, одна из модификаций алгоритма Качмажа для решения задачи регуляризации А.Н. Тихонова представлена в &amp;lt;ref name=&amp;quot;Sidorov_Jdanov&amp;quot;&amp;gt;А.И. Жданов, Ю.В. Сидоров. ПАРАЛЛЕЛЬНАЯ РЕАЛИЗАЦИЯ РАНДОМИЗИРОВАННОГО РЕГУЛЯРИЗОВАННОГО АЛГОРИТМА КАЧМАЖА / Компьютерная оптика. - 2015. - Т.39(4). - С. 536-541 &amp;lt;/ref&amp;gt;. В этой работе использовались функции&lt;br /&gt;
* &#039;&#039;cblas_ddoti&#039;&#039; - скалярное произведение векторов,&lt;br /&gt;
* &#039;&#039;cblas_daxpyi&#039;&#039; - реализация операции [[SAXPY]],&lt;br /&gt;
из библиотеки базовых математических операций Intel MKL. В статье отмечается, что за счет распараллеливания макро-операций представленная реализация позволила снижать время решения задачи от 2 до 4 раз по сравнению с последовательной версией.&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in \mathbb{R}^{m\times n},\ u\in  \mathbb{R}^{n},\ f\in  \mathbb{R}^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3974</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3974"/>
		<updated>2016-07-19T18:22:16Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Возможные способы и особенности параллельной реализации алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt; (количества измерений).&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный граф алгоритма (см. Рис. 3). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;
* операция [[SAXPY]];&lt;br /&gt;
* вычисление евклидовой нормы вектора.&lt;br /&gt;
&lt;br /&gt;
При реализации параллельной версии алгоритма на системах с общей памятью параллельную программу можно разделить на следующие этапы. &lt;br /&gt;
# Распределение памяти, загрузка исходных данных, уточнение параметров параллелизации.&lt;br /&gt;
# Предрасчет проекционной последовательности (для рандомизированной реализации, оказывается эффективнее сгенерировать случайную последовательность из &amp;lt;math&amp;gt;j(k)&amp;lt;/math&amp;gt; заранее).&lt;br /&gt;
# Вычисление приближения решения.&lt;br /&gt;
# Сохранение результатов. &lt;br /&gt;
&lt;br /&gt;
Одна из модификаций алгоритма Качмажа для решения задачи регуляризации А.Н. Тихонова представлена в &amp;lt;ref name=&amp;quot;Sidorov_Jdanov&amp;quot;&amp;gt;А.И. Жданов, Ю.В. Сидоров. ПАРАЛЛЕЛЬНАЯ РЕАЛИЗАЦИЯ РАНДОМИЗИРОВАННОГО РЕГУЛЯРИЗОВАННОГО АЛГОРИТМА КАЧМАЖА / Компьютерная оптика. - 2015. - Т.39(4). - С. 536-541 &amp;lt;/ref&amp;gt;. В этой работе использовались функции cblas_ddoti и cblas_daxpyi&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in \mathbb{R}^{m\times n},\ u\in  \mathbb{R}^{n},\ f\in  \mathbb{R}^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3973</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3973"/>
		<updated>2016-07-19T18:20:31Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Возможные способы и особенности параллельной реализации алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt; (количества измерений).&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный граф алгоритма (см. Рис. 3). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;
* операция [[SAXPY]];&lt;br /&gt;
* вычисление евклидовой нормы вектора.&lt;br /&gt;
&lt;br /&gt;
При реализации параллельной версии алгоритма на системах с общей памятью параллельную программу можно разделить на следующие этапы. &lt;br /&gt;
# Распределение памяти, загрузка исходных данных, уточнение параметров параллелизации.&lt;br /&gt;
# Предрасчет проекционной последовательности (для рандомизированной реализации, оказывается эффективнее сгенерировать случайную последовательность из &amp;lt;math&amp;gt;j(k)&amp;lt;/math&amp;gt; заранее).&lt;br /&gt;
# Вычисление приближения решения.&lt;br /&gt;
# Сохранение результатов. &lt;br /&gt;
&lt;br /&gt;
Одна из модификаций алгоритма Качмажа для решения задачи регуляризации А.Н. Тихонова представлена в &amp;lt;ref name=&amp;quot;Sidorov_Jdanov&amp;quot;&amp;gt;А.И. Жданов, Ю.В. Сидоров. ПАРАЛЛЕЛЬНАЯ РЕАЛИЗАЦИЯ РАНДОМИЗИРОВАННОГО РЕГУЛЯРИЗОВАННОГО АЛГОРИТМА КАЧМАЖА / Компьютерная оптика. - 2015. - Т.39(4). - С. 536-541 &amp;lt;/ref&amp;gt;. В этой работе использовались функции {{c++| cblas_ddoti}}cblas_ddoti и cblas_daxpyi&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in \mathbb{R}^{m\times n},\ u\in  \mathbb{R}^{n},\ f\in  \mathbb{R}^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3972</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3972"/>
		<updated>2016-07-19T08:20:11Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Последовательная сложность алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt; (количества измерений).&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный граф алгоритма (см. Рис. 3). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;br /&gt;
# Распределение памяти, загрузка исходных данных, уточнение параметров параллелизации.&lt;br /&gt;
# Построение функции распределения вероятностей столбцов.&lt;br /&gt;
# Генерация дискретной случайной величины, выбор номера столбца.&lt;br /&gt;
# Вычисление приближения решения.&lt;br /&gt;
# Сохранение результатов. &lt;br /&gt;
Программную реализацию рандомизированной регуляризованной формы алгоритма Качмажа формально можно представить в следующем виде &amp;lt;ref name=&amp;quot;Sidorov_Jdanov&amp;quot;&amp;gt;А.И. Жданов, Ю.В. Сидоров. ПАРАЛЛЕЛЬНАЯ РЕАЛИЗАЦИЯ&lt;br /&gt;
РАНДОМИЗИРОВАННОГО РЕГУЛЯРИЗОВАННОГО АЛГОРИТМА КАЧМАЖА / Компьютерная оптика. - 2015. - Т.39(4). - С. 536-541 &amp;lt;/ref&amp;gt;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void cumul ()&lt;br /&gt;
{&lt;br /&gt;
	__gnu_parallel::partial_sum()&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
	//уточнение параметров&lt;br /&gt;
	max_threads = mkl_get_max_threads();&lt;br /&gt;
	omp_set_dynamic(false);&lt;br /&gt;
	omp_set_num_threads(max_threads);&lt;br /&gt;
	//построение функции распределения вероятностей столбцов&lt;br /&gt;
	cumul();&lt;br /&gt;
	vsNewStream();&lt;br /&gt;
	while cblas_nrm2()&amp;lt;eps do&lt;br /&gt;
		vdRngUniform();&lt;br /&gt;
		//выбор номера столбца&lt;br /&gt;
		j = __gnu_parallel::find_if();&lt;br /&gt;
		cblas_ddoti(vals_2, theta);&lt;br /&gt;
		cblas_daxpyi(vals_1,theta);&lt;br /&gt;
	end while&lt;br /&gt;
	...&lt;br /&gt;
}&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;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in \mathbb{R}^{m\times n},\ u\in  \mathbb{R}^{n},\ f\in  \mathbb{R}^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3966</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3966"/>
		<updated>2016-07-18T19:00:47Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Рандомизированная версия алгоритма и скорость сходимости */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный и операционные графы алгоритма (см. Рис. 3 и 4). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
[[Файл:ОГ_Качмаж.jpg|thumb| right |700px|Рисунок 4. Операционный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in \mathbb{R}^{m\times n},\ u\in  \mathbb{R}^{n},\ f\in  \mathbb{R}^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3965</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3965"/>
		<updated>2016-07-18T18:59:40Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Рандомизированная версия алгоритма и скорость сходимости */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный и операционные графы алгоритма (см. Рис. 3 и 4). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
[[Файл:ОГ_Качмаж.jpg|thumb| right |700px|Рисунок 4. Операционный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in R^{m\times n},\ u\in R^{n},\ f\in R^{m}&amp;lt;/math&amp;gt; - совместная переопределенная &amp;lt;math&amp;gt;\left(m\geq n\right)&amp;lt;/math&amp;gt;  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3964</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3964"/>
		<updated>2016-07-18T18:55:55Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Классификация проекционных последовательностей */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный и операционные графы алгоритма (см. Рис. 3 и 4). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
[[Файл:ОГ_Качмаж.jpg|thumb| right |700px|Рисунок 4. Операционный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in \mathbb{N}_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; рассматривать как &#039;&#039;сюръективное&#039;&#039; отображение множества &amp;lt;math&amp;gt;\mathbb{N}_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in \mathbb{R}^{m\times n},\ u\in \mathbb{R}^{n},\ f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in R^{m\times n},\ u\in R^{n},\ f\in R^{m}&amp;lt;/math&amp;gt; - совместная переопределенная \left(m\geq n\right)  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3963</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3963"/>
		<updated>2016-07-18T18:47:14Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Входные и выходные данные алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный и операционные графы алгоритма (см. Рис. 3 и 4). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
[[Файл:ОГ_Качмаж.jpg|thumb| right |700px|Рисунок 4. Операционный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in \mathbb{R}^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in \mathbb{R}^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in \mathbb{N}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in N_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;рассматривать как сюръективное отображение множества &amp;lt;math&amp;gt;N_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in R^{m\times n},\ u\in R^{n},\ f\in R^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in R^{m\times n},\ u\in R^{n},\ f\in R^{m}&amp;lt;/math&amp;gt; - совместная переопределенная \left(m\geq n\right)  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3962</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3962"/>
		<updated>2016-07-18T18:32:34Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Общее описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный и операционные графы алгоритма (см. Рис. 3 и 4). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
[[Файл:ОГ_Качмаж.jpg|thumb| right |700px|Рисунок 4. Операционный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in R^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in R^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in N&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in R^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in N_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;рассматривать как сюръективное отображение множества &amp;lt;math&amp;gt;N_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in R^{m\times n},\ u\in R^{n},\ f\in R^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in R^{m\times n},\ u\in R^{n},\ f\in R^{m}&amp;lt;/math&amp;gt; - совместная переопределенная \left(m\geq n\right)  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3961</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3961"/>
		<updated>2016-07-18T18:30:34Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Общее описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что  и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный и операционные графы алгоритма (см. Рис. 3 и 4). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
[[Файл:ОГ_Качмаж.jpg|thumb| right |700px|Рисунок 4. Операционный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in R^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in R^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in N&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in R^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in N_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;рассматривать как сюръективное отображение множества &amp;lt;math&amp;gt;N_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in R^{m\times n},\ u\in R^{n},\ f\in R^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in R^{m\times n},\ u\in R^{n},\ f\in R^{m}&amp;lt;/math&amp;gt; - совместная переопределенная \left(m\geq n\right)  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3960</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3960"/>
		<updated>2016-07-18T18:29:07Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Общее описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i=\overline{1,\p}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;p=m&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный и операционные графы алгоритма (см. Рис. 3 и 4). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
[[Файл:ОГ_Качмаж.jpg|thumb| right |700px|Рисунок 4. Операционный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in R^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in R^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in N&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in R^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in N_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;рассматривать как сюръективное отображение множества &amp;lt;math&amp;gt;N_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in R^{m\times n},\ u\in R^{n},\ f\in R^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in R^{m\times n},\ u\in R^{n},\ f\in R^{m}&amp;lt;/math&amp;gt; - совместная переопределенная \left(m\geq n\right)  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3959</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3959"/>
		<updated>2016-07-18T18:27:46Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Общее описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in \mathbb{R}^{n\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный и операционные графы алгоритма (см. Рис. 3 и 4). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
[[Файл:ОГ_Качмаж.jpg|thumb| right |700px|Рисунок 4. Операционный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in R^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in R^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in N&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in R^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in N_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;рассматривать как сюръективное отображение множества &amp;lt;math&amp;gt;N_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in R^{m\times n},\ u\in R^{n},\ f\in R^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in R^{m\times n},\ u\in R^{n},\ f\in R^{m}&amp;lt;/math&amp;gt; - совместная переопределенная \left(m\geq n\right)  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3958</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3958"/>
		<updated>2016-07-18T18:26:49Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Математическое описание */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in R^{n\times n},\, u\in R^{n},\, f\in R^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in \mathbb{R}^{m\times n},\, u\in \mathbb{R}^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in \mathbb{R}^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный и операционные графы алгоритма (см. Рис. 3 и 4). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
[[Файл:ОГ_Качмаж.jpg|thumb| right |700px|Рисунок 4. Операционный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in R^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in R^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in N&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in R^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in N_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;рассматривать как сюръективное отображение множества &amp;lt;math&amp;gt;N_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in R^{m\times n},\ u\in R^{n},\ f\in R^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in R^{m\times n},\ u\in R^{n},\ f\in R^{m}&amp;lt;/math&amp;gt; - совместная переопределенная \left(m\geq n\right)  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3957</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3957"/>
		<updated>2016-07-18T18:22:49Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Общее описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in R^{n\times n},\, u\in R^{n},\, f\in R^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; (при построении мы не накладывали на него никаких ограничений). Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in R^{m\times n},\, u\in R^{n},\, f\in R^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in R^{m\times n},\, u\in R^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in R^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный и операционные графы алгоритма (см. Рис. 3 и 4). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
[[Файл:ОГ_Качмаж.jpg|thumb| right |700px|Рисунок 4. Операционный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in R^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in R^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in N&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in R^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in N_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;рассматривать как сюръективное отображение множества &amp;lt;math&amp;gt;N_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in R^{m\times n},\ u\in R^{n},\ f\in R^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in R^{m\times n},\ u\in R^{n},\ f\in R^{m}&amp;lt;/math&amp;gt; - совместная переопределенная \left(m\geq n\right)  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3956</id>
		<title>Алгоритм Качмажа</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_%D0%9A%D0%B0%D1%87%D0%BC%D0%B0%D0%B6%D0%B0&amp;diff=3956"/>
		<updated>2016-07-18T18:21:59Z</updated>

		<summary type="html">&lt;p&gt;Ivanov Andrey: /* Общее описание алгоритма */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм Качмажа (S. Kaczmarz)&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; - количество итераций&lt;br /&gt;
| input_data        = система линейных алгебраических уравнений (&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; уравнений) с &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; неизсветными, где &amp;lt;math&amp;gt;m \geq n&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;m \cdot n + m + 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;
Основные авторы описания: [[Участник:Elena_Kozlova|Е.С. Козлова]], [[Участник:Ivanov_Andrey| А.А. Иванов]].&lt;br /&gt;
&lt;br /&gt;
Синонимы названия алгоритма: &#039;&#039;&#039;метод алгебраической реконструкции&#039;&#039;&#039;, &#039;&#039;&#039;Algebraic Reconstruction Technique&#039;&#039;&#039;, &#039;&#039;&#039;Projection onto Convex Sets&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Свойства и структура алгоритмов =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
Метод алгебраической реконструкции полностью последовательный строковый (row-action method) метод с длинной историей, богато описанный в литературе. В классическом виде метод был впервые сформулирован и предложен польским математиком С. Качмажем (Stefan Kaczmarz) для решения систем линейных алгебраических уравнений  с квадратными и невырожденными матрицами, а в последствии независимо был использован Р. Гордоном и др. (R. Gordon; R. Bender; Herman) для реконструкции изображений по их проекционным данным в задаче рентгеновской компьютерной томографии.&lt;br /&gt;
&lt;br /&gt;
В более общем случае последовательность, полученная по методу итераций С. Качмажа, также сходится к решению и для переопределенных, но обязательно совместных с.л.а.у. (систем линейных алгебраических уравнений). На каждой итерации алгоритма используется только одно уравнение с.л.а.у., но в результате пересчитывается каждая компонента приближенного решения на данной итерации. &lt;br /&gt;
&lt;br /&gt;
Далее представим наивный вывод итерационного метода следуя общим представлениям. Запишем с.л.а.у. с невырожденной матрицей коэффициентов &amp;lt;math&amp;gt;A \cdot u=f,\, A\in R^{n\times n},\, u\in R^{n},\, f\in R^{n}&amp;lt;/math&amp;gt;. Проследим процедуру минимизации с использованием метода оптимального координатного спуска, описанную, например, в &amp;lt;ref&amp;gt;Бахвалов Н. С., Жидков Н. П., Кобельков Г. Г. Численные методы. — 8-е изд. — М.: Лаборатория Базовых Знаний, 2000.&amp;lt;/ref&amp;gt;. Рассмотрим функцию ошибки: &amp;lt;math&amp;gt;\Phi\left(u\right)=\Vert u_{*}-u\Vert^{2}&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;\Lambda\left(\varphi_{1},\ldots,\varphi_{p}\right)&amp;lt;/math&amp;gt; в виде итерационной последовательности: &amp;lt;math&amp;gt;u^{0}=\Theta,\, u^{k+1}=u^{k}\,+\, C_{k}\varphi_{j\left(k\right)}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)\in\left\{ 1,2,\ldots,p\right\}&amp;lt;/math&amp;gt;, а &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; - некоторый неизвестный коэффициент. Легко заметить, что &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert u_{*}-u^{k+1}\Vert^{2}=\Vert u_{*}-u^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обозначим вектор &amp;lt;math&amp;gt;z^{k}=u_{*}-u^{k}&amp;lt;/math&amp;gt; - вектор ошибок приближения решения с.л.а.у. на шаге с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;. Предположим также, что &amp;lt;math&amp;gt;\Vert\varphi_{i}\Vert=1,\,\forall i&amp;lt;/math&amp;gt;. С учетом этого: &amp;lt;math&amp;gt;\Phi\left(u^{k+1}\right)=\Vert z^{k}-C_{k}\varphi_{j\left(k\right)}\Vert^{2}=\Vert z^{k}\Vert^{2}-2C_{k}\left(z^{k},\varphi_{j\left(k\right)}\right)+C_{k}^{2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Продифференцируем последнее уравнение по &amp;lt;math&amp;gt;C_{k}&amp;lt;/math&amp;gt; и приравняем к нулю, в результате получим, что &amp;lt;math&amp;gt;C_{k}=\left(z^{k},\varphi_{j\left(k\right)}\right)&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Возвращаясь к с.л.а.у., пусть вектора в линейной оболочке &amp;lt;math&amp;gt;\Lambda&amp;lt;/math&amp;gt; выбраны как &amp;lt;math&amp;gt; \varphi_{i}=\frac{a_{i}}{\Vert a_{i}\Vert}&amp;lt;/math&amp;gt;, тогда &amp;lt;math&amp;gt;\left(z^{k},a_{j\left(k\right)}\right)=f_{j\left(k\right)}-a_{j\left(k\right)}^{T}u^{k}&amp;lt;/math&amp;gt; и последовательность приобретает законченный вид, основная формула алгоритма:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Мы показали достаточно наивное построение алгоритма, которое не доказывает ни факт сходимости ни тем более к решению задачи - это предмет доказательства теоремы о сходимости при определенном задании отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;. Однако данное построение позволяет проследить идею о минимизации ошибки решения (а не невязки с.л.а.у.) и связь алгоритма Качмажа с методом координатного спуска по векторам &amp;lt;math&amp;gt;\varphi_{i}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Все дальнейшие модификации данной формулы, а, соответсвенно, и самого алгоритма, основаны на:&lt;br /&gt;
* введения параметра т.н. релаксации,&lt;br /&gt;
* экзотических способах задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;,&lt;br /&gt;
* выборе специальных критериев останова итераций,&lt;br /&gt;
* переходе к блочным модификациям.&lt;br /&gt;
&lt;br /&gt;
== Библиография ==&lt;br /&gt;
&lt;br /&gt;
Стефан Качмаж - польский математик, родился 1895 г. в городе Самбор (Sambor) Галиция (Galicia), Австро-Венгрия (Austria-Hungary), ныне Украина. Стефан Качмаж был профессором математики на факультете машиностроения университета Яна Казимира (Jan Kazimierz University) в городе Львов (Lwów) с 1919 по 1939 год, там же сотрудничал с Стефаном Банахом. Предложенный им итерационный метод решения с.л.а.у. послужил основой для многих современных технологий в обработке изображений, в том числе в задачах компьютерной томографии &amp;lt;ref&amp;gt;Natterer, Frank (2001), &amp;quot;V.3 Kaczmarz&#039;s method&amp;quot;, The Mathematics of Computerized Tomography, Classics in Applied Mathematics 32, SIAM, p. 128, ISBN 9780898714937.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Применение метода С. Качмажа или т.н. метода алгебраической реконструкции наиболее известно в задачах реконструктивной компьютерной томографии высокого разрешения. Для интерпретации данных, полученных в результате неразрушающего сканирования некоторого объекта, с 60-70-х годов применяются различные аппаратные и программные реализации итерационного метода, разработанного польским математиком С. Качмажем (S. Kaczmarz) в 1937 году&amp;lt;ref&amp;gt;Kaczmarz, S. Angenäherte Auflösung von Systemen linearer Gleichungen [Текст] / S. Kaczmarz // Bulletin International de l&#039;Académie Polonaise des Sciences et des Lettres / Classe des Sciences Mathématiques et Naturelles. Série A, Sciences Mathématiques. — 1937. — Vol. 35. — С. 355-357.&amp;lt;/ref&amp;gt;; этот метод был использован Г. Хаусфилдом (G.N. Hounsfield) - конструктором первого томографа «ЭМИ-сканнер»&amp;lt;ref&amp;gt;Hounsfield, G. N. A Discussion on Recent Developments in Medical Endoscopy and Related Fields [Текст] / G. N. Hounsfield // Proceedings of the Royal Society of London. Series B, Biological Sciences. — 1977. — Vol. 195, N. 1119. — С. 281-289.&amp;lt;/ref&amp;gt; (нобелевская премия по физиологии и медицине в 1979 году).&lt;br /&gt;
&lt;br /&gt;
Так же данный метод можно часто встретить под следующими названиями: Algebraic Reconstruction Technique (ART)&amp;lt;ref&amp;gt;Gordon, R. Algebraic reconstruction techniques (ART) for three-dimensional electron microscopy and x-ray photography [Текст] / R. Gordon, R. Bender, G. T. Herman // Journal of theoretical biology. — 1970. — Vol. 29, Issue 3. — С. 471–481.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Micke, A. The Mathematics of Computerized Tomography [Текст] / A. Micke, F. Natterer // ZAMM - Zeitschrift für Angewandte Mathematik und Mechanik (Journal of Applied Mathematics and Mechanics). — 1987. — Vol. 67, Issue 11. — С. 580. —ISBN 3-519-02103-X and 0-471-90959-9.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Herman, G. T. Fundamentals of computerized tomography: Image reconstruction from projection [Текст] : 2nd ed. / G. T. Herman. — Springer, 2009. — 300 с.&amp;lt;/ref&amp;gt;, Projection onto Convex Sets (PCS)&amp;lt;ref&amp;gt;Sezan, K. M. Applications of convex projection theory to image recovery in tomography and related areas [Текст] / K. M. Sezan, H. Stark // Image Recovery: Theory and Application / H. Stark, editor. — Academic Press, 1987. — С. 415-462.&amp;lt;/ref&amp;gt;, Kaczmarz Algorithm &amp;lt;ref&amp;gt;Cegielski, A. Bibliography on the Kaczmarz method [Электронный ресурс] : Faculty of Mathematics, Computer Science and Econometrics University of Zielona Gora ; Poland, March, 28th, 2010 / Режим доступа: http://www.uz.zgora.pl/~acegiels/Publikacje-Kaczmarz.pdf&amp;lt;/ref&amp;gt; или метод ортогональных проекций. &lt;br /&gt;
&lt;br /&gt;
Конструированию различных алгоритмов на основе итераций С. Качмажа посвящено существенное количество работ: согласно исследованию польского математика и библиографа А. Сигелски (A. Cegielski), на начало 2010 года статья С. Качмажа цитируется более чем в четырехстах реферируемых и значимых публикациях ученых из различных областей знаний. В Советской и Российской научных школах исследования итераций С. Качмажа представлены в литературе такими известными учеными как: В.Н. Ильин, Г.П. Васильченко, А.А. Светлаков и другие, например, в работах&amp;lt;ref&amp;gt;Ильин, В. П. Об итерационном методе Качмажа и его обобщениях [Текст] / В. П. Ильин // Сибирский журнал индустриальной математики. — 2006. — Т. 9, вып. 3. — С. 39–49.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Г. П. Васильченко, А. А. Светлаков, “Проекционный алгоритм решения систем линейных алгебраических уравнений большой размерности”, Ж. вычисл. матем. и матем. физ., 20:1 (1980), 3–10.&amp;lt;/ref&amp;gt;. Общие идеи о проекционных методах так же представлены в классической работе Л. Г. Гурина, Б. Т. Поляка, Э. В. Райка&amp;lt;ref&amp;gt;Л. Г. Гурин, Б. Т. Поляк, Э. В. Райк, “Методы проекций для отыскания общей точки выпуклых множеств”, Ж. вычисл. матем. и матем. физ., 7:6 (1967), 1211–1228&amp;lt;/ref&amp;gt;, где впервые предлагается и обосновывается идентичный алгоритм для решения систем линейных алгебраических неравенств и уравнений.&lt;br /&gt;
&lt;br /&gt;
В 2008 году американскими математиками Т. Штромером (T. Strohmer) и Р. Вершининым (R. Vershynin) в &amp;lt;ref name=&amp;quot;strohmer&amp;quot;&amp;gt;Strohmer, T. A Randomized Kaczmarz Algorithm with Exponential Convergence [Текст] / T. Strohmer, R. Vershynin // Journal of Fourier Analysis and Applications. — 2009. — Vol. 15, Issue 2. — С. 262-278.&amp;lt;/ref&amp;gt; была предложена рандомизированная модификация итерационного метода, в которой последовательность приближений к решению для совместных и переопределенных с.л.а.у. сходится с экспоненциальной скоростью.&lt;br /&gt;
&lt;br /&gt;
Множество модификаций идеи метода ортогональных проекций нашли свое практическое применение в различных областях знаний, связанных с обработкой и интерпретацией больших объемов данных: при реконструкции синограмм в медицине, биологии, геологии; при решении задач диагностики плазмы, кристаллографии&amp;lt;ref&amp;gt;Marks, L. D. A feasible set approach to the crystallographic phase problem [Текст] / L. D. Marks, W. Sinkler, E. Landree // Acta Crystallographica Section A. — 1987. — Vol. 55, Issue 4. — С. 601-612.&amp;lt;/ref&amp;gt;, дефектоскопии и микроскопии, параллельных вычислений и распределенного анализа&amp;lt;ref&amp;gt;JElble, J. M. GPU computing with Kaczmarz’s and other iterative algorithms for linear systems [Текст] / J. M. Elble, N. V. Sahinidis, P. Vouzis // Parallel Computing. — 2010. — Vol. 36, Issues 5-6. — С. 215–231.&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;
&amp;lt;math&amp;gt;Au=f,\, A\in R^{m\times n},\, u\in R^{n},\, f\in R^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
тогда итерации согласно алгоритму определяются последовательностью&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
где&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;A=\left(a_{1},\, a_{2},\,\ldots\,,\, a_{m}\right)^{T}\in R^{m\times n},\, u\in R^{n},\, f=\left(f_{1},\, f_{2},\,\ldots\,,\, f_{m}\right)\in R^{m},&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а последовательность проектирования в классическом варианте алгоритма определяется как&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty},&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;u^{0}&amp;lt;/math&amp;gt; - начальное приближение, а &amp;lt;math&amp;gt;\lambda_{k} \in \left(0,2\right)&amp;lt;/math&amp;gt; - параметр релаксации  (Рисунки 1 и 2 построены для случая, когда &amp;lt;math&amp;gt;\lambda_{k}=1,\,\forall k&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Геометрическая интерпретация ===&lt;br /&gt;
Метод алгебраической реконструкции достаточно просто формулируется с использованием его геометрической интерпретации. Рассмотрим совместную с.л.а.у. с двумя неизвестными&lt;br /&gt;
 &amp;lt;math&amp;gt;A=\begin{pmatrix}3 &amp;amp; 2\\&lt;br /&gt;
2 &amp;amp; 3&lt;br /&gt;
\end{pmatrix},\text{ }f=\begin{pmatrix}1\\&lt;br /&gt;
2&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
и несовместную переопределенную, полученную добавлением к этой системе дополнительного уравнения  &amp;lt;math&amp;gt;-u_{1}+u_{2}=1.5&amp;lt;/math&amp;gt;. Каждое уравнение из с.л.а.у. можно интерпретировать как гиперплоскость в пространстве координат, а решение совместной с.л.а.у. - как точку пересечения всех этих гиперплоскостей. При использовании метода алгебраической реконструкции для решения с.л.а.у. поиск приближенного решения осуществляется в направлениях, перпендикулярных к гиперплоскостям, каждая из которых описывается отдельным уравнением решаемой системы (см. Рис.1).&lt;br /&gt;
[[Файл:kz_geom_in.png|thumb| right |700px|Рисунок 1. К геометрической интерпретации метода алгебраической реконструкции: слева - случай совместной с.л.а.у., справа - несовместной с.л.а.у.]]&lt;br /&gt;
&lt;br /&gt;
Интерактивная диаграмма для совместного случая подготовлена авторами статьи [https://www.geogebra.org/m/uSy72FTa здесь (Notes about S. Kaczmarz algorithm - consistent case)], а для несовместного случая [https://www.geogebra.org/m/QckSdw7t здесь (Notes about S. Kaczmarz algorithm - inconsistent case)]. Данные диаграммы позволяют регулировать параметры с.л.а.у. и начальное приближение, что позволяет наглядно демонстрировать сходимость итерационной последовательности.&lt;br /&gt;
&lt;br /&gt;
Описанные результаты наводят на очевидную идею - проекционная последовательность влияет на скорость сходимости метода ортогональных проекций. Обратите внимание на Рис.2.&lt;br /&gt;
[[Файл:al_kaz_sequence.png|thumb| right |700px|Рисунок 2. Выбор последовательности проектирования в алгоритме С. Качмажа: К выбору последовательности ортогональных проекций: слева - последовательность проектирования начинается от первого к последнему уравнению и в обратном порядке - от последнего к предпоследнему (symART&amp;lt;ref&amp;gt;Bjorck, A. Accelerated projection methods for computing pseudoinverse solutions of systems of linear equations [Текст] / A. Bjorck, T. Elfving // BIT Numerical Mathematics. — 1979. — Vol. 19, Issue 2. — С.145-163.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Nikazad, T. Algebraic Reconstruction Methods [Текст] : PhD. Thesis, Linköping University / T. Nikazad. — Linköping, 2008.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kamath, G. Component-Average Based Distributed Seismic Tomography in Sensor Networks [Текст] / G. Kamath, L. Shi, W.-Z. Song // IEEE International Conference on Distributed Computing in Sensor Systems. — 2013. — С. 88-95.&amp;lt;/ref&amp;gt;), а справа - последовательность строится циклическим способом (от последнего к первому уравнению и т.д.)]]&lt;br /&gt;
&lt;br /&gt;
Как показано на Рис. 2 - итерационная последовательность, в случае Рис. 2 (справа) сходится вообще за конечное число итераций.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
Вычислительное ядро алгоритма Качмажа состоит из двух частей:&lt;br /&gt;
* предварительный расчет норм всех строк матрицы и задание начального приближения к решению,&lt;br /&gt;
* серия итераций на каждой из которых приближенное решение пересчитывается с использованием одной операций [[SAXPY]] &#039;&#039;(scalar multiplication and vector addition)&#039;&#039; &amp;lt;ref&amp;gt;Mark Harris. Six Ways to SAXPY https://devblogs.nvidia.com/parallelforall/six-ways-saxpy/&amp;lt;/ref&amp;gt; и одного скалярного произведения векторов.&lt;br /&gt;
&lt;br /&gt;
Часть предварительного расчета необходима для оптимизации вычислений внутри итерационного процесса, для этого требуется выделение дополнительной памяти (&amp;lt;math&amp;gt;m&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;
Опуская предварительный расчет, базовой макрооперацией алгоритма является операция [[SAXPY]].&lt;br /&gt;
Параллелизация алгоритма ограничена его итерационной природой, а эффективность параллельных реализаций операции [[SAXPY]] и скалярного произведения увеличивается с увеличением размерности задачи (фактически, с увеличением количества неизвестных в с.л.а.у. &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;). Это особенно важно в задачах обработки изображений.&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
# Инициализируем вектор решения первым приближением: &amp;lt;math&amp;gt;u = u^{0}&amp;lt;/math&amp;gt;. В качестве первого приближения зачастую используется нулевой вектор.&lt;br /&gt;
# Рассчитываем нормы строк матрицы с.л.а.у.: &amp;lt;math&amp;gt;{\Vert A \Vert}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Вычисляем очередной номер проекции: &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Для целей обеспечения устойчивости, проверяем, что норма соответствующей проекции не близка к нулю и продолжаем вычисления, иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
# Запоминаем предыдущее приближение решения и вычисляем новое: &amp;lt;math&amp;gt;u^{k+1}=u^{k}+\lambda_{k}\frac{f_{j\left(k\right)}-\left(a_{j\left(k\right)},u^{k}\right)}{\Vert a_{j\left(k\right)}\Vert^{2}}a_{j\left(k\right)}&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Если решение вычислено с заданной точностью, то выходим из цикла; иначе переходим к новой итерации (пункт 3).&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
Вычислительная сложность алгоритма Качмажа определяется сложностью реализации операции [[SAXPY]] - &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;. Затраты на предварительный расчет обычно не включают в сложность самого алгоритма. В итоге, общая сложность алгоритма Качмажа зависит от количества итераций и равна &amp;lt;math&amp;gt;k \cdot O(n)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&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;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Исходя из описания алгоритма можно построить информационный и операционные графы алгоритма (см. Рис. 3 и 4). В качестве вершин графа выступают этапы последовательного алгоритма (см. пункт 1.6). Графы алгоритма являются параметризованными (зависят от входных данных) и недетерминированными (в смысле, что количество вычислений зависит от начальных данных).&lt;br /&gt;
[[Файл:ИГ_Качмаж.jpg|thumb| right |700px|Рисунок 3. Информационный граф алгоритма Качмажа.]]&lt;br /&gt;
[[Файл:ОГ_Качмаж.jpg|thumb| right |700px|Рисунок 4. Операционный граф алгоритма Качмажа.]]&lt;br /&gt;
&lt;br /&gt;
Из приведенных графов следует, что зависимость каждой итерации цикла от предыдущей исключает параллельную реализацию алгоритма. Фактически, в качестве подготовительных действий возможно одновременно рассчитать начальное приближение, нормы строк матрицы и порядок обхода (номера проекций), остальная часть алгоритма выполняется исключительно последовательно.&lt;br /&gt;
&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Алгоритм Качмажа, как любой итерационный алгоритм, является последовательным и в строковой версии алгоритма ресурс для параллелизма оказывается небольшим - только за счет параллельных реализаций операции [[SAXPY]] и скалярного произведения.&lt;br /&gt;
&lt;br /&gt;
Однако, существуют различные блочные версии алгоритма Качмажа, где проектирование осуществляется не на конкретную гиперплоскость, а на их пересечение в рамках выбранного блока. Такие модификации имеют существенно больший ресурс для распараллеливания и связаны с трудоемкими задачами псевдообращения и задачей выбора оптимального размера блока (в общем случае не предполагается, что с.л.а.у. разбивается на блоки равных размеров, что еще больше усложняет задачу).&lt;br /&gt;
&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
Входными данными алгоритма являются:&lt;br /&gt;
# матрица с.л.а.у. &amp;lt;math&amp;gt;A\in R^{m\times n}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# вектор правых частей &amp;lt;math&amp;gt;f\in R^{m}&amp;lt;/math&amp;gt;,&lt;br /&gt;
# требуемая точность &amp;lt;math&amp;gt;\epsilon&amp;gt;0&amp;lt;/math&amp;gt;,&lt;br /&gt;
# а так же максимальное количество итераций &amp;lt;math&amp;gt;K_{max}\in N&amp;lt;/math&amp;gt;.&lt;br /&gt;
Объем входных данных составляет  &amp;lt;math&amp;gt;m \cdot n + m + 2&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Выходными данными алгоритма является вектор решения с.л.а.у. &amp;lt;math&amp;gt;u\in R^{n}&amp;lt;/math&amp;gt;. Объем выходных данных составляет &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ячеек памяти.&lt;br /&gt;
&lt;br /&gt;
Важно отметить, что для начала итераций (в случае, когда этап предварительных расчетов опускается) вся с.л.а.у. не нужна, достаточно всего одного уравнения, остальные можно подавать в &amp;quot;решатель&amp;quot; последовательно. Таким образом, в задачах обработки результатов измерений нет необходимости запоминать в оперативной памяти все результаты измерений, достаточно результаты каждого измерения подавать в &amp;quot;решатель&amp;quot; и по завершению итерации - забывать их (особенно интересно, в случае, когда провести измерение повторно оказывается дешевле, чем сохранить его результаты). Как считают авторы, данный факт играл решающую роль в выборе алгоритма для решения задач компьютерной томографии, в которых измерения (срезы синограммы) появляются последовательно, а повторение измерения лишь увеличивает лучевую нагрузку на сканируемый объект и само время сканирования (но, объем лучевой нагрузки, естественно, является критичным для биологических объектов).&lt;br /&gt;
&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
[[глоссарий#Вычислительная мощность|&#039;&#039;Вычислительную мощность&#039;&#039;]] алгоритма подсчитать затруднительно, так как формально, последовательность приближений сходится к точному решению в пределе.&lt;br /&gt;
&lt;br /&gt;
Вопрос о вычислительной устойчивости алгоритма остается открытым, для уменьшения артефактов вычислений в арифметике с плавающей точкой рекомендуется не использовать в проекционной последовательности те строки матрицы, нормы которых близки к нулю.&lt;br /&gt;
&lt;br /&gt;
Алгоритм [[глоссарий#Детерминированность|&#039;&#039;недетерминирован&#039;&#039;]] по структуре вычислительного процесса: число итераций, а значит и число операций, зависят от входных данных. С другой стороны, алгоритм детерминирован в том смысле, что выдаёт всегда одинаковый результат при одинаковых входных данных (естественно, исключая рандомизированные модификации алгоритма Качмажа).&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
Ниже представлен прототип программной реализации алгоритма на языке MatLab. Большое количество вариантов реализации и различных модификаций представлено в этих пакетах &amp;lt;ref name=&amp;quot;airtools&amp;quot;&amp;gt;Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods [Электронный ресурс] / Режим доступа: http://www2.compute.dtu.dk/~pcha/AIRtools/&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;regkaz&amp;quot;&amp;gt;Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange [Электронный ресурс] / Режим доступа: http://www.mathworks.com/matlabcentral/fileexchange/43791&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;matlab&amp;quot;&amp;gt;&lt;br /&gt;
function [ u ] = ART(A, f, maxit, tol)&lt;br /&gt;
%ART1 - алгоритм алгебраической реконструкции (С. Качмажа) с циклическим обходом&lt;br /&gt;
%   A, f - исходные данные задачи&lt;br /&gt;
%   tol - чувствительность правила останова&lt;br /&gt;
	[m,n] = size(A); u = zeros(n,1);&lt;br /&gt;
	% Нормы строк матрицы с.л.а.у. рассчитываются заранее&lt;br /&gt;
	nrma2 = full(abs(sum(A.*A&#039;,1)));&lt;br /&gt;
	for k = 1:1:maxit     &lt;br /&gt;
		j = mod(k-1,m) + 1;&lt;br /&gt;
		if (nrma2(j) &amp;lt;= 0), continue, end;&lt;br /&gt;
		u_prev = u;&lt;br /&gt;
		u = u + (f(j) - (A(j,:)*u))/nrma2(j) * A(j,:)&#039;;&lt;br /&gt;
		if (norm(u_prev-u) &amp;lt;= tol), break, end;&lt;br /&gt;
	end;&lt;br /&gt;
end;&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;\left\Vert A\cdot u_{k}-f\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;\left\Vert u_{k-1}-u_{k}\right\Vert &amp;lt;\epsilon&amp;lt;/math&amp;gt; (как в представленной реализации). Последний критерий может слишком рано завершать итерации, в виду того, что часто, алгоритм имеет медленную скорость сходимости.&lt;br /&gt;
&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
Алгоритм Качмажа характеризуется высокой [[Глоссарий#Пространственная локальность|пространственной]] и [[Глоссарий#Временная локальность|временной локальностью]], которые обуславливаются использованием внутри алгоритма векторных операций (например операции [[SAXPY]]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Важно&#039;&#039;&#039;, при реализации учитывать структуру хранения двумерных массивов в оперативной памяти для выбранной архитектуры. К примеру в языках С/С++, двумерный массив (матрица) из трех строк и четырех колонок будет сохранен в памяти в следующей последовательности: (1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4) - элементы матрицы выписываются последовательно, по строкам.&lt;br /&gt;
&lt;br /&gt;
Однако, при реализации на языке FORTRAN эта же матрица будет сохранена в следующей последовательности: (1,1),(2,1),(3,1),(1,2),(2,2),(3,2),(1,3),(2,3),(3,3),(1,4),(2,4),(3,4) - элементы матрицы выписываются последовательно, по столбцам &amp;lt;ref&amp;gt;How FORTRAN Stores Two-Dimensional Arrays in Memory, https://support.microsoft.com/en-us/kb/27780&amp;lt;/ref&amp;gt;. При реализации на FORTRAN подобных языках, матрицу &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;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
Как было сказано выше, ресурсом параллелизма в алгоритме являются векторные операции: [[SAXPY]] и скалярное произведение векторов. Данные макрооперации имеют высокую степень параллелизма и могут быть реализованы для различных классов архитектур. Однако факт того, что вычисления выполнятюся многократно в цикле, требующем полного вектора решения на этапе проверки достижения необходимой точности, говорит о целесообразности применения архитектур с общей памятью.&lt;br /&gt;
&lt;br /&gt;
Так же стоит отметить что графические процессоры хорошо зарекомендовали себя для реализации матричных и векторных операций, в частности той же операции [[SAXPY]], например, в &amp;lt;ref name=&amp;quot;saxpy1&amp;quot;&amp;gt;А.Ю. Суравикин, В.В. Коробицын Оценка производительности связывания CUDA с графическим API на примере задачи SAXPY / Математические структуры и моделирование. - 2010ю - Т.21. - С. 96-103.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Множество модификаций алгоритма Качмажа реализовано в следующих расширениях для математического пакетата MatLab:&lt;br /&gt;
* Hansen, P. C. AIR Tools – A MATLAB package of algebraic iterative reconstruction methods &amp;lt;ref name=&amp;quot;airtools&amp;quot;/&amp;gt;&lt;br /&gt;
* Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1.  &amp;lt;ref&amp;gt;Hansen, P. C. Regularization Tools: A MATLAB package for Analysis and Solution of Discrete Ill-Posed Problems. Version 4.1., http://www2.compute.dtu.dk/~pcha/Regutools/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Ivanov, A. A. Regularization Kaczmarz Tools Version 1.4 for Matlab, Matlabcentral Fileexchange &amp;lt;ref name=&amp;quot;regkaz&amp;quot;/&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= ЧАСТЬ. Дополнительная информация =&lt;br /&gt;
&lt;br /&gt;
== Классификация проекционных последовательностей ==&lt;br /&gt;
Под проекционной последовательностью понимается порядок обхода уравнений системы в процессе итераций алгоритма Качмажа. А рассматриваемая последовательность задается с использованием правила &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k\in N_{0}&amp;lt;/math&amp;gt; которое позволяет вычислить номер используемого уравнения на итерации с номером &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
Правило  &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;рассматривать как сюръективное отображение множества &amp;lt;math&amp;gt;N_{0}&amp;lt;/math&amp;gt; на множество &amp;lt;math&amp;gt;\left\{ 1,2,\ldots,m\right\}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количество уравнений в с.л.а.у. &amp;lt;math&amp;gt;Au=f,\ A\in R^{m\times n},\ u\in R^{n},\ f\in R^{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Отображения такого вида могут быть как детерминированными, так и случайными, рандомизированными. В последнем случае &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения. Например, к детерминированным отображениям необходимо отнести:&lt;br /&gt;
* правило циклического обхода &amp;lt;math&amp;gt;j\left(k\right)=\left(k\ \bmod\ m\right)+1,\, k=\overline{0,\infty}&amp;lt;/math&amp;gt;;&lt;br /&gt;
* метод четной перестановки - эвристический метод для задач компьютерной томограции из &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt;;&lt;br /&gt;
* симметричное правило (symmetric ART), в котором последовательность проектирования на гиперплоскости идет в начале в прямом порядке от первого уравнения к последнему, а затем в обратном порядке - от последнего - к первому.&lt;br /&gt;
&lt;br /&gt;
Существенно важной является классификация рассматриваемых правил по их зависимости от данных. Например, результат из &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt;, где &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; является дискретной случайной величиной с заданным законом распределения &amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&amp;lt;/math&amp;gt; - матричная норма Фробениуса и &amp;lt;math&amp;gt;\left\Vert a_{i}\right\Vert&amp;lt;/math&amp;gt; - евклидова норма строки матрицы с.л.а.у. с номером &amp;lt;math&amp;gt;i=\overline{1,m}&amp;lt;/math&amp;gt;. Этот результат качественно отличается от всех известных рандомизированных способов наличием зависимости от матрицы с.л.а.у - от исходных данных задачи.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Kz_alg_class.png|thumb| right |700px|Рисунок 3. Классификация правил для задания проекционной последовательности в алгоритме C. Качмажа]]&lt;br /&gt;
&lt;br /&gt;
== Рандомизированная версия алгоритма и скорость сходимости ==&lt;br /&gt;
При решении с.л.а.у. сверхбольшой размерности использование всех уравнений системы может оказаться избыточным, более того, учесть все уравнения системы, полученные в результате некоторых измерений, может не быть технической возможности, что обусловлено ограниченными ресурсами ЭВМ. Существуют подходы, связанные с обработкой данных решаемой задачи, цель которых состоит в отборе только информативных результатов измерений. &lt;br /&gt;
&lt;br /&gt;
Например, при решении задачи идентификации оптических искажающих систем &amp;lt;ref&amp;gt;Фурсов, В.А. Идентификация оптических искажающих систем с отбором информативных фрагментов изображений [Текст] / В.А. Фурсов // Компьютерная оптика. — 1995. —Вып. 15, ч.1. — С. 79–89.&amp;lt;/ref&amp;gt; следует использовать не весь объем измерений, а только тот, что выполнен для в определенном смысле информативных фрагментов изображений. Формально это соответствует удалению части уравнений из с.л.а.у., которые оказываются линейно зависимыми и отрицательным образом влияют на обусловленность задачи &amp;lt;ref&amp;gt;Фурсов, В.А. Введение в идентификацию по малому числу наблюдений. [Текст] / В.А. Фурсов. — М. : Изд-во МАИ, 1991. —36 с.&amp;lt;/ref&amp;gt;, что, в свою очередь, приводит к крайне медленной скорости сходимости известных итерационных алгоритмов. &lt;br /&gt;
&lt;br /&gt;
Таким образом, основная цель рандомизации итерационных проекционных алгоритмов решения с.л.а.у. состоит в том, чтобы обеспечить скорость сходимости (а значит и вычислительную сложность), независимую от количества уравнений в системе (количества измерений) &amp;lt;ref&amp;gt;Sabelfeld, K Stochastic iterative projection methods for large linear systems [Текст] / K. Sabelfeld, N. Loshchina // Monte Carlo Methods and Applications. — 2010. — Vol. 16, Issue 3-4. — С. 343-359.&amp;lt;/ref&amp;gt;, но при решении не использовать систему целиком, а только отдельные уравнения, выбранные определенным случайным образом.&lt;br /&gt;
&lt;br /&gt;
Наиболее простым и очевидным способом случайную последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяют с использованием дискретного равномерного закона распределения&lt;br /&gt;
&amp;lt;math&amp;gt;P\left(j\left(k\right)=i\right)=\frac{1}{m}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в процессе итераций все уравнения системы будут участвовать в решении задачи примерно одинаковое число раз. Данный способ задания &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; обширно используют в работах &amp;lt;ref name=&amp;quot;strohmer&amp;quot;/&amp;gt; &amp;lt;ref&amp;gt;Strohmer, T. A randomized solver for linear systems with exponential convergence [Текст] / T. Strohmer, R. Vershynin // Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques. — Springer; 2006. С. 499-507.&amp;lt;/ref&amp;gt;, посвященных рандомизации итерационных алгоритмов, в качестве базового, для демонстрации преимущества новых подходов. В указанных работах, их авторы произвели настоящую революцию в рандомизации алгоритма Качмажа, указав закон распределения, определяющий последовательность &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; таким образом, что итерационная последовательность имеет экспоненциальную скорость сходимости. Их результат формулируется в виде следующей важной теоремы:&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;Au=f\ A\in R^{m\times n},\ u\in R^{n},\ f\in R^{m}&amp;lt;/math&amp;gt; - совместная переопределенная \left(m\geq n\right)  с.л.а.у., а &amp;lt;math&amp;gt;u_{0}&amp;lt;/math&amp;gt; - некоторое начальное приближение к ее решению, и для рекуррентной формулы алгоритма Качмажа значения последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; определяются с использованием закона распределения:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P\left(j\left(k\right)=i\right)=\frac{\left\Vert a_{i}\right\Vert _{2}^{2}}{\left\Vert A\right\Vert _{F}^{2}},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;\left\Vert \cdot\right\Vert _{F}&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;
M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}^{2}\right]\leq\left(1-\kappa\left(A\right)^{-2}\right)^{k}\left\Vert x^{0}-x^{*}\right\Vert _{2}^{2},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
 \left(1-2k\cdot\kappa\left(A\right)^{-2}\right)\left\Vert x^{0}-x^{*}\right\Vert _{2}\leq M\left[\left\Vert u^{k}-u^{*}\right\Vert _{2}\right].&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В приведенных неравенствах величина &amp;lt;math&amp;gt;\kappa\left(A\right)=\left\Vert A\right\Vert _{F}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt; является одной из оценок&lt;br /&gt;
&amp;lt;math&amp;gt;1\leq\frac{\kappa\left(A\right)}{\sqrt{n}}\leq k\left(A\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
спектрального числа обусловленности матрицы с.л.а.у. &amp;lt;math&amp;gt;k\left(A\right)=\left\Vert A\right\Vert _{2}\left\Vert A^{+}\right\Vert _{2}&amp;lt;/math&amp;gt;, предложенной в &amp;lt;ref&amp;gt;Demmel, J. The probability that a numerical analysis problem is difficult [Текст] / J. Demmel // Mathematics of Computation. . — 1988. — Vol. 50, Issue 182. — С. 449–480.&amp;lt;/ref&amp;gt; (здесь &amp;lt;math&amp;gt;A^{+}&amp;lt;/math&amp;gt; - псевдообратная матрица, в то же время &#039;&#039;левая обратная матрица&#039;&#039; для &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
До публикации работ Штромера (Strohmer, T.) не существовало оценок скорости сходимости алгоритма Качмажа &#039;&#039;в терминах числа обусловленности матрицы с.л.а.у.&#039;&#039; Данная теорема также наиболее точно демонстрирует цель рандомизации - показать, что &#039;&#039;скорость сходимости не зависит от &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - количества уравнений в системе, но зависит от порядка системы &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Качмажа как метод максимального уменьшения ошибки на каждой итерации ==&lt;br /&gt;
== Алгоритм Качмажа с четной перестановкой ==&lt;br /&gt;
&lt;br /&gt;
Данная эвристика оказывается, пожалуй, одной из самых изящных и определяет отображение &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; следующим образом. В работе &amp;lt;ref&amp;gt;Guan H. A projection access order for speedy convergence of ART (algebraic reconstruction technique): a multilevel scheme for computed tomography [Текст] / Guan H., R. Gordon // Physics in Medicine and Biology. — 1994. — Vol. 39, N. 11. — С. 2005-2022.&amp;lt;/ref&amp;gt; предлагается алгоритм MLS (multilevel scheme) для переупорядочивания строк в матрице таким образом, чтобы каждое следующее проецирование в итерационной последовательности осуществлялось на гиперплоскость, наиболее ортогональную к текущей (только для матриц в задачах томографии). Допустим, что имеется 8 проекций (в матрице с.л.а.у. - всего восемь строк), снятых под углами в 0, 22.5, 45 ,67.5, 90, 112.5, 135 и 157.5 градусов, тогда период последовательности &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; выглядит как: &amp;lt;math&amp;gt;{0,4,2,6,1,5,3,7}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Когда количество проекций (строк в с.л.а.у.) является степенью двойки, то &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt; совпадет с последовательностью, которая используется для реализации алгоритма «на месте» одномерного быстрого преобразования Фурье, например в &amp;lt;ref&amp;gt;Cooley, J.W. An algorithm for the machine calculation of complex Fourier series [Текст] / J.W. Cooley, J. W. Tukey // Mathematics of Computation. — 1965. — Vol. 19, N. 90. — С. 297–301.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Формально, данная модификация эквивалентна исходному алгоритму с циклическим правилом обхода, который применяется к с.л.а.у. &amp;lt;math&amp;gt;D \cdot A \cdot u=D \cdot f&amp;lt;/math&amp;gt; , где &amp;lt;math&amp;gt;D\in R^{m\times m}&amp;lt;/math&amp;gt; суть - перестановочная матрица.&lt;br /&gt;
&lt;br /&gt;
В чем же состоит изящность данного способа задания отображения &amp;lt;math&amp;gt;j\left(k\right)&amp;lt;/math&amp;gt;? Правило четной перестановки, было специально разработано для решения задачи восстановления данных по измерениям, выполненным с использованием компьютерного томографа с параллельной схемой сканирования. Правило построено его авторами из интуитивных соображений о структуре самих данных, а не их значений.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Ivanov Andrey</name></author>
	</entry>
</feed>