Java 这在技术上是可能的吗?
我有两个矩阵,分别是200000x3000和30000x200000。它们是密集的,大多数值(80%)已填充Java 这在技术上是可能的吗?,java,c++,Java,C++,我有两个矩阵,分别是200000x3000和30000x200000。它们是密集的,大多数值(80%)已填充 这需要多少次迭代?朴素算法需要120万亿次运算,即O(120000000000000),因此可能需要一段时间 每个操作数大约需要4.5 GB,而输出矩阵大约需要298 GB,假设每双字节8个字节 与naive算法相比,这并不简单,因为: 此外,矩阵不需要是平方的。可以使用相同的方法将非平方矩阵一分为二,从而生成更小的非平方矩阵。如果矩阵具有足够的非平方性,那么使用基本上是O(n2)的简单
这需要多少次迭代?朴素算法需要120万亿次运算,即O(120000000000000),因此可能需要一段时间 每个操作数大约需要4.5 GB,而输出矩阵大约需要298 GB,假设每双字节8个字节 与naive算法相比,这并不简单,因为: 此外,矩阵不需要是平方的。可以使用相同的方法将非平方矩阵一分为二,从而生成更小的非平方矩阵。如果矩阵具有足够的非平方性,那么使用基本上是O(n2)的简单方法,将初始运算减少到更多的平方积是值得的。例如:
- 大小为[2N x N]*[N x 10N]的产品可以作为20个独立的[N x N]*[N x N]操作进行,以形成结果李>
- 大小为[N x 10N]*[10N x N]的乘积可以作为10个独立的[N x N]*[N x N]运算,相加形成结果
另请参见。否,因为第一个矩阵的列数必须与第二个矩阵的行数相匹配。不过,您可以将一个乘以另一个的转置。@user2357112谢谢,转置是可以接受的。为什么不可能呢?@clcto计算起来可能需要很长时间。只有一种方法可以让您知道问题的答案:试试看。你可能会在任何人发布答案之前得到答案。如果我使用Strassen算法?