演算法分析與設計作業9

2021-10-05 14:10:11 字數 1337 閱讀 7333

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 = numpy.

zeros

((m,n)

)for i in range(1

, m)

:for j in range(1

, n):if

(x[i -1]

== y[j -1]

):lcs_len[i]

[j]= lcs_len[i -1]

[j -1]

+1else

: max_len = lcs_len[i -1]

[j]if lcs_len[i]

[j -1]

> lcs_len[i -1]

[j]:

max_len = lcs_len[i]

[j -1]

lcs_len[i]

[j]= max_len

i = m -

2 j = n -

2 ns =

''while1:

if i ==

-1 or j ==-1

:break

if x[i]

== y[j]

: ns= x[i]

+ns i = i -

1 j = j -

1else

:if lcs_len[i]

[j +1]

> lcs_len[i +1]

[j]:

i = i -

1else

: j = j -

1print

(ns)

4.分析時間複雜度:o(n * m) //n和m為兩條字串的長度

演算法設計與分析作業(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作為最小生成樹集合,尋找至其餘頂點構成集合權值最小的邊,此處找到頂...

演算法分析與設計作業8

1.問題 給定一定個矩陣序列,求出該矩陣序列的乘積所需計算的最少乘法次數。2.解析 運用動態規劃的思想,將矩陣依次分割並記錄所需乘法次數,找出其中最小的被下一級使用。例 矩陣序列 a1 30 35 a2 35 15 a3 15 5 a4 5 10 a5 10 20 a6 20 25 步驟 r 1 r...