[問題]設有n個活動的集合e=(按其結束時間排序),其中每個活動都要使用同乙個場所,而在同一時間內只有1個活動能使用該場所。每個活動i的開始時間和結束時間分別為begin[i]和finish[i]。求e的最大相容子集合。
[解析]先選擇活動1,活動1具有最早的完成時間。下面證明該問題具有貪心選擇性質,即該問題有乙個最優解以貪心選擇開始,即該最優解中包含活動1。證明過程如下:
設子集a是該問題的乙個最優解,且a中的活動按結束時間排序,其第乙個活動為k:
(1)若k=1,則a就是以貪心選擇開始的最優解。
(2)若k>1,則設子集b=a-u。由於finish[1]≤finish[k],且a中的活動是相容的,所以b中的活動也是相容的。又由於b中活動的個數與a中相同,且a是最優的,所以b也是最優的。所以b是以貪心選擇1開始的最優解。
綜上所述,總是存在以貪心選擇開始的最優解。該問題具有貪心選擇性質。
在做出了貪心選擇,即選擇了活動1之後,原問題簡化為對e中所有與1相容的活動進行活動安排的子問題。也就是說,如果a是原問題的最優解,則其子集c=a-是該子問題的最優解(由反證法易得,假設該子問題存在乙個活動數比c更多的解d,則+d是原問題的乙個最優解,且其活動數比a多,得出矛盾)。所以該問題具有最優子結構性質。我們只要求出該子問題的最優解f,則+f就是原問題的乙個最優解。因此,每一步做出的貪心選擇都將原問題歸納為乙個更小的且與原問題具有相同形式的子問題。
我們的貪心策略是每次總是選擇具有最早完成時間的相容活動i加入最優解集合中。直觀上,這將為未安排活動留下盡可能多的時間。也就是說,該貪心選擇策略的意義是使剩餘的可安排時間段最大化,以便安排盡可能多的相容活動。
也可以換一種貪心策略,不是選擇第乙個結束的活動,而是選擇最後乙個開始、且與之前選擇的活動相相容的活動。
貪心法 活動安排問題
貪心法的本質可以認為是動態規劃在特定條件下的優化。貪心法滿足兩個性質,最優子結構性質和貪心選擇性質。滿足最優子結構性質意味著問題可以被層層分解為子問題,這些子問題構成樹狀結構,意味著貪心演算法可以求解的問題可以使用動態規劃演算法求解。對應到樹狀結構的話,就是從底向上求解,需要預先求出所有子問題的解以...
HDU 2037 活動安排 貪心法
問題 簡單來說就是有個節目表有起始時間和結束時間.要你在一天內盡可能多的完整看節目.分析 典型貪心法解.這次貪得是結束時間.意思就是讓這一天中剩下的時間盡可能多.所以讓結束時間盡可能的早 剩下就是些判斷起始時間是否比看完上個節目晚就行了.用這道題練了練排序函式 結構體使用.寫的比較繁瑣.見諒。inc...
會場安排問題(貪心法)
假設要在足夠多的會場裡安排一批活動,並希望使用盡可能少的會場。設計乙個有效的貪心演算法進行安排 這個問題實際上是著名的圖著色問題。若將每乙個活動作為圖的乙個頂點,不相容活動間用邊相連。使相鄰頂點著有不同顏色的最小著色數,相應於要找的最小會場數 為了能夠更加生動說明問題的整個過程,所以換乙個類似的描述...