Временная сложность разложения Холецкого для формы ЛПНП

Существует две разные формы разложения Холецкого:

A = M * ctranspose (M)

и форма ЛПНП

A = L * D * ctranspose (L)

где ctranspose - сложное транспонирование.

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

При эффективной реализации сложность разложения LDL такая же (sic), что и разложения Холецкого.

В документе говорится, что разложение Холецкого требует n^3/6 + O(n^2) операций. Однако Википедия говорит, что число операций с плавающей запятой равно n^3/3, и мои собственные вычисления получают это также для первой формы. В основном это сводится к сумме чисел треугольника, которая:

n*(n+1)*(n+2)/6.  

Вот где, я думаю, газета попадает n^3/6. Но для первой формы член в самой тройной внутренней сумме равен a[i][k]*a[j][k], что по сути является скалярным произведением. В сумме получается 2 * n операций с плавающей запятой. Таким образом, операции с плавающим указателем должны быть n^3/3 + O(n^2). И если вы посмотрите на форму LDL, член в самой внутренней сумме будет a[i][k]*a[j][k]*d[k]. Это 3 * n операций с плавающим указателем (2 умножения и 1 сложение). Таким образом, операции с плавающей запятой должны бытьn^3/2 + O(n^2).

Другими словами, LDL-форме требуется на 50% больше операций с плавающей запятой. Я прав? Я думаю, что статья неправильная (хотя они не определяют, что они имеют в виду под операция). Это важно, потому что я реализую модифицированную форму разложения холекси на основе формы ЛПНП и хочу оценить эффективность своего алгоритма.

Возможно, этот вопрос больше подходит для https://math.stackexchange.com/


person Z boson    schedule 16.04.2014    source источник


Ответы (1)


person    schedule
comment
Как вы думаете, тогда мои числа верны для флопа? n ^ 3/3 для первой формы и n ^ 3/2 для формы LDL? Что касается сложного MAC, я думаю, что количество операций все же другое. Количество операций MAC будет n ^ 3/6 для первой формы и n ^ 3/3 (каждый член имеет два умножения) для формы LDL. Между прочим, с процессором Haswell у него есть инструкция MAC (называемая FMA), которую я также реализовал. - person Z boson; 08.05.2014
comment
Причину, по которой мне важна форма ЛПНП, можно найти в bioinfo.org.cn /~wangchao/maa/Numerical_Optimization.pdf в измененном разделе choleksy. Я использую их алгоритм для плохо определенных матриц, которые иногда (но не часто) встречаются в нашей работе. - person Z boson; 08.05.2014