計算機演算法設計與分析解題心得

2021-09-27 06:10:19 字數 1063 閱讀 5301

先觀察問題的結構、解的形式,再設計演算法;

能分解成子問題,是非常有效的資訊;

優化問題時,下界很重要。

給乙個問題,從最簡單的case入手;

觀察input的關鍵結構,看能否分、能否combine;

觀察output,不要堅持追求optimal,追求sub-optimal。

sample.

手動執行最基本的演算法,發現冗餘;

merge時,考慮引入結構;

離散化。

省記憶體:分問題的另一種思路

optimal→sub-optimal

???

子問題的描述方式:

揹包-子集:指數多-前i個:多項式。

最短路徑-子圖:指數多-引入新變數表示解:k步。

遞迴中有at most如何表示?加乙個遞迴項

dp需要空間太多→用nn表示函式

每乙個greedy的背後都有乙個more cumbersome dp

weight加強後,有可能不用列舉

先做乙個笨方法,再發現冗餘

loose the structure but don』t loost it too much

分析時:乙個操作慢,但隨後操作快,均攤

求和:每一項轉乘phi的差,相約

要允許剪枝,但不要剪太多→不要偏離完美的樹太遠

抽象,就能推廣

寫lp時,先寫自然語言,再轉成不等式約束

不要只用不等式約束,再加上目標函式約束、

lagrange乘子就是對偶變數

千方百計構造乙個對手出來

構造對手:

3. y 直接構造 x

4. 找乙個隱含變數b,同時構造x和y

目標:

x_i \sigma_i = 0
relaxed!

x_i \sigma_i = \mu
optimal → sub-optimal

scaling

分析乙個event的發生次數:找乙個量\phi,考察連續兩次event中間發生了什麼

花了很多時間,把opt的所有油水全榨幹

計算機演算法設計與分析 棋盤覆蓋問題

一 實驗目的與要求 1 掌握棋盤覆蓋問題的演算法 2 初步掌握分治演算法 二 實驗題 盤覆蓋問題 在乙個2k 2k 個方格組成的棋盤中,恰有乙個方格與其它方格不同,稱該方格為一特殊方格,且稱該棋盤為一特殊棋盤。在棋盤覆蓋問題中,要用圖示的4種不同形態的l型骨牌覆蓋給定的特殊棋盤上除特殊方格以外的所有...

計算機演算法設計與分析 租用遊艇問題

長江俱樂部在長江設定了n個遊艇出租站1,2,n,遊客可在這些遊艇出租站租用遊艇,並在下游的任何乙個遊艇出租站歸還遊艇。遊艇出租站i到遊艇出租站j之間的租金為r i,j 設計乙個演算法,計算出從出租站1到出租站n所需要的最少租金。測試用例 3 站數 5 15 第一站到其他相應各站的租金 7 第二站到其...

計算機演算法設計與分析 工作安排問題

問題描述 設有n件工作分配給n個人,將工作i分配給第j個人所需的費用為cij。試設計乙個演算法,為每個人都分配一件不同的工作,並使得總費用達到最小。輸入 第1行有1個正整數n 1 n 20 接下來的n行,每行n個數,表示工作費用。輸出 計算的最小總費用 樣例輸入 310 2 3 2 3 4 3 4 ...