五大基本算法——分支限界法

一茬缩、基本思路

與回溯法一樣,分支限界法也是在問題的解空間樹上搜索問題的解的一種算法吼旧。

二凰锡、分支限界法與回溯法的區(qū)別

兩者很類似,很容易混淆,但有如下顯著的區(qū)別可區(qū)分兩者:

1掂为、求解目標(biāo)不同

回溯法的求解目標(biāo)一般是找出解空間樹中滿足條件的所有解裕膀。

分支限界法則是盡快找出滿足約束條件的一個(gè)解,或是在滿足約束條件的解中找出在某種意義下的最優(yōu)解勇哗。

2昼扛、搜索方式不同

回溯法——>深度優(yōu)先 遍歷結(jié)點(diǎn)搜索解空間樹。

分支限界法——>廣度優(yōu)先或最小耗費(fèi)優(yōu)先搜索解空間樹智绸。

3野揪、存儲(chǔ)空間不同

分支限界法由于加入了活結(jié)點(diǎn)表,所以存儲(chǔ)空間比回溯法大得多瞧栗。因此當(dāng)內(nèi)存容量有限時(shí)斯稳,回溯法的成功率要大一些。

4迹恐、擴(kuò)展結(jié)點(diǎn)的方式不同

分支限界法中挣惰,每個(gè)活結(jié)點(diǎn)只有一次機(jī)會(huì)變成擴(kuò)展結(jié)點(diǎn),一旦成為擴(kuò)展結(jié)點(diǎn)便一次性生成其所有子結(jié)點(diǎn)殴边。

區(qū)別小結(jié):回溯法空間效率更高憎茂,分支限界法由于只需要求到一個(gè)解,所以往往更“快”锤岸。

就拿0/1背包問題做例子竖幔,回溯法求解0/1背包問題實(shí)際上是盲目地搜索解空間樹,回溯法只會(huì)不斷地往下走是偷,雖然通過剪枝函數(shù)能減少一定的計(jì)算拳氢,但是當(dāng)經(jīng)過一個(gè)結(jié)點(diǎn)時(shí),并不知曉其子結(jié)點(diǎn)會(huì)是怎樣的情況蛋铆,從而盲目繼續(xù)搜索馋评。而分支限界法則不一樣,在經(jīng)過某一結(jié)點(diǎn)時(shí)刺啦,會(huì)根據(jù)限界條件判斷其結(jié)點(diǎn)之下的情況是否能夠?qū)С鲎顑?yōu)解留特,如若不能,直接不走這條路玛瘸。這樣雖然在空間上不占優(yōu)勢(shì)蜕青,但是搜索并不盲目,速度上快了很多糊渊。

三市咆、求解步驟

1、定義解空間(對(duì)解編碼)

2再来、確定解空間樹結(jié)構(gòu)(得解空間樹)

3蒙兰、按BFS廣度優(yōu)先方式搜索解空間樹:

(1):每個(gè)活結(jié)點(diǎn)只有一次機(jī)會(huì)變成擴(kuò)展結(jié)點(diǎn)磷瘤。
(2):由擴(kuò)展結(jié)點(diǎn)生成一步可達(dá)的新結(jié)點(diǎn)。
(3):在新結(jié)點(diǎn)中刪除不可能導(dǎo)出最優(yōu)解的結(jié)點(diǎn)(限界策略搜变,利用限界函數(shù))采缚。
(4):將剩余新結(jié)點(diǎn)加入到活結(jié)點(diǎn)表中。
(5):在活結(jié)點(diǎn)表中再取每個(gè)結(jié)點(diǎn)(按順序)進(jìn)行擴(kuò)展(分支策略)挠他。
(6):直到活結(jié)點(diǎn)表為空扳抽。

注:活結(jié)點(diǎn)表通常采用堆結(jié)構(gòu),當(dāng)求解極大值問題時(shí)用大頂堆殖侵,極小值問題時(shí)用小頂堆贸呢。

四、三個(gè)重要的函數(shù)

1拢军、約束函數(shù):問題定義時(shí)需給出的約束條件楞陷,如0/1背包問題不能超過其容量。

2茉唉、目標(biāo)函數(shù):是問題要求解的目標(biāo)函數(shù)固蛾,分支限界法中需給出一個(gè)關(guān)于該函數(shù)的上下界,方便之后剪枝度陆。

