我在多种来源(在线和书籍)中遇到过这种情况 - 对于大小为nXn的矩阵,方阵乘法的运行时间为O(n ^ 3)。 (例如 - matrix multiplication algorithm time complexity)
该陈述将指示该乘法过程的运行时间的上限是C.n ^ 3,其中C是某个常数并且n> n0,其中n0是某个输入,超过该输入,该上限保持为真。 (http://en.wikipedia.org/wiki/Big_O_notation和What is the difference between Θ(n) and O(n)?) 问题是,我似乎无法导出常数C和n0的值。
我的问题 -
有人能为“广场矩阵乘法的大哦是O(n ^ 3)”这个陈述提供数学证明吗?
C和n0的值是什么?
答案 0 :(得分:5)
每个中有3个for循环,每个循环从0到n-1(或1到n)(可以看到in the link you provided,即使它不完全正确),这会导致为O(n 3 )。将其形式化为适当的证据应该很容易。
a)对于形式证明,运行时间需要根据一组操作来定义,通常被认为是任何算术运算。在3 for循环中有2个算术运算(1次乘法,1次加法),因此得到2.n3
,因此C = 2.
b)n0 = 0,因为这与n = 1
请注意,由于big-O只是一个上限,我们也可以说这个算法的复杂度对于任何k> = 3都是O(n k )(同样不会如果我们使用big-Theta符号,则为真。我们也可以将C和n0分别设置为大于2和0的任何值(因为要求不是找到最小的可能值)。