演算法第三章作業

2022-07-12 04:45:16 字數 722 閱讀 7164

1. 任選作業題」單調遞增最長子序列「、」挖地雷「、」編輯距離問題「中的一題分析。

單調遞增最長子序列

設計乙個o(n2)時間的演算法,找出由n個數組成的序列的最長單調遞增子串行。

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

m[i] = max 其中1<=ja[j],

m[i] 表示以第i個數為結尾的最大單調遞增子串行,a[i] 表示第i個數字。

1.2 給出填表法中表的維度、填表範圍和填表順序。

表的維度:一維。

填表範圍:即 i 的取值範圍是 0 到 n。

填表順序:由於m[i] 取決於 m[j] 的值, i 與 j 的關係為 1<=j1.3 分析該演算法的時間和空間複雜度

時間複雜度:i 的取值是從n到1,而 j 的取值是從 (i-1) 到0,因此時間複雜度為o(n²) 。

空間複雜度:由於用到的是一維陣列,因此空間複雜度為o(n²)。

2. 你對動態規劃演算法的理解

動態規劃,其中「拆分子問題,分析最優子結構,列出遞迴方程式」是最關鍵的。接下來根據遞迴方程式就可以分析出填表法中表的維度、填表範圍和填表順序等。另外,表的邊界也需要特別考慮,邊界可能要附上初始值。

3. 說明結對程式設計情況

互幫互助。

演算法第三章作業

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

演算法第三章作業

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

演算法第三章作業

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