演算法第三章作業

2022-07-12 04:54:07 字數 680 閱讀 7328

1.1 根據最優子結構性質,列出遞迴方程式。

設a1,a2,…,ai是給出的序列,len[i]為a1-ai的最長單調遞增子串行的長度, len[1]=1,len[i]=max,k1.2 給出填表法中表的維度、填表範圍和填表順序。

表是一維的,len[n],  知道了底才能知道向上的怎麼填,所以應該自左而右填表。

1.3 分析該演算法的時間和空間複雜度

時間複雜度:每乙個len[i]遍歷一次陣列, o(n^2)

空間複雜度:一維陣列 o(n)

動態規劃的整體思想和分治法類似,也是將乙個複雜問題分解成乙個個簡單的子問題來解決。動態規劃的兩個特點是1.滿足最優子結構性質 2.很多計算是具有重複性的。

通常動態規劃的解題步驟是 1.找出最優解的性質,分析其結構特徵 2.遞迴定義最優解,列出遞迴方程式 3.計算最優解 構造最優解

在求最優解的時候,我們一般會用自頂向下直接遞迴,自底向上的填表方式,還有自頂向下的遞迴+備忘錄的方式。

這段時間的結對程式設計有進步了,我們在實驗課上的程式設計題也可以自己打出來了。就像最低通行費那道題目,我們一開始為了填表順序,究竟是自頂向下還是自底向上討論了很久,最後帶入了乙個具體例子分析才確定了填表方向。後來又發現了別的特殊情況,可以單獨列出來求解。所以遞迴方程式一定要寫正確,考慮到各種情況,特殊情況,否則打**的時候會亂。我們結對程式設計現在默契了不少,結對程式設計還是有給我們兩個人帶來收穫的。

演算法第三章作業

1.動態規劃是一種能夠減少重複運算的一種演算法,比較適合原問題能依賴於子問題解得,而子問題也能夠依賴於子子問題解得而出的問題。其次,動態規劃更適合於資料量較多的時候的一種演算法,當資料量沒有到達一定規模的時候,動態規劃演算法不能夠體現出足夠的優勢。如對於揹包問題的貪心演算法和動態規劃法 2.1 單調...

演算法第三章作業

我覺得動態規劃是一種分治法的偽高階型,它將乙個大問題可以分成若干個小問題後,解決子問題,然後將子問題的解插入到乙個表中,用乙個表來記錄所有的已經得到答案的子問題的解,後面就可以發現,無論子問題的解是否被用到,其都在表中,接著求問題便可以節省大量的時間。3 1m i 1 n 1 m i max 1 1...

演算法第三章作業

組員 高珞洋,何汶珊 之前在學習分治法的時候也有將其和動態規劃進行比較,動態規劃能夠解題的根本要求是原問題可以細分成子問題,且原問題的最優解必包含子問題的最優解。為了更明確上述條件,從而保證題目能夠運用動態規劃求解,通常需要兩步操作 明確問題具有最優子結構,並分解問題 找出遞推關係式 狀態轉移方程 ...