对于矩阵乘积,大家应该都是比较熟悉的,如果要让我们用算法来实现,绝大多数人都会使用三层循环来实现,从时间复杂度上分析,无疑是n的三次方量级的
当然德国的数学家也提出了一个7个子矩阵的乘法运算,降到了n的2.81次方的量级,后来又有人进一步优化提升到了n的2.376次方的量级,但是提升到n的平方量级的确是比较困
难的,不过如果要去验证矩阵乘积正确与否,这倒是可以实现的,不过这个算法依赖于随机化,换个话说,就是不一定是正确的,运气总是很难掌握的。。
验证矩阵A*B=C是否正确,首先避免相乘,那么如何解决呢?
根据运算法则可知:两边同时乘以一个矢量依然成立即ZAB=ZC 【Z是一个1*n的矢量】
这样的话,可以符合我们时间上的要求了 ZA可以在平方量级的时间上完成,结果还是矢量,乘以B同样也是平方级
当然这个算法的优势很明显,速度快,缺点在于有可能错误,即可能存在某些Z在D=AB D不等于C的时候,ZD=ZC了
错误的概率的分析大家可以自己进行,总结的经验就是运行的次数越多,即随机生成的z测试的越多,正确性越高,算法的误判率会随着测试的次数降低