算法策略的總結(jié)


策略是面向問(wèn)題的,算法是面向?qū)崿F(xiàn)的。


一、不同算法策略特點(diǎn)小結(jié)

1、貪心策略

??? 貪心策略一方面是求解過(guò)程比較簡(jiǎn)單的算法,另一方面它又是對(duì)能適用問(wèn)題的條件要求最嚴(yán)格(即適用范圍很?。┑乃惴ā?/p>

??? 貪心策略解決問(wèn)題是按一定順序,在只考慮當(dāng)前局部信息的情況下,就做出一定的決策,最終得出問(wèn)題的解。

即:通過(guò)局部最優(yōu)決策能得到全局最優(yōu)決策

2、遞推策略

?? 遞推也是由當(dāng)前問(wèn)題的逐步解決從而得到整個(gè)問(wèn)題的解,依賴于信息間本身的遞推關(guān)系,每一步不需要決策參與到算法中,更多用于計(jì)算

3、遞歸策略

?? 遞歸常常用于分治算法、動(dòng)態(tài)規(guī)劃算法中。

?? 遞歸是利用大問(wèn)題與其子問(wèn)題間的遞推關(guān)系來(lái)解決問(wèn)題的。

?? 能采用遞歸策略的算法一般有以下特征:

?? (1)為求解規(guī)模為N的問(wèn)題,設(shè)法將它分解成規(guī)模較小的問(wèn)題,然后從這些小問(wèn)題的解方便地構(gòu)造出大問(wèn)題的解

?? (2)并且這些規(guī)模較小的問(wèn)題也能采用同樣的分解和綜合方法,分解成更小的問(wèn)題,并從這些更小的問(wèn)題的解構(gòu)造出規(guī)模較大問(wèn)題的解

?? (3)特別的,當(dāng)規(guī)模N = 1時(shí),能直接得解

4、枚舉策略

??? 對(duì)問(wèn)題所有的解逐一嘗試,從而找出問(wèn)題的真正解。一般用于決策類問(wèn)題,很難找到大、小規(guī)模之間的關(guān)系,也不易對(duì)問(wèn)題進(jìn)行分解。

5、遞歸回溯策略

??? 類似于枚舉,通過(guò)嘗試遍歷問(wèn)題各個(gè)可能解的通路,當(dāng)發(fā)現(xiàn)此路不通時(shí),回溯到上一步繼續(xù)嘗試別的通路。

6、分治策略

?? 分治一般用于較復(fù)雜的問(wèn)題,必須可以逐步被分解為容易解決的獨(dú)立的子問(wèn)題,這些子問(wèn)題解決后,進(jìn)而將它們的解“合成”,就得到較大問(wèn)題的解,最終合成為總問(wèn)題的解。

7、動(dòng)態(tài)規(guī)劃策略

??? 與貪心類似,也是通過(guò)多階段決策過(guò)程來(lái)解決問(wèn)題。每個(gè)階段決策的結(jié)果是一個(gè)決策結(jié)果序列,這個(gè)結(jié)果序列中,最終哪一個(gè)是最優(yōu)的結(jié)果,取決于以后每個(gè)階段的決策,當(dāng)然每次決策結(jié)果序列都必須進(jìn)行存儲(chǔ)。因此是“高效率,高消費(fèi)的算法”。

???? 同時(shí),它又與遞歸法類似,當(dāng)問(wèn)題不能分解為獨(dú)立的階段,卻又符合最優(yōu)化原理時(shí),就可以使用動(dòng)態(tài)規(guī)劃法,通過(guò)遞歸決策過(guò)程,逐步找出子問(wèn)題的最優(yōu)解,從而決策出問(wèn)題的解。


二、算法策略間的關(guān)系

1、對(duì)問(wèn)題進(jìn)行分解的算法策略——分治法與動(dòng)態(tài)規(guī)劃法

?? 共同點(diǎn):(1)分治法與動(dòng)態(tài)規(guī)劃法實(shí)際上都是遞歸思想的運(yùn)用

???????????? (2)二者的根本策略都是對(duì)問(wèn)題進(jìn)行分解,找到大規(guī)模與小規(guī)模的關(guān)系,然后通過(guò)解小規(guī)模的解,得出大規(guī)模的解

?? 不同點(diǎn): 適用于分治法的問(wèn)題分解成子問(wèn)題后,各子問(wèn)題間無(wú)公共子子問(wèn)題,而動(dòng)態(tài)規(guī)劃法相反。

????????????? 動(dòng)態(tài)規(guī)劃法 = 分治算法思想 + 解決子問(wèn)題間的冗余情況

2、多階段逐步解決問(wèn)題的策略——貪心算法、遞推法、遞歸法和動(dòng)態(tài)規(guī)劃法

???? 貪心算法:每一步都根據(jù)策略得到一個(gè)結(jié)果,并傳遞到下一步,自頂向下,一步一步地做出貪心決策。

???? 動(dòng)態(tài)規(guī)劃算法:每一步?jīng)Q策得到的不是一個(gè)唯一結(jié)果,而是一組中間結(jié)果(且這些結(jié)果在以后各步可能得到多次引用),只是每一步都使問(wèn)題的規(guī)模逐步縮小,最終得到問(wèn)題的一個(gè)結(jié)果。

