如何计算给定算法的复杂度

计算科学 算法 复杂
2021-12-24 06:34:29

我给出了以下算法:

输入:正则矩阵ARn,n 输出:A = LU 的 LU 分解

对于k = 1,. . . , n

对于j = k,. . . , n rkj=akji=1k1lkirij

结束

对于i = k + 1,. . . , n

lik=(aikj=1k1lijrjk)/rkk

结束

结束

给定每个基本操作 (+,-,*,/) 的成本为 1,如何得出该算法的复杂度为2/3n^3 - 1/2n^2 - 1/6n我真的很想了解这种复杂性的封闭公式是如何得出的。

1个回答

为了计算rkj,你需要做k1乘法和k加法,总共2k1操作。你需要这样做j=k...n, IEnk次共(nk)(2k1)计算所有的操作rkj对于给定的k. 然后你需要为所有人这样做k从 1 到n,所以第一个循环的成本是

k=1n(nk)(2k1)=nk=1n(2k1)k=1nk(2k1)=2nk=1nkk=1n12k=1nk2+k=1nk=2n12n(n+1)nsomething+12n(n+1).
您需要查找第三个总和的公式:我忘记了它的确切值,但它与n3.

您可以对算法的第二个内部循环进行相同的计算。