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.