演算法分析與設計作業8

2021-10-05 07:39:37 字數 1174 閱讀 4371

1.問題

給定一定個矩陣序列,求出該矩陣序列的乘積所需計算的最少乘法次數。

2.解析

運用動態規劃的思想,將矩陣依次分割並記錄所需乘法次數,找出其中最小的被下一級使用。

例:矩陣序列:a1: 30 * 35

a2: 35 * 15

a3: 15 * 5

a4: 5 * 10

a5: 10 * 20

a6: 20 * 25

步驟:r=1(r表示一次計算r個矩陣) (由於矩陣自身做不了乘法,所以次數都是0)

arr[1][1]=0, arr[2][2]=0, arr[3][3]=0,

arr[4][4]=0, arr[5][5]=0, arr[6][6]=0

r=2arr[1][2]=30 * 35 * 15, arr[2][3]=35 * 15 * 5, arr[3][4]=15 * 5 * 10,

arr[4][5]=5 * 10 * 20, arr[5][6]=10 * 20 * 25

r=3arr[1][3]=min

arr[2][4]= min

arr[3][5]= min

arr[4][6]= min

r=4一次類推使用前一次計算出的結果,一次推出,直至r=6(即r等於矩陣個數)

3.設計

for r=

2 to n do

//r為當前問題規模(長度)

for i=

1 to n-r+1do

//i的起點不斷變化,各種r長

j=i+r-

1//不同終點

arr[i]

[j]= arr[i+1]

[j]+ pi*pk*pj //劃分為4(4.4)

s[i,j]

=i for k=i+

1 to j-1do

//不同的劃分位置

t= arr[i]

[k]+ arr[k+1]

[j]+pi*pk*pj

if t[j] then arr[j]

=t s[i]

[j]=k

4.分析

時間複雜度:o(n^3) (有三重迴圈)

演算法設計與分析作業(1)

1.dijkstra求單源最短路徑 先進行存圖操作,將帶權有向圖用鄰接矩陣來表示 for int i 0 i u v dist map u v dist 用dis陣列來儲存0點到其他每乙個點的最短距離,初始時dis i map 0 i 接下來進行鬆弛操作,找出最短距離 首先0點為q集合中的點,0 1...

演算法分析與設計 作業1

問題 舉乙個例項,畫出採用prim演算法構造最小生成樹的過程 1 首先選定頂點1加入最小生成樹集合 2 以頂點1作為最小生成樹集合,尋找到其餘頂點構成的未選集合中權值最小的一條邊,此處尋找到頂點2,並將頂點2加入集合。3 以頂點2 3作為最小生成樹集合,尋找至其餘頂點構成集合權值最小的邊,此處找到頂...

演算法分析與設計作業9

1.問題 最長公共子串行問題 給定序列x 和y 求x和y的最長公共序列。2.解析 對於字串 aceghi 和 bcdefgh lcs二維 3.設計 def lcs x,y m len x 1 n len y 1 if m 1 or n 1 print 存在空字串!return 1 lcs len n...