分治法必須用遞歸程序的實(shí)現(xiàn) 矩陣太大沒法相乘怎么辦?
矩陣太大沒法相乘怎么辦?您目前最大的問題是內(nèi)存開銷太大,直接導(dǎo)致連EXE文件都無法生成,所以首先解決的是內(nèi)存分配問題。注意10000階矩陣非常大。如果是雙精度浮點(diǎn)類型,則每個(gè)矩陣將使用800m內(nèi)存,其
矩陣太大沒法相乘怎么辦?
您目前最大的問題是內(nèi)存開銷太大,直接導(dǎo)致連EXE文件都無法生成,所以首先解決的是內(nèi)存分配問題。注意10000階矩陣非常大。如果是雙精度浮點(diǎn)類型,則每個(gè)矩陣將使用800m內(nèi)存,其他類型將自行轉(zhuǎn)換。因此,無論你有多少份拷貝,你必須小心不要有太多的拷貝,首先要考慮你能保存多少內(nèi)存。由于靜態(tài)存儲(chǔ)空間的開銷通常在可執(zhí)行文件中有一個(gè)相同大小的副本,因此可以通過將矩陣的存儲(chǔ)空間改為動(dòng)態(tài)分配來解決連接問題。此外,還有兩個(gè)問題。一是是否有必要使用稠密矩陣。我認(rèn)為這是沒有必要的,除了非常特殊的問題。我們應(yīng)該用稀疏矩陣來解決這個(gè)問題。另一個(gè)是如果你必須使用稠密矩陣,你會(huì)實(shí)現(xiàn)高速乘法嗎?如果只使用最常見的三環(huán),無論打開什么編譯優(yōu)化選項(xiàng),都會(huì)花費(fèi)很長時(shí)間(VC6優(yōu)化太弱)。即使是Strassen算法也非常慢。你應(yīng)該給布拉斯圖書館打電話。否則,雖然沒有上面說的那么夸張,但幾分鐘就可以算出,你數(shù)習(xí)幾個(gè)小時(shí)是正常的。
矩陣相乘的算法的時(shí)間復(fù)雜度到底怎么一回事?一點(diǎn)都不懂?
矩陣乘法的時(shí)間復(fù)雜度:假設(shè)矩陣A是n*m,矩陣B是m*P,矩陣A和B相乘得到矩陣C是n*P
矩陣C中有n*P個(gè)元素,計(jì)算每個(gè)元素需要m次乘法
所以總的時(shí)間復(fù)雜度是m*n*P
這是最好的理解