3分治算法

3分治算法

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

View Full Document Right Arrow Icon
1 顺序算法的设计技术 ± 分治策略 ± 动态规划算法 ± 回溯法与分支估界 ± 贪心算法 ± 概率算法
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 分治策略( Divide and Conquer) ± 分治策略的基本思想 ² 实例、主要思想、算法描述、注意问题 ± 递归算法与递推方程 ² 两类递推方程的求解 ± 降低递归算法复杂性的途径 ² 代数变换减少子问题个数 ² 预处理减少递归的操作 ± 典型实例分析
Background image of page 2
3 分治策略的基本思想 分治策略的实例----二分检索、归并排序 主要思想----划分、求解子问题、综合解 算法描述 Divide-and-Conquer(P) 1. if | P | c then S ( P ). 2. divide P into P 1 , P 2 , …, P k . 3. for i = 1 to k 4. y i = Divide-and-Conquer( P i ) 5 Return Merge( y 1 , y 2 , …, y k ) 注意问题----连续划分 平衡原则
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 ± 分治策略的算法分析工具----递推方程 ± 两类递推方程 ± 求解方法 迭代法、递归树、Master定理 ) ( ) ( ) ( ) ( ) ( ) ( 1 n d b n af n f n g i n f a n f k i i + = + = = 递归算法与递推方程
Background image of page 4
5 = = 1 ) (log 1 ) ( ) ( log a n O a n O n f a b d ( n ) = cn > = < = b a n O b a n n O b a n O n f a b ) ( ) log ( ) ( ) ( log ) ( ) ( ) ( n d b n af n f + = 典型的递推方程 d ( n ) 为常数 时
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 A 报告 B 报告 结论 B 是好的 A 是好的 A,B 都好或 A,B 都坏 B 是好的 A 是坏的 至少一片是坏的 B 是坏的 A 是好的 至少一片是坏的 B 是坏的 A 是坏的 至少一片是坏的 例1 芯片测试 条件:有 n 片芯片,(好芯片至少比坏芯片多 1 ), 问题:使用最少测试次数,从中挑出1片好芯片 要求:说明测试算法,进行复杂性分析 实例
Background image of page 6
7 算法 1 k n 2 while k > 3 do 3 将芯片分成 k /2 4 for i =1 to k /2 do 5. if 2 片好,则任取 1 片留下 6. else 2 片同时丢掉 7 k 剩下的芯片数 8 if k = 3 9. then 任取 2 片芯片测试 10. if 1 1 坏,取没测的芯片 11. else 任取 1 片被测芯片 12 if k =2 or 1 then 任取 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 分析 ± 说明 上述算法只是一个概要说明,对于 n 为奇数的 情况需要进一步处理 , 处理时间为 O ( n ). ± 复杂性分析 W ( n ) 表示 n 片芯片测试的次数,则 W ( n ) = W ( n /2) + O ( n ) W (1) = 0 Master 定理, W ( n ) = O ( n )
Background image of page 8