下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、矩陣乘法的順序安排問題python現(xiàn)矩陣乘法的順序安排問題問題背景設(shè)矩陣、大小分別,則矩陣乘積需要做的標(biāo)量乘法次數(shù)為。我們知道矩陣的乘法運算是不可交換的,但它是可結(jié)合的。因此對于多個矩陣的連乘,我們可以以任意順序添加括號改變其中相鄰矩陣乘法的優(yōu)先級。不同計算順序下總的標(biāo)量乘法運算次數(shù)是不同的,我們的目標(biāo)是找到一個最優(yōu)的矩陣乘法計算順序。給定矩陣乘法序列.將乘法序列以第個矩陣分為前后兩部分,則方案數(shù)為前后兩部分方案數(shù)之積。因此乘法計算的順序個數(shù)為n丄n的解為t數(shù),這里不加證明給出結(jié)果為n2nn+2nT(n)=Cn2n由此可見的矩陣乘法順序個數(shù)為問題規(guī)模n的指數(shù)級,顯然通過枚舉找到最優(yōu)的乘法順序是
2、不合適的。暴力算法首先還是試探一下如何用最樸素的方式解決。設(shè)表示第個矩陣到第個矩陣的最少乘法運算次數(shù),用數(shù)學(xué)化的語言表達我們的目標(biāo),即minM1n,=iM1i,+Mi+1n其中、為最后兩個矩陣的大小。代碼很容易實現(xiàn):defminMatrixMultiplication(Mats):類型的tt1矩陣乘法的最小乘法次數(shù),及對應(yīng)的括號位置nttn%(Mats0.n,Mats0.motthnotthnt記錄添加的括號位置onnen(Mats)-1)tottminMatrixMultiplication(Matshtotht=minMatrixMultiplication(MatottotrightCo
3、st+Mats0.n*MattotnotnottotteftSeq+ightSeqreturnminCost,bestS測試用的矩陣類型定義如下:classMat:def_init_(self,mat=None):ifmatandisinstance(mat0,list):ttnnself.m=0def_init_(self,n,m):self.mat=self.n=nself.m=m以上算法的函數(shù)調(diào)用次數(shù)f(n)=1+f(i)+f(n-1)+f(2)+f(n-2)+.+f(n-1)+f(1),容易驗證得到f(n)=3n,即該算法的復(fù)雜度為0(3%這是不可接受的。記憶化分析一番可以發(fā)現(xiàn),對于矩
4、陣序列ij之間乘法的最優(yōu)結(jié)果Mjj只有C2種,那么上述代碼的中間很多段都進行了重復(fù)計算。如果把中間得到的答案記錄下來,可以大大減少計算量。在不改變上述算法的框架下,將ij之間的結(jié)果Mij定義Python嵌套的內(nèi)部函數(shù)。新增了變量jnvokeCnt統(tǒng)計遞歸函數(shù)需要重新計算M.j的次i,ji,j數(shù)。defmjnMatrjxMultjpljcatjon2(Mats):sjz=len(Mats)+1#血的教訓(xùn):不要使用下面的方法定義二維數(shù)組mjnCostMem=-1*sjz*sjzbestSeqMem=*sjz*sjzmjnCostMem=-1*sjzforjjnrange(sjz)bestSeqMe
5、m=*sjzforjjnrange(sjz)jnvokeCnt=0#統(tǒng)計遞歸函數(shù)重新執(zhí)行次數(shù)defhelper(s,t):jfs=t:return0,%d,%d%(Matss.n,Matss.m)jfmjnCostMemst!=-1:returnmjnCostMemst,bestSeqMemstnonlocaljnvokeCntjnvokeCnt+=1jmportmathmjnCost=math.jnfbestSeq=forjjnrange(s,t):leftCost,leftSeq=helper(s,j)rjghtCost,rjghtSeq=helper(j+1,t)tmpCost=left
6、Cost+rjghtCost+Matss.n*Matsj.m*Matst.mjftmpCostmjnCost:mjnCost=tmpCostbestSeq=(+leftSeq+*+rjghtSeq+)mjnCostMemst=mjnCostbestSeqMemst=bestSeqreturnmjnCost,bestSeqreturnhelper(0,len(Mats)-1),jnvokeCnt動態(tài)規(guī)劃(待補充。運行對比Mats=Mat(2,3),Mat(3,5),Mat(5,8),Mat(8,2),Mat(2,3),Mat(3,2),Mat(2,5),Mat(5,3)prjnt(mjnMatrjxMultjpljcatjon(Mats)(184,(2,3*(3,5*(5,8*8,2)*(2,3*3,2)*(2,5*5,3)#調(diào)用次數(shù)3A8=2187prjnt(mjnMatrjxMultjpljcatjon2(Mats)(184,(2,3*(3,5*(5,8*8,2)*(2,3*3,2)*(2,5*5,3),28)注意事項Python定義二維矩陣,千萬不要使用注釋寫法。調(diào)試了很久才發(fā)現(xiàn)問題。TT正確的寫法為matrix=0*mforiinrange(n)或使用numpy庫importnumpymatrix=numpy.zeros(n,m)原因可以簡單理解為n=5m=3matrix=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 部編初中歷史八下第1課中華人民共和國成立教案
- 2025年全球及中國大型不銹鋼鑄件行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球化妝品級枯草菌脂肽鈉行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球光纖導(dǎo)管靜脈激光治療行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國銅纜高速連接器行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025國際(非獨占)商標(biāo)使用許可合同
- 2025農(nóng)業(yè)種植生產(chǎn)產(chǎn)銷合同書
- 餐飲業(yè)合同年
- 2025室內(nèi)裝修設(shè)計合同范本
- 房屋租賃續(xù)簽合同模板
- 2025年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- 醫(yī)保政策與健康管理培訓(xùn)計劃
- 策略與博弈杜塔中文版
- 無人化農(nóng)場項目可行性研究報告
- 2024屆上海市金山區(qū)高三下學(xué)期二模英語試題(原卷版)
- 學(xué)生春節(jié)安全教育
- 2024-2025年校長在教研組長和備課組長會議上講話
- 2025屆江蘇省常州市高級中學(xué)高三第二次模擬考試語文試卷含解析
- 高三日語一輪復(fù)習(xí)助詞「で」的用法課件
- 2024-2030年中國銣銫及其化合物行業(yè)深度調(diào)研及投資戰(zhàn)略分析報告
- 散貨物流行業(yè)市場調(diào)研分析報告
評論
0/150
提交評論