zoukankan      html  css  js  c++  java
  • 算法导论第二版

    《算法导论第二版》


    (ppt)

    第一章 绪论

    • 1.1 算法的基本特征
    • 1.2 算法研究的意义
    • 1.3 算法的描述形式
    • 1.4 算法分析
    • 1.5 增长速率
    • 1.6 算法正确性分析 

    第二章 渐进符号

    • 2.1 Θ符号(渐进符号)
    • 2.2 Ο符号(渐进上界)
    • 2.3 Ω符号(渐进下界)
    • 2.4 利用极限比较函数间的增长速度

    第三章 分治法及递归算法的分析方法

    • 3.1 分治法
      • 1. 什么是分治法
      • 2. 应用分治法的三个基本步骤
      • 3. 归并排序(Merge Sort)
      • 4. 归并排序算法分析
        • 时间复杂度:最好、最坏、平均都是O(nlgn)
        • 空间复杂度:需要两个额外的辅助数组L和R来存放A[p...q]和A[q+1...r],因此空间复杂度为O(n)
      • 5. 分治法适用条件
    • 3.2 递归算法的分析
      • 1. 替换法
      • 2. 递归树方法
      • 3. Master方法
    • 3.3 快速排序算法设计与分析
      • 1. 快速排序算法设计
      • 2. 快速排序算法分析
        • 时间复杂度:最坏O(n2),最好和平均O(nlgn)
        • 空间复杂度:由于快排是原地算法,并不用到辅助数组,所以空间复杂度为O(1)
      • 3. 平衡划分
      • 4. 随机划分的快速排序算法分析

    (书+ppt) 

    第三部分 数据结构

    • 第13章 红黑树
      • 4.1 二叉查找树性质
      • 4.2 红黑树的特性
      • 4.3 黑高度(具有n个内部节点的红黑树的高度最多为2lg(n+1))
      • 4.4 红黑树的调整操作(变颜色+旋转)
      • 4.5 红黑树的插入操作
      • 4.6 红黑树的删除操作
    • 第14章 数据结构的扩张
      • 5.1 动态序统计
        • 1. 找第i个最小值操作:O(lgn)
        • 2. 求x的序值操作:O(lgn)
        • 3. 插入一个节点size域的调整
        • 4. 删除一个节点size域的调整
        • 5. 插入和删除一个节点的时间:O(lgn)
      • 5.2 数据结构扩张的步骤(定理14.1)
      • 5.3 区间树
        • 1. 挑选红黑树作为基本数据结构
        • 2. 确定需增加的信息域
        • 3. 核实增加max域后是否可以维持红黑树原有的性能
        • 4. 新增区间树的查找操作:时间为O(lgn)
        • 定理14.2

    第四部分 高级设计和分析技术

    • 第15章 动态规划(应用范围非常广,只要问题具有最优子结构性质,就可以用动态规划方法来求解,只不过说在分解后重叠子问题不是很多的情况下,它的优势并不明显)
      • 6.1 动态规划方法的基本步骤
      • 6.2 装配线调度问题(θ(n))
      • 6.3 矩阵链乘(O(n3))
      • 6.4 动态规划的要素
        • 问题的最优子结构性质(必要条件,若问题没有最优子结构性质,不能用动态规划方法求解)
        • 重叠子问题(非必要条件,重叠的子问题越多越有优势)
        • 记忆法(备忘录方法)
      • 6.5 最长公共子序列问题(θ(mn))
      • 6.6 最优二叉查找树(O(n3))
    • 第16章 贪心算法
      • 7.1 贪心法的基本思想
      • 7.2 活动选择问题(很重要,基础)
        • 问题的输入
        • 活动相容或不冲突
        • 活动选择问题
        • 动态规划方法
        • 贪心法解此问题
      • 7.3 贪心法应用注意事项
        • 应用贪心法的几项工作
        • 贪心选择性质
        • 最优子结构性质
        • 贪心法与动态规划方法比较
      • 7.4 Huffman编码
        • 前缀码
        • 最优前缀码
        • 构造Huffman编码
        • 最优前缀码的贪心选择性质和最优子结构性质
          • 引理16.2 贪心选择性质
          • 引理16.3 最优子结构性质
      • 7.5 贪心法的理论基础
        • 1. 胚
        • 2. 最大独立子集
        • 3. 加权胚
        • 4. 最优子集
        • 5. 加权胚的通用贪心算法
          • 加权胚的贪心选择性质
          • 加权胚的最优子结构性质
        • 6. 一个任务调度问题(胚的应用)
    • 第17章 平摊分析
      • 8.1 平摊分析方法
      • 8.2 合计法
      • 8.3 记账法
      • 8.4 势能法
      • 8.5 动态表

    第五部分 高级数据结构

    • 第19章 二项堆
      • 19.1 二项树与二项堆
        • 19.1.1 二项树
        • 19.1.2 二项堆
      • 19.2 对二项堆的操作
    • 第20章 斐波那契堆
      • 20.1 斐波那契堆的结构
      • 20.2 可合并堆的操作
      • 20.3 减小一个关键字与删除一个结点
      • 20.4 最大度数的界

    第六部分 图算法

    • 第26章 最大流
      • 26.1 流网络
      • 26.2 Ford-Fulkerson方法
        • Ford-Fulkerson方法的时间复杂度为:O(E|f*|)
        • 一次循环所花费的时间为O(E),|f*|为while循环的次数(不确定),即增广路径的条数。
        • Edmonds-Karp算法是真正可用的求解最大流的算法,它的时间复杂度为O(VE2)
        • Ford-Fulkerson:O(E|f*|) —> Edmonds-Karp:O(VE2) —> push-relabel:O(V2E) —> relable-to-front:O(V3)。(性能不断提高,因为E>V,边数大于顶点数)
      • 26.3 最大二分匹配
      • 26.4 Push-relabel algorithms
      • 26.5 The relabel-to-front algorithm

    课堂上涉及到的各算法的时间复杂度:

    1. 插入排序:最好情况:O(n),最坏情况:O(n2),平均情况:O(n2),它的循环不变式为:子数组A[1...j-1]始终为排好序的状态。

    2. 二叉查找树:设二叉树的高度为h,则静态操作:查找节点、找前驱、后继等时间为O(h)。动态操作:插入和删除节点等时间为O(h)。均与二叉树的高度有关。

    3. 红黑树(一种比较平衡的二叉查找树):红黑树的高度为h=O(lgn)。旋转操作只是几个指针的调整,时间为O(1)。插入操作时间为O(lgn),删除操作时间也为O(lgn)。 

    4. 活动选择问题:动态规划方法O(n3),贪心法O(nlgn)

    5. Huffman编码:O(nlgn)

  • 相关阅读:
    CPPFormatLibary提升效率的优化原理
    Unity4、Unity5移动平台多线程渲染在部分安卓手机上会造成闪退
    Hello World!
    Mac/IOS/linux获取当前时间包含微秒毫秒的代码
    插入图块闪烁问题的原因
    选择实体时的选项
    dataGridView 单元格添加combox checkbox
    交互拾取点时 右键取消 禁止出现点无效
    曲线上到指定点最近的点
    移除实体应用程序名(xdata)
  • 原文地址:https://www.cnblogs.com/huangmengyu/p/12082177.html
Copyright © 2011-2022 走看看