基礎演算法小結

2021-06-27 08:30:21 字數 2325 閱讀 8914

分治法

設計思想:掃瞄技術,即採用一定的策略將待求解問題的所有元素依次處理一次,從而找出問題的解;

關鍵——依次處理所有元素。

典型問題應用:

1、查詢問題

順序查詢,o(n)

串匹配(bfo(n*m),kmpo(n+m), bmo(n*m)

2、排序問題

選擇排序,o(n2)

氣泡排序,o(n2)

3、組合問題

生成排列物件 ,o(n!)

生成子集 ,o(2n)

0/1揹包  

任務分配

4、圖問題

哈密頓迴路,tsp問題  

5、幾何問題

最近對問題o(n2),凸包問題o(n3)

分治法

設計思想:將要求解的原問題劃分成k個較小規模的子問題,對這k個子問題分別求解。如果子問題的規模仍然不夠小,則再將每個子問題劃分為k個規模更小的子問題,如此分解下去,直到問題規模足夠小,很容易求出其解為止,再將子問題的解合併為乙個更大規模的問題的解,自底向上逐步求出原問題的解。

步驟:(1)劃分(2)求解子問題(3)合併

典型問題應用:

歸併排序,快速排序,最大子段和,最近對問題,凸包問題,這五種問題的分治演算法的時間複雜度為o(nlog2n)

棋盤覆蓋,迴圈賽日程安排為o(4k)

典型問題應用:

折半查詢,二叉樹查詢,堆排序,選擇問題,淘汰賽冠軍問題,假幣問題;

以上問題的時間複雜度,如果減治是每次減小為原來規模的1/2,則時間複雜度一般為o(log2n)

將待求解問題分解成若干個相互重疊的子問題,每個子問題對應決策過程的乙個階段,將子問題的解求解一次並填入表中,當需要再次求解此子問題時,可以通過查表獲得該子問題的解而不用再次求解。

步驟:將原始問題分解為相互重疊的子問題,確定動態規劃函式;

求解子問題,填表;

根據表,自底向上計算出原問題的解。

典型問題應用:

tsp,多段圖的最短路徑問題,0/1揹包,最長公共子串行問題,最優二叉查詢樹,近似串匹配問題;

多段圖的最短路徑問題: o(n+m)

0/1揹包問題: o(n×c)

貪心法在解決問題的策略上目光短淺,只根據當前已有的資訊就做出區域性最優選擇,而且一旦做出了選擇,不管將來有什麼結果,這個選擇都不會改變。

貪心法的關鍵在於決定貪心策略。

典型問題應用:

最小生成樹問題的兩種演算法:最近頂點策略(prim演算法),最短邊策略(kruskal演算法)

揹包問題,活動安排問題,多機排程問題,哈夫曼編碼。

步驟:確定解向量和分量的取值範圍,構造解空間樹;

確定剪枝函式;

對解空間樹按深度優先搜尋,搜尋過程中剪枝;

從所有的可能解中確定最優解。

典型問題應用:

屬於組合問題和排列問題中求最優解的問題都可以用回溯法解決,例如:圖著色問題,哈密頓迴路問題,八皇后問題(4皇后問題),批處理作業排程問題。

1)首先確定乙個合理的限界函式,並根據限界函式確定目標函式的界[down,up] ,並確定限界函式;

2)然後按照廣度優先策略遍歷問題的解空間樹,在分支結點上,依次搜尋該結點的所有孩子結點,分別估算這些孩子結點的限界函式的可能取值;

3)如果某孩子結點的限界函式可能取得的值超出目標函式的界,則將其丟棄;否則,將其加入待處理結點表(以下簡稱表pt)中;

4)依次從表pt中選取使限界函式的值是極值的結點成為當前擴充套件結點;

5)重複上述過程,直到找到搜尋到葉子結點,如果葉子結點的限界函式的值是極值,則就是問題的最優解,否則,找到其他極值結點重複擴充套件搜尋。

步驟:確定解空間樹

確定限界函式

按廣度優先搜尋解空間樹,計算限界函式的值,填入pt表

從pt表中尋找極值,繼續擴充套件結點,直到找到限界函式值為極值的葉子結點。

典型問題應用:

tsp問題,多段圖的最短路徑問題,任務分配問題,批處理作業排程問題,0/1揹包問題。

掌握任務分配問題的分支限界法(p195-197),習題9-5

掌握0/1揹包問題的分支限界法(p184-185),習題9-6

掌握批處理作業問題的分支限界法(p198-200),習題9-7

XML基礎小結

1 xml代表擴充套件的標記語言 extensible markup language 2 xml由w3c聯盟發展維護 3 xml是一種元語言,可以用來定義其它語言 4 xml沒有定義任何標記,它提供了一種工具定義標記以及它們之間的結構關係 5 xml是一種用於結構化文字交換的標記語言 6 xml代...

dp基礎小結

kuangbin帶你飛系列,基礎dp 總共20多道題,就不一一說了 說一下學會的關鍵的思路 第1點 有的時候某一狀態的值的得出,可能會要我們列舉已經計算過的值,一一比較取最值,但如果真的去列舉的話就會超時,這時我們可以把狀態的含義設為前i項的最值,計算的時候只需要多比較一項,即和前一項比較一下就可以...

Html Css 基礎小結

html css基本部分個人小結 table table border cellspacing cellpadding bgcolor caption caption 最頂部 thead th th thead 頭部 tfoot td td tfoot table 可以套 列表可以套列表 乙個是在t...