我无法理解问题解决方案的时间复杂性。
设X,Y和Z为n×n矩阵。假设我们要验证XY = Z.通过计算XY直接解决问题的复杂性是什么?
正确答案是O(n 3 ),但我不明白为什么。为什么会这样?
答案 0 :(得分:0)
计算两个n×n矩阵乘积的标准算法是使用产品中位置(i,j)的条目是第一个矩阵和第j个列的第i行的内积的事实。第二个矩阵计算此行和此列的内积需要时间Θ(n),因为有n个条目需要成对相乘并求和。因此,所得矩阵的每个条目花费时间Θ(n)。由于矩阵中有n 2 总条目,使用朴素算法的总时间复杂度为Θ(n 3 )。
有比这里描述的更快的矩阵乘法方法,它们使用更复杂的算法。您可能想要查找Coppersmith-Winograd算法或Strassen算法,它们比天真算法渐近快。
然而,有更好的随机算法来检查产品是否正确。检查Frievalds' algorithm是否有O(n 2 )时间随机算法,该算法很有可能检测到乘法是否正确。
希望这有帮助!