先觀察問題的結構、解的形式,再設計演算法;
能分解成子問題,是非常有效的資訊;
優化問題時,下界很重要。
給乙個問題,從最簡單的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 ...