c++ - 是否有任何方法可以将具有 O(n) 复杂度的矩阵相乘?

标签 c++ c matrix big-o

我想将两个矩阵相乘,但三重循环的复杂度为 O(n3)。动态规划中是否有任何算法可以将两个复杂度为 O(n) 的矩阵相乘?

好吧,我们不能比 O(n2.81) 更好

编辑: 但是有没有任何解决方案可以将结果近似到某个特定的数字。矩阵的列和行数

我的意思是我们得到了 O(n2.81 ) 中最好的一个复杂的解决方案但完美的结果但是如果有任何解决方案即使是矩阵乘法的近似值,因为我们有阶乘近似的公式等等

如果有你知道的,会帮助我的

问候。

最佳答案

目前已知的最佳矩阵乘法算法是 "Coppersmith-Winograd algorithm" 具有 O(n2.38 ) 复杂性,但用于实际目的。

但是,您始终可以使用 "Strassen's algorithm" 具有 O(n2.81 ) 复杂度,但没有这样的已知算法用于具有 O(n) 复杂度的矩阵乘法。

关于c++ - 是否有任何方法可以将具有 O(n) 复杂度的矩阵相乘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1944621/

相关文章:

c++ - 格式错误的 C 或 C++ 程序是否保证在 Visual Studio 中的 DEBUG 配置下崩溃

r - 按矩阵列名称提取矩阵列值

matrix - 方形到梯形

algorithm - 博格板的邻接矩阵

c - fscanf 在 C 中从文件中复制一行两次

c++ - Qthread : worker for I/O queue

c# - 在从 C++ 转换为 C# 的代码中,我应该使用什么来代替 memcpy?

c++ - 将 void 函数模板专门化为 const char[N]

c - 哪些嵌入式处理器最接近多核

c++ - 使用 COLLADA DOM 将 COLLADA 文档输出为字符串