MIT 麻省理工 算法课程-第九节-讲义(经典!)

preview
需积分: 0 1 下载量 80 浏览量 更新于2009-12-20 收藏 319KB PDF 举报
### MIT麻省理工算法课程-第九节-讲义(经典!) #### 关键知识点解析 在本节课程中,我们探讨了二叉搜索树(Binary Search Trees, BSTs)与快速排序(Quicksort)之间的关系,并对随机构建的二叉搜索树进行了分析,特别是其节点深度和高度的期望值。 ##### 一、BSTs与Quicksort的关系 1. **BSTs排序过程**: - 初始化一个空的二叉搜索树T。 - 对于数组中的每个元素A[i],使用TREE-INSERT(T, A[i])将其插入到T中。 - 执行一次中序遍历,输出所有元素。 例如:对于数组A = [3, 1, 8, 2, 6, 7, 5],构建过程如下: ``` A = [3, 1, 8, 2, 6, 7, 5] 3 3 8 8 1 1 2 2 6 6 5 5 7 7 ``` - 树遍历的时间复杂度为O(n),但是构建这棵树需要多长时间? 2. **BST排序与快速排序的比较**: - BST排序执行的比较与快速排序相同,但顺序不同。 - 例如,对于数组A = [31, 8, 2, 6, 7, 5],构建过程如下: ``` 31 8 2 6 7 5 12 8 6 7 5 2 6 7 5 7 5 ``` - 构建树的期望时间与快速排序的时间复杂度在渐近意义上是相同的。 ##### 二、节点深度的分析 1. **定义**: - 节点深度定义为在进行TREE-INSERT时所做的比较次数。 - 假设所有输入排列等概率出现,则平均节点深度为O(log n)。 2. **计算公式**: \[ \text{平均节点深度} = \frac{1}{n}\sum_{i=1}^{n}\log_2 i = O(\log_2 n) \] 3. **解释**: - 这个结果与快速排序的分析类似。 ##### 三、随机构建BST的高度分析 1. **平均节点深度与树高度的区别**: - 即使随机构建的BST的平均节点深度为O(log n),也不能直接推断出它的期望高度也是O(log n)。 - 示例:假设有一棵高度为h的树,其中n个节点的平均深度为log n,但这并不意味着h = log n。 2. **高度的期望值**: - 为了证明随机构建的BST的高度期望值为O(log n),我们需要使用一系列数学工具来分析。 - **凸函数**:函数\(f: R \rightarrow R\)如果对于所有的\(x, y \in R\)和\(\alpha \in [0, 1]\)满足 \[ f(\alpha x + (1-\alpha)y) \leq \alpha f(x) + (1-\alpha)f(y) \] 则称\(f\)为凸函数。 - **Jensen不等式**:对于任何凸函数\(f\)和随机变量\(X\),有 \[ f(E[X]) \leq E[f(X)] \] - **指数高度的分析**: - 定义随机变量\(Y_n = 2^{X_n}\),其中\(X_n\)表示含有\(n\)个节点的随机BST的高度。 - 证明\(2E[X_n] \leq E[2^{X_n}] = E[Y_n] = O(n^3)\),从而得出\(E[X_n] = O(\log n)\)。 ##### 四、结论与回顾(Postmortem) 1. **主要结论**: - 随机构建的二叉搜索树的高度期望值为\(O(\log n)\)。 - 这意味着随机构建的BST在期望情况下具有良好的性能。 2. **后续工作**: - 这些理论成果不仅为二叉搜索树提供了理论支持,也为实际应用中的数据结构选择提供了指导。 - 通过对这些概念的理解,我们可以更深入地探索算法的设计与分析方法。 通过以上分析,我们可以看到MIT麻省理工的算法课程在教授基础概念的同时,也注重将理论应用于具体的例子之中,帮助学生更好地理解复杂的数学原理和技术细节。
grasssu
  • 粉丝: 1
  • 资源: 12
上传资源 快速赚钱
voice
center-task 前往需求广场,查看用户热搜