算法6章算法分析与问题的计算复杂度.pptVIP

  • 16
  • 0
  • 约1.61万字
  • 约 71页
  • 2018-11-02 发布于福建
  • 举报

算法6章算法分析与问题的计算复杂度.ppt

算法6章算法分析与问题的计算复杂度

* 6.6 选择算法的时间复杂度分析 下界证明方法:构造最坏输入 任意给定一个算法 A,A对于任意输入 x 都存在一个确定的操作序列 ? ?中的操作分成两类: 决定性的:能够对确定输出结果提供有效信息 非决定性的:对确定结果没有帮助的冗余操作 根据算法A构造某个输入实例 x,使得A对x 的操作序列 ? 包含尽量多的非决定性操作. 给出冗余操作+必要的操作的计数公式 * 算法 最坏情况 空间 选最大 顺序比较 n?1 O(1) 选最大 和最小 顺序比较 2n?3 O(1) 算法FindMaxMin ?3n/2??2 O(1) 选第二大 顺序比较 2n?3 O(1) 锦标赛方法 n+?logn??2 O(n) 选中位数 排序后选择 O(nlogn) O(logn) 算法Select O(n)?2.95n O(logn) 选择算法的有关结果 选最大算法 Findmax是最优的算法 * 定理6 任何通过比较找最大和最小的算法至少需要 ?3n/2?-2次比较. 证明思路:任给算法A,根据算法 A 的比较结果构造输入T, 使得 A 对 T 至少做 ?3n/2?-2 次比较. 证:不妨设n个数彼此不等,A为任意找最大和最小的算法. max是最大,A必须确定有n-1个数比max小,通过与max的比较被淘汰. min是最小,A也必须确定有n-1个数比min大,通过与min的比较而淘汰.总共需要2n-2个信息单位. 6.6.1 选最大与最小算法 * 数的状态标记及其含义: N:没有参加过比较 W:赢 L:输 WL:赢过且至少输1次 如果比较后数的状态改变,则提供信息单位,状态不变不提供信息单位,每增加 1 个W 提供 1个信息单位 每增加 1 个L 提供 1 个信息单位. 基本运算与信息单位 两个变量通过一次比较增加的信息单位个数不同: 0,1,2 case1 : N,N ? W,L:增加2个信息单位 case2 : W,N ? W,L:增加1个信息单位 case3 : W,L ? W,L:增加0个信息单位 * 算法输出的条件: n-2 个数带有 W 和 L 标记,最大数只带 W 标记,最小数只带 L 标记,总计 2n-2个信息单位 对于任意给定的算法,构造输入的原则是: 根据算法的比较次序,针对每一步参与比较的两个变量的状 态,调整对参与比较的两个变量的赋值,使得每次比较后得 到的信息单位数达到最小. 从而使得为得到 输出所需要的 2n-2个信息单位,该算法对所构造的输入至少要做 ?3n/2?-2 次比较. 算法输出与信息单位 * x 与 y 的状态 赋值策略 新状态 信息单位 N,N xy W,L 2 W,N;WL,N xy W,L;WL,L 1 L,N xy L,W 1 W,W xy W,WL 1 L,L xy WL,L 1 W,L;WL,L;W,WL xy 不变 0 WL,WL 保持原值 不变 0 对输入变量的赋值原则 * x1,x2---x1x2; x1,x5---x1x5; x3,x4---x3x4; x3,x6---x3x6 x3,x1---x3x1; x2,x4---x2x4; x5,x6---x5x6; x6,x4---x6x4 … x1 x2 x3 x4 x5 x6 状态 值 状态 值 状态 值 状态 值 状态 值 状态 值 x1x2 N * W 20 N * L 10 N * N * N * N * x1x5 W 20 L 5 x3x4 W 15 L 8 x3x6 W 15 L 12 x3x1 WL 20 W 25 x2x4 WL 10 L 8 x5x6 WL 5 L 3 x6x4 L 2 WL 3 构造的输入为(20,10,25,2,5,3) 一个赋值的实例 * 为得到2n-2个信息单位,对上述输入A至少做 ?3n/2? - 2 次比较. 一次比较得到2个信息单位只有case1. A至多有 ?n/2? 个case1,至多得到 2 ?n/2? ? n个信息单位. 其它case, 1次比较至多获得1个信息单位,至少还需要 n-2次比较. 当 n 为偶数,A做的比较次数至少为

文档评论(0)

1亿VIP精品文档

相关文档