3艾凯、限界函數(shù):用于記錄當(dāng)前結(jié)點(diǎn)之下可得的最優(yōu)值,若超出上下界懂傀,則可放棄該結(jié)點(diǎn)趾诗;還用于活結(jié)點(diǎn)表中結(jié)點(diǎn)排序,限界函數(shù)值最優(yōu)的在第一位蹬蚁,優(yōu)先擴(kuò)展遍歷沧竟。

五、分支限界法的分類

1缚忧、隊(duì)列式分支限界法:在活結(jié)點(diǎn)表中,按照FIFO先進(jìn)先出原則選取下一個(gè)結(jié)點(diǎn)做擴(kuò)展結(jié)點(diǎn)杈笔。

2闪水、優(yōu)先隊(duì)列式分支限界法:活結(jié)點(diǎn)表中的每個(gè)結(jié)點(diǎn)對(duì)應(yīng)了一個(gè)耗費(fèi)或收益(其實(shí)就是如果擴(kuò)展該結(jié)點(diǎn),會(huì)帶來多大的效益)蒙具,以此決定結(jié)點(diǎn)的優(yōu)先級(jí)球榆。

六、經(jīng)典案例問題

0/1背包問題禁筏、單源最短路徑問題持钉、最優(yōu)裝載問題。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末篱昔,一起剝皮案震驚了整個(gè)濱河市每强,隨后出現(xiàn)的幾起案子始腾,更是在濱河造成了極大的恐慌,老刑警劉巖空执,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浪箭,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡辨绊,警方通過查閱死者的電腦和手機(jī)奶栖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來门坷,“玉大人宣鄙,你說我怎么就攤上這事∧觯” “怎么了冻晤?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長敏簿。 經(jīng)常有香客問我明也,道長,這世上最難降的妖魔是什么惯裕? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任温数,我火速辦了婚禮,結(jié)果婚禮上蜻势,老公的妹妹穿的比我還像新娘撑刺。我一直安慰自己,他們只是感情好握玛,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布够傍。 她就那樣靜靜地躺著百侧,像睡著了一般谅河。 火紅的嫁衣襯著肌膚如雪剃斧。 梳的紋絲不亂的頭發(fā)上略板,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天真椿,我揣著相機(jī)與錄音艇肴,去河邊找鬼哄酝。 笑死麦向,一個(gè)胖子當(dāng)著我的面吹牛瓢棒,可吹牛的內(nèi)容都是我干的浴韭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼脯宿,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼念颈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起连霉,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤榴芳,失蹤者是張志新(化名)和其女友劉穎嗡靡,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體翠语,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡叽躯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肌括。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片点骑。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖谍夭,靈堂內(nèi)的尸體忽然破棺而出黑滴,到底是詐尸還是另有隱情,我是刑警寧澤紧索,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布袁辈,位于F島的核電站,受9級(jí)特大地震影響珠漂,放射性物質(zhì)發(fā)生泄漏晚缩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一媳危、第九天 我趴在偏房一處隱蔽的房頂上張望荞彼。 院中可真熱鬧,春花似錦待笑、人聲如沸鸣皂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寞缝。三九已至,卻和暖如春仰泻,著一層夾襖步出監(jiān)牢的瞬間荆陆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國打工集侯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留被啼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓浅悉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親券犁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子术健,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 回溯法與分支限界法 時(shí)間 2016-03-24 標(biāo)簽 搜索 回溯法 1、概念 回溯算法實(shí)際上一個(gè)類似枚舉的搜索嘗...
    wangchuang2017閱讀 2,332評(píng)論 0 4
  • 分治算法 一粘衬、基本概念 在計(jì)算機(jī)科學(xué)中荞估,分治法是一種很重要的算法咳促。字面上的解釋是“分而治之”,就是把一個(gè)復(fù)雜的問題...
    Java資訊庫閱讀 9,775評(píng)論 0 14
  • 分治算法 一勘伺、基本概念 在計(jì)算機(jī)科學(xué)中跪腹,分治法是一種很重要的算法。字面上的解釋是“分而治之”飞醉,就是把一個(gè)復(fù)雜的問題...
    木葉秋聲閱讀 5,297評(píng)論 0 3
  • https://www.cnblogs.com/zeng-/p/4911644.html 一冲茸、基本描述 類似于回溯...
    麒麟楚莊王閱讀 780評(píng)論 0 0
  • 以下均轉(zhuǎn)載于:五大常用算法-分支界限,加入了一些我自己的想法 1.基本描述 類似于回溯法,也是一種在問題的解空間樹...
    RavenX閱讀 1,028評(píng)論 0 1