簡體   English   中英

調度貪心算法的最優性證明

[英]Proof of optimality of greedy algorithm for scheduling

無法針對給定問題提出算法 A 最優性的正式證明。 已經說服自己可以按照事件截止日期的遞增順序執行一些最佳計划O。 但不知道如何正式證明 extract_max 操作收斂到最優解。

問題

:給定截止日期為“d”和持續時間為“l”天的事件列表,為 select 事件提供算法,以便可以選擇最大數量的事件。 當然,每個事件必須安排在截止日期“d”之前完成,它必須連續運行“l”天,並且在任何給定時間只能運行一個事件。

**Greedy Algorithm A:**

Create max_heap S  //schedule

Sort events by their deadline (increasing).

for(j=0;j<events.size();j++)

{ 

  If you can incorporate event j into schedule S, do so. 

  Else, if(longest event in S > length of j) swap it with j. 


}

Return S; 

END

我們可以用反證法來證明這一點。 假設貪心選擇不是最優解的一部分; 也就是說,如果我們考慮按截止日期升序排列的任務,則最佳解決方案不會包括截止日期最早的任務。 現在,考慮任何假設最優解中截止日期最早的任務。 要么它與貪婪選擇重疊(在這種情況下,我們不妨選擇貪婪選擇,因為它不遲於最優解中最早的任務完成,並且不能與最優解中的任何早期任務重疊,因為它是最早的任務); 否則它不重疊,在這種情況下最優解不是最優的(因為我們也可以自由地在其中包含貪婪選擇)。 在這兩種情況下,我們都有一個矛盾(在第一種情況下,無法選擇貪婪的解決方案;在第二種情況下,沒有貪婪選擇的解決方案是最優的),因此假設最優選擇不包含貪婪的選擇是錯誤的; 最優解確實包括貪心選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM