【发布时间】:2012-11-10 12:47:28
【问题描述】:
我在多个来源(在线和书籍)中遇到过这个问题 - 对于大小为 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 的值是多少?
【问题讨论】:
-
对于每个单元格(n^2),你会遍历相应行和列中的n个单元格,然后将它们相乘,所以是O(n^3)。
-
所以如果我们有 2 个矩阵 A 和 B,每个矩阵都是 nXn。它们的乘积是大小为 nXn 的矩阵 X。您是在暗示对于 X 中的每个值(X 中有 n^2 个值),您必须遍历 A 和 B 中的总共 n 个元素?还是更像A中的n个元素和B中的n个元素,这会使这个n^4而不是n^3。
-
A 中的 n 个元素和 B 中的 n 个元素,是的,但总计最多为 2n,而不是 n^2。所以最终结果是O(n^3)。
标签: big-o matrix-multiplication