我可以通过显示它只需要5次乘法来表明矩阵A的平方为2 * 2是O(n ^ log5)。直到现在我没有问题,但是当我想解释为什么我们不能将其推广到其他平方情况(不同的n * n大小)时,我可以想出一个如下:
我能想出的第一个原因是我将3 * 3矩阵与自身相乘并得出结论,至少它有6次乘法,所以它的运行时间至少为O(n ^ log6),其中n ^ epsalon更大O(n ^ log5)所以它更慢,我们不能为所有情况推广O(n ^ log5)。现在我需要另一个理由,但是我无法想出如何解释第二个原因可以让任何人帮忙(我只想提出一个想法)?
答案 0 :(得分:1)
您不可能从示例中以big-o表示法导出运行时间。 Big-O表示法告诉我们一些算法的复杂性如何随着参数的增加而扩展(在这种情况下矩阵大小为n),所以如果你真的想通过实验来近似它,你至少要计算几个测试大小的运行时间
但是我怀疑你能找到手动平方100x100矩阵的最佳方法......这实际上是一个难题。我们确切知道的是,它并不比矩阵矩阵产品复杂。对于那些我们有欧米茄下限(n ^ 2)的人,因为我们必须至少查看一次矩阵的每个条目。并且我们有大约O(n ^ 2.3729)的(理论)完美算法的上界,因为存在已知具有该复杂性的算法。 (见http://en.wikipedia.org/wiki/Matrix_multiplication#Algorithms_for_efficient_matrix_multiplication)
顺便提一下2.3729<您建议最小的log6 - 这与语句不矛盾,您可能需要对3x3矩阵进行6次乘法,因为再次:O符号只关心运行时间的渐近行为,因为n变大 - 而不是关于个人的任何特定的运行时间。