???? 遞推、遞歸法:注重每一步之間的關(guān)系,決策的因素較少。遞推法是根據(jù)關(guān)系從前向后推導(dǎo),從小規(guī)模問(wèn)題的結(jié)論推解出大問(wèn)題的解。而遞歸法是根據(jù)關(guān)系從后向前使大問(wèn)題轉(zhuǎn)化為小問(wèn)題,最后同樣由小規(guī)模問(wèn)題的解推解出大問(wèn)題的解。

3、全面逐一嘗試、比較——蠻力法、枚舉法、遞歸回溯法

???? 蠻力策略(即枚舉和遞歸回溯):

???? 當(dāng)問(wèn)題找不到信息間的相互關(guān)系、也不能將問(wèn)題分解為獨(dú)立的子問(wèn)題,就只有把全部解都列出來(lái)之后,才能判定和推斷出問(wèn)題的解。

???? 蠻力策略適用于規(guī)模不大的問(wèn)題。

???? (1)枚舉法:實(shí)現(xiàn)依賴于循環(huán)。所以一個(gè)枚舉法只針對(duì)一個(gè)特定問(wèn)題規(guī)模的情況,例如:八重循環(huán)嵌套解八皇后問(wèn)題的算法。

???? (2)遞歸回溯法:適用于任意指定規(guī)模的情況,例如:遞歸回溯法解N皇后問(wèn)題。

4、算法策略的中心思想

?? 用算法策略將解決問(wèn)題的過(guò)程歸結(jié)為:用算法的基本工具“循環(huán)機(jī)制和遞歸機(jī)制”實(shí)現(xiàn)。


三、算法策略側(cè)重的問(wèn)題類型

??? 一般常遇到的問(wèn)題分為四類:

??? (1)判定性問(wèn)題:可用遞推法、遞歸法

??? (2)計(jì)算問(wèn)題:可用遞推法、遞歸法

??? (3)最優(yōu)化問(wèn)題:貪心算法、分治法、動(dòng)態(tài)規(guī)劃法、枚舉法

??? (4)構(gòu)造性問(wèn)題:貪心算法、分治法、廣度優(yōu)先搜索、深度優(yōu)先搜索

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 分治算法 一、基本概念 在計(jì)算機(jī)科學(xué)中,分治法是一種很重要的算法。字面上的解釋是“分而治之”,就是把一個(gè)復(fù)雜的問(wèn)題...
    木葉秋聲閱讀 5,388評(píng)論 0 3
  • 五大常用算法之一:分治算法 基本概念: 把一個(gè)復(fù)雜的問(wèn)題分成兩個(gè)或更多的相同的或相似的子問(wèn)題。再把子問(wèn)題分成更小的...
    親愛(ài)的破小孩閱讀 5,116評(píng)論 0 1
  • 五大常用算法之一:分治算法 一、基本概念 在計(jì)算機(jī)科學(xué)中,分治法是一種很重要的算法。字面上的解釋是“分而治之”,就...
    鮑陳飛閱讀 1,293評(píng)論 0 4
  • 每當(dāng)下午工作不多的時(shí)候,我會(huì)偷偷跑回家,不是為了偷懶,是覺(jué)得家里的工作環(huán)境要比單位好,煮杯咖啡或泡壺茶,愜意的在家...
    鮮兒格閱讀 249評(píng)論 0 0

友情鏈接更多精彩內(nèi)容