演算法導論第15章練習題 15 4 4

2021-08-03 09:11:40 字數 1252 閱讀 4047

說明如何僅用表c中的

2·min(m,n)

項以及o(1)

的額外空間來計算乙個

lcs的長度。然後說明如何用

min(m,n)

項以及o(1)

的額外空間來做到這一點。

1、兩行陣列,第乙個儲存上一行的

c[i,

j],第二個儲存當前行的

c[i,

j]。最開始第一行陣列初始化為

0. c

表最左側一列 全為

0,不需要用儲存空間,當做已知條件就好。

2、只用一行陣列

+1的儲存空間。

a[0.....n] 。

利用a[0]儲存同一行的前乙個即

c[i,j-1]。

最開始陣列a初始化為全0.

計算完一行之後,a[0] 置

0,代表

c表最左側一列。此時,計算

c[i,j]

,例如,先計算

c[2,1]

,只用到

3個資料,

c[1,1](

同列上乙個

,a[1]

中就存著該值

), c[1,0](

左上,此刻左上為

c表左側第一列,為

0), c[2,0](

同行左乙個,此刻

a[0]

中存著該值

)。由此

c[2,1]

可以計算得到

,用求得的

c[2,1]

更新a[0]

。但不要更新

a[1]  (

除a[0],a[j]

中存著c[i,j]) 。

此刻需要計算 c[2,2] , ,還是用到

3個資料,

c[1,2](

同列上乙個

,a[2]

中就存著該值

), c[1,1](

左上,此刻左上不再為

c表左側第一列,而是同列上一行的左側乙個,那麼由於剛才並沒有更新

a[1] ,

所以a[1]

中存著上一行的

c[1,1]), c[2,1](

同行左乙個,此刻

a[0]

中存著該值

)。由此

c[2,1]

可以計算得到。

依次類推,求得本行最後乙個資料時,直接賦值給c[本行最後乙個

],然後

a[0]置0

,計算下一行。

演算法導論 練習題 3 2 4

首先證明f n 多項式有界的充分必要條件是lgf n o lgn 1 若存在常數c和n0,當n n0時,f n 則lg f n 根據上式容易證明,lg f n o lgn 2 若lg fn o lgn 則存在常數c和n0,當n n0,lg f n 所以f n 根據上面證明出來的公式,來證明兩個小題。...

演算法導論 練習題 7 4 5

快速排序遞迴樹到每個葉子為k個元素就結束了,所以高度h lg n k 每層代價cn,所以快速排序時間上限o nlgn 快速排序結束後,陣列變成 k個元素,a1,k個元素,a2.的形式 即每k個元素之後,都有乙個已經在正確位置上的元素,這些元素為a1,a2,其中ai之前的k個元素小於ai,ai之後的k...

演算法導論 第15章

動態規劃,就是一種求解最優解問題的。這麼說,估計大家也覺得太空泛了。想看詳細的說明,請點這裡 那麼我就講我的理解了。首先,演算法是一種策略,方法,思想,其中,有一種非常常見的常用思想 動態思想。你要做一件事情,然後,到最後完成。而你沒做一件事情都影響後面,而且你每次有很多的選擇 那麼如何每次遇到岔路...