为什么方阵乘法的时间复杂度定义为O(n ^ 3)?

时间:2012-11-22 06:55:38

标签: big-o matrix-multiplication

我在多种来源(在线和书籍)中遇到过这种情况 - 对于大小为nXn的矩阵,方阵乘法的运行时间为O(n ^ 3)。 (例如 - matrix multiplication algorithm time complexity

该陈述将指示该乘法过程的运行时间的上限是C.n ^ 3,其中C是某个常数并且n> n0,其中n0是某个输入,超过该输入,该上限保持为真。 (http://en.wikipedia.org/wiki/Big_O_notationWhat is the difference between Θ(n) and O(n)?) 问题是,我似乎无法导出常数C和n0的值。

我的问题 -

  1. 有人能为“广场矩阵乘法的大哦是O(n ^ 3)”这个陈述提供数学证明吗?

  2. C和n0的值是什么?

1 个答案:

答案 0 :(得分:5)

  1. 每个中有3个for循环,每个循环从0到n-1(或1到n)(可以看到in the link you provided,即使它不完全正确),这会导致为O(n 3 )。将其形式化为适当的证据应该很容易。

  2. a)对于形式证明,运行时间需要根据一组操作来定义,通常被认为是任何算术运算。在3 for循环中有2个算术运算(1次乘法,1次加法),因此得到2.n3,因此C = 2.

    b)n0 = 0,因为这与n = 1

  3. 成立

    请注意,由于big-O只是一个上限,我们也可以说这个算法的复杂度对于任何k> = 3都是O(n k )(同样不会如果我们使用big-Theta符号,则为真。我们也可以将C和n0分别设置为大于2和0的任何值(因为要求不是找到最小的可能值)。