高级算法复习

文章目录

    • 时间代价
      • 主定理
      • 递归树
    • 排序
    • 贪心算法
    • 动态规划
      • 矩阵链乘法(Matrix-chain Multiplication)
      • 最长公共子序列(Longest Common Subsequence)
      • 凸多边形的三角形分解(Triangle Decomposition of Convex Polygon)
      • 最优二叉搜索树(The Optimal Binary Search Trees)
    • B树
    • 红黑树
      • 五条性质
      • 高,黑高,节点个数
      • 红黑树插入节点
    • 哈希
      • chain
      • 开放寻址法
        • linear probing
        • Quadratic probing
        • Double hashing
      • 证明要1/(1–α)个探针才能找到元素

时间代价

主定理

在这里插入图片描述
高级算法复习_第1张图片

递归树

排序

高级算法复习_第2张图片

贪心算法

  • 贪心选择性(Greedy-choice property):
    通过做出局部最优(贪婪)选择,可以得出全局最优解——这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别

  • 最优子结构性质(Optimal substructure property):
    当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质——最优子结构性质是该问题可用 动态规划算法 or 贪心算法 求解的关键特征

英语:全局最优解optimum solution
与动态规划区别:是否产生最优解;贪心选择更简单高效;对应问题都具有最优子结构,但贪心算法要满足贪心选择性,动态规划满足重合子问题(overlapping subproblem)

动态规划

矩阵链乘法(Matrix-chain Multiplication)

最长公共子序列(Longest Common Subsequence)

凸多边形的三角形分解(Triangle Decomposition of Convex Polygon)

最优二叉搜索树(The Optimal Binary Search Trees)

B树

  • B树=B-树
  • B树的value在每个节点,B+树的value在叶子节点(内部节点只有key),2-3-4树是4阶B树(4 order)(子树个数可能有2,3,4个,也就是节点key可能有1,2,3个)
  • B树的最小度数(minimum degree)为t,代表每个节点最少有t个子树(根节点除外,根节点可以只有2个子树),即有t-1个key;并且每个节点最多有2t个子树,即有2t个key。题目中介绍B树会说:a B-tree with minimum degree 2
  • B树的阶数(order)=节点子树的上限,B树节点的最小度数t=这棵树的阶数为2t(4阶B树最多有4个子树,节点最小度为2)
  • B树节点的分裂:B树最小度为t,当节点有2t-1个key时也就是full时,如果进行分裂,则左子树有t-1个,右子树有t-1个key,把中间剩下的key移到上一层
  • B树的插入:直接按大小顺序插入到底层,往下走的过程中碰到full节点就分裂(这就避免了最底层节点分裂造成的网上连续分裂),走到底层碰到full节点就先分裂再插入

红黑树

五条性质

高级算法复习_第3张图片

高,黑高,节点个数

高级算法复习_第4张图片
黑高是高的一半: bh = h/2
高为h的树的节点总数2h-1
高级算法复习_第5张图片

红黑树插入节点

1.父叔都是红
高级算法复习_第6张图片
2.父红叔不红----一定接3
高级算法复习_第7张图片
3.父红叔不红
高级算法复习_第8张图片

哈希

chain

用链表解决哈希
The expected time for an unsuccessful search for a record with a given key is = Θ(1 + α)。α是装载因子

开放寻址法

linear probing
  • Given an ordinary hash function h’(k), linear probing uses the hash function h(k,i) = (h’(k) +i) mod m.
Quadratic probing
  • h(k,i) = (h’(k) +c1i+c2i2) mod m.
    Where h’(k) is an auxiliary hash function, c1 and c2 ≠0 are auxiliary constants.
Double hashing
  • h(k,i) = (h1(k) +ih2(k)) mod m.

证明要1/(1–α)个探针才能找到元素

  • Given an open-addressed hash table with load factor α= n/m< 1, the expected number of probes in an unsuccessful search is at most 1/(1–α).

你可能感兴趣的:(算法)