分治法必须用递归程序的实现 矩阵太大没法相乘怎么办?
矩阵太大没法相乘怎么办?
您目前最大的问题是内存开销太大,直接导致连EXE文件都无法生成,所以首先解决的是内存分配问题。注意10000阶矩阵非常大。如果是双精度浮点类型,则每个矩阵将使用800m内存,其他类型将自行转换。因此,无论你有多少份拷贝,你必须小心不要有太多的拷贝,首先要考虑你能保存多少内存。由于静态存储空间的开销通常在可执行文件中有一个相同大小的副本,因此可以通过将矩阵的存储空间改为动态分配来解决连接问题。此外,还有两个问题。一是是否有必要使用稠密矩阵。我认为这是没有必要的,除了非常特殊的问题。我们应该用稀疏矩阵来解决这个问题。另一个是如果你必须使用稠密矩阵,你会实现高速乘法吗?如果只使用最常见的三环,无论打开什么编译优化选项,都会花费很长时间(VC6优化太弱)。即使是Strassen算法也非常慢。你应该给布拉斯图书馆打电话。否则,虽然没有上面说的那么夸张,但几分钟就可以算出,你数习几个小时是正常的。
矩阵相乘的算法的时间复杂度到底怎么一回事?一点都不懂?
矩阵乘法的时间复杂度:假设矩阵A是n*m,矩阵B是m*P,矩阵A和B相乘得到矩阵C是n*P
矩阵C中有n*P个元素,计算每个元素需要m次乘法
所以总的时间复杂度是m*n*P
这是最好的理解
分治法必须用递归程序的实现 c语言计算两个矩阵之和 c语言输入4×4的矩阵
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。