Algorithmic Toolbox week3 Greedy Algorithm 總結(jié)

??在以往的算法課程中直砂,比如《算法導(dǎo)論》和國(guó)內(nèi)的《數(shù)據(jù)結(jié)構(gòu)和算法》幌陕,都是先講授數(shù)據(jù)結(jié)構(gòu),然后再講算法存崖。而Algorithmic Toolbox這門系列課程另辟蹊徑,不僅是先講算法睡毒,再講數(shù)據(jù)結(jié)構(gòu)(第一門課程中講授算法来惧、第二門課程中講授數(shù)據(jù)結(jié)構(gòu)),而且是先講貪心算法演顾,再講動(dòng)態(tài)規(guī)劃(在算法導(dǎo)論中是先講動(dòng)態(tài)規(guī)劃供搀,再講貪心算法的)隅居。

??在這周的貪心算法課程中,老師講了三個(gè)例子葛虐。第一個(gè)是求長(zhǎng)途旅行需要加油的最少次數(shù)胎源。條件如下所示:
1:在滿載不加油的情況下,最多行駛400KM屿脐。
2:起點(diǎn)為A涕蚤,終點(diǎn)為B,距離為950KM的诵。

條件

??解算法題的兩大步驟:第一步先把算法問題進(jìn)行數(shù)學(xué)建模万栅,第二步用程序表示數(shù)學(xué)建模的思想。以此題為例西疤,第一步數(shù)學(xué)建模烦粒,結(jié)果如下:
?Input: A car which can travel at most L kilometers with full tank, a source point A, a destination point B and n gas stations at distances x1 ≤ x2 ≤ x3 ≤ · · · ≤ xn in kilometers from A along the path from A to B.
?Output: The minimum number of refills to get from A to B, besides refill at A.(目標(biāo)函數(shù))

??一共有幾種決策方式,分別是在最近的加油站加油代赁、在油量不耗盡的前提下在最遠(yuǎn)的加油站加油扰她、一直開不加油等等(例如在決策1和2之間的加油站加油)。

??決策2的具體步驟如下所示:

  1. Start at A
  2. Refill at the farthest reachable gas station G
  3. Make G the new A
  4. Get from new A to B with minimum number of refills
    其中1芭碍、2义黎、3步是個(gè)循環(huán)直到結(jié)束。

??其中在貪心算法中有個(gè)核心概念是safe move豁跑,即if there exists some optimal solution in which first move is this greedy choice, then this greedy choice is called a safe move.

??在這里廉涕,證明的方式像是尋找和first move不同的情況下,最后還是等效或者不如first move的情況艇拍。在這里狐蜕,由于G是不耗盡油的最遠(yuǎn)加油站,所以除了first move選擇G以外卸夕,我們只能選擇G1层释。如下圖所示:

Proof

??在這里,其實(shí)細(xì)分的話快集,可以分為3種情況贡羔。G2>G, G2=G, G2<G。

??當(dāng)G2>G時(shí)个初,和first move是G1是等效的(都是加油兩次)乖寒。
G2>G

??當(dāng)G2=G時(shí),很顯然院溺,多加了一次油楣嘁,也就是不如的情況。

??當(dāng)G2<G時(shí),這里也沒必要在G1地方加第一次油逐虚,也是不如的情況聋溜。


image.png

偽代碼如下所示,其中外層循環(huán)指代的是每次加油叭爱,內(nèi)層循環(huán)指代的是每次加油的具體地點(diǎn):

A = x0 ≤ x1 ≤ x2 ≤ · · · ≤ xn ≤ xn+1 = B
MinRefills(x, n, L)
numRefills ← 0, currentRefill ← 0
while currentRefill ≤ n:
    lastRefill ← currentRefill
    while (currentRefill ≤ n and x[currentRefill + 1] ? x[lastRefill ] ≤ L):
        currentRefill ← currentRefill + 1
    if currentRefill == lastRefill:
        return IMPOSSIBLE
    if currentRefill ≤ n:
        numRefills ← numRefills + 1
return numRefills
時(shí)間復(fù)雜度

image.png

image.png

image.png

image.png

image.png

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末撮躁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子买雾,更是在濱河造成了極大的恐慌把曼,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評(píng)論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凝果,死亡現(xiàn)場(chǎng)離奇詭異祝迂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)器净,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門型雳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人山害,你說我怎么就攤上這事纠俭。” “怎么了浪慌?”我有些...
    開封第一講書人閱讀 169,941評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵冤荆,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我权纤,道長(zhǎng)钓简,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,294評(píng)論 1 300
  • 正文 為了忘掉前任汹想,我火速辦了婚禮外邓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘古掏。我一直安慰自己损话,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,295評(píng)論 6 398
  • 文/花漫 我一把揭開白布槽唾。 她就那樣靜靜地躺著丧枪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪庞萍。 梳的紋絲不亂的頭發(fā)上拧烦,一...
    開封第一講書人閱讀 52,874評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音挂绰,去河邊找鬼屎篱。 笑死服赎,一個(gè)胖子當(dāng)著我的面吹牛葵蒂,可吹牛的內(nèi)容都是我干的交播。 我是一名探鬼主播,決...
    沈念sama閱讀 41,285評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼践付,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼秦士!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起永高,我...
    開封第一講書人閱讀 40,249評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤隧土,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后命爬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體曹傀,經(jīng)...
    沈念sama閱讀 46,760評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,840評(píng)論 3 343
  • 正文 我和宋清朗相戀三年饲宛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了皆愉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,973評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡艇抠,死狀恐怖幕庐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情家淤,我是刑警寧澤异剥,帶...
    沈念sama閱讀 36,631評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站絮重,受9級(jí)特大地震影響冤寿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜青伤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,315評(píng)論 3 336
  • 文/蒙蒙 一督怜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧潮模,春花似錦亮蛔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至动遭,卻和暖如春芬探,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背厘惦。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評(píng)論 1 275
  • 我被黑心中介騙來泰國(guó)打工偷仿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哩簿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,431評(píng)論 3 379
  • 正文 我出身青樓酝静,卻偏偏與公主長(zhǎng)得像节榜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子别智,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,982評(píng)論 2 361