6贪心算法

6贪心算法

Info iconThis preview shows pages 1–10. Sign up to view the full content.

View Full Document Right Arrow Icon
1 贪心法 (Greedy Approach) ± 基本思想 ± 算法设计 ² 设计要素 ² 与动态规划法的比较 ² 正确性证明 ± 得不到最优解的处理办法 ± 应用实例
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
2 输入: S ={1, 2, … , n } n 项活动的集合 s i , f i 分别为活动 i 的开始和结束时间 活动 i j 相容 当且仅当 s i f j s j f i 求最大的两两相容的活动集 思路: 按结束时间递增顺序将活动排列为 1,2,…, n , 使得 f 1 f 2 f n 按照标号从小到大选择 活动选择问题
Background image of page 2
3 贪心算法 算法 Greedy Select 1. n length [ S ]; 2. A {1}; 3. j 1; 4. for i 2 to n 5. do if s i f j 6. then A A { i }; 7. j i ; 8. return A . 最后完成时间 t = max { f k : k A }.
Background image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
4 输入 14 13 12 11 10 9 8 7 6 5 4 f i 12 2 8 8 6 5 3 5 0 3 1 s i 11 10 9 8 7 6 5 4 3 2 1 i 解为 A = {1, 4, 8, 11} t =14 实例
Background image of page 4
5 定理 1 算法 Select 执行到第 k , 选择 k 项活动 i 1 = 1, i 2 , …, i k , 那么存在最优解 A 包含 i 1 =1, i 2 , … , i k 根据定理:算法至多到第 n 步得到最优解 正确性证明 证明方法: (1) 归纳法:证明贪心法得到最优解 叙述一个描述正确性的命题 对算法步数归纳或者对问题规模归纳 (2) 交换论证:在保证最优性不变的前提下,从一个 最优解进行逐步替换,最终得到贪心法的解
Background image of page 5

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
6 归纳证明 归纳基础 :证明存在最优解包含活动 1 归纳步骤 :假设按照算法前 k 步选择都导致最优解,证明 k +1 步选择也导致最优解 归纳步骤的证明思路 1. 算法第 k 步选择活动 i 1 =1, i 2 , … , i k ,根据归纳假设,存 在最优解 A ={ i 1 =1, i 2 , … , i k } B B 是剩下的待选活动集 S 的一个最优解 2. 由归纳基础,存在 S 的最优解 B’ 包含 i k +1 3. | B’ |=| B | A’ ={ i 1 =1, i 2 , … , i k } B’ 最优 4. A’ ={ i 1 =1, i 2 , …, i k , i k +1 } ( B’ { i k +1 }) 最优 .
Background image of page 6
7 证明:归纳基础 S ={1,2,…, n } 是活动集,活动按截止时间递增顺序排序 . k =1, 证明存在最优解包含活动 1. 任取最优解 A , A 中的活动按照截止时间递增的 顺序排列 . 如果 A 的第一个活动为 j j 1, A ’= ( A { j }) {1}, 由于 f 1 f j , A 也是最优解,且含有 1.
Background image of page 7

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
8 }) { ' ( } , ,... , { ' } ,..., , { 1 1 2 1 2 1 + + = k k k k i B i i i i B i i i 也是原问题的最优解. 假设命题对 k 为真 , 证明对 k +1 也为真 . 算法执行到第 k , 选择了活动 i 1 =1, i 2 , …, i k , 根据归纳假 设存在最优解 A 包含 i 1 = 1, i 2 , … , i k , A 中剩下的活动选自集合 S ’={ i | i S , s i f k }, A = { i 1 , i 2 , … , i k } B B S 的最优解 . (若不然 , S 的最优解为 B* , B* 的活动比 B 多,那么 B* {1, i 2 , … , i k } S 的最优解,且比 A 的活动多 , A 的最优性矛盾 . 根据归纳基础,存在 S 的最优解 B’ 含有 S 中的第一个活 动,设为 i k +1 , | B ’|=| B |, 于是 证明:归纳步骤
Background image of page 8
9 贪心算法设计要素 ± 适用: 满足优化原则的组合优化问题 问题求解表示成多步判断
Background image of page 9

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Image of page 10
This is the end of the preview. Sign up to access the rest of the document.
  • Fall '09
  • Freund,Yoav