![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法导论 笔记
文章平均质量分 92
fastaway
这个作者很懒,什么都没留下…
展开
-
第五章 概率分析和随机算法 5.2 指示器随机变量
5.2 指示器随机变量一. 指示器随机变量1. 相关定义 给定一个样本空间 SSS 和 一个事件 AAA ,那么事件 AAA 对应的指示器随机变量 I{A}I\{A\}I{A} 定义为:I{A}={1如果 A 发生0如果 A 不发生I\{A\}=\begin{cases}1&\text{如果 $A$ 发生}\\0&\text{如果 $A$ 不发生}\end{cases}I{A}={10如果 A 发生如果 A&n原创 2020-08-04 12:19:50 · 435 阅读 · 0 评论 -
第五章 概率分析和随机算法 5.1 雇用问题
5.1 雇用问题一. 雇用问题1. 问题描述 假设雇用一名新的办公助理,先找一名雇用代理。雇用代理每天推荐一个应聘者,雇用者决定是否雇用。雇用者必须给雇用代理一小笔费用,以便面试应聘者。在面试完每个应聘者后,如果该应聘者比目前的办公助理更合适,就会辞掉当前的办公助理,然后聘用新的。 HIRE-ASSISTANT 过程表示雇用策略。假设应聘办公助理的候选人编号为 111 到 nnn 。该过程中假设雇用者在面试完应聘者 iii 后,决定应聘者 iii 是否是你目前见过的最佳人选。初始化时,该过程创建原创 2020-07-28 21:37:19 · 505 阅读 · 0 评论 -
第四章 分治策略 4.2 矩阵乘法的 Strassen 算法
4.2 矩阵乘法的 Strassen 算法一. 若 A=(aij)A = (a_{ij})A=(aij) 和 B=(bij)B = (b_{ij})B=(bij) 是 n×nn\times nn×n 的方阵,则对 i,j=1,2,...,ni, j = 1, 2, ..., ni,j=1,2,...,n ,定义乘积 C=A⋅BC = A\cdot BC=A⋅B 中的元素 cijc_{ij...原创 2020-04-26 15:44:27 · 500 阅读 · 0 评论 -
第四章 分治策略 4.1 最大子数组问题
4.1 最大子数组问题一. 分治策略中,递归地求解一个问题,在每层递归中应用如下三个步骤:分解 步骤将问题划分为一些子问题,子问题的形式与原问题一样,只是规模更小。解决 步骤递归地求解出子问题。如果子问题的规模足够小,则停止递归,直接求解。合并 步骤将子问题的解组合成原问题的解。 当子问题足够大,需要递归求解时,我们称之为递归情况。当子问题变得足够小,不再需要递归时,我们说递归...原创 2020-04-24 00:47:55 · 417 阅读 · 0 评论 -
第四章 分治策略 4.6 证明主定理
4.6 证明主定理一.1. 当我们在一个局限的值域上使用渐近符号时,必须要时刻小心,避免得到错误的结论。例如:对 nnn 是 222 的幂的情况证明 T(n)=O(n)T(n)=O(n)T(n)=O(n) 并不保证 T(n)=O(n)T(n)=O(n)T(n)=O(n) 。函数 T(n)T(n)T(n) 可能是这样定义的:T(n)={n若 n=1,2,4,8,...n2其他T(...原创 2020-03-17 21:46:48 · 719 阅读 · 0 评论 -
第四章 分治策略 4.5 用主方法求解递归式
4.5 用主方法求解递归式一.1.主定理 令 a≥1a≥1a≥1 和 b>1b>1b>1 是常数, f(n)f(n)f(n) 是一个函数, T(n)T(n)T(n) 是定义在非负整数上的递归式: T(n)=aT(bn)+f(n)T(n)=aT(\frac{b}{n})+f(n)T(n)=aT(nb)+f(n) 其中我们将 b/nb/nb/n 解释为 ⌊n/b⌋\lfl...原创 2020-03-13 00:32:46 · 994 阅读 · 0 评论 -
第四章 分治策略 4.4 用递归树方法求解递归式
4.4 用递归数方法求解递归式一.1. 在递归树中,每个结点表示一个单一子问题的代价,子问题对应某次递归函数调用。我们将树中每层中的代价求和,得到每层代价,然后将所有层的代价求和,得到所有层次的递归调用的总代价。 递归树最适合用来生成好的猜测,然后即可用代入法来验证猜测是都正确。当使用递归树来生成好的猜测时,常常需要忍受一点儿“不精确”,因为稍后才会验证猜测是否正确。如果在画递归树和代...原创 2020-03-11 22:16:21 · 2900 阅读 · 0 评论 -
第四章 分治策略 4.3 用代入法求解递归式
4.3 用代入法求解递归式一.1. 代入法1.1 代入法 求解递归式分为两步: 1. 猜测解的形式。 2. 用数学归纳法求出解中的常数,并证明解是正确的。1.2 数学归纳法要求我们证明解在边界条件下也成立。为证明这一点,我们通常证明对于归纳证明,边界条件适合作为基本情况。1.3 微妙的细节 才出了递归式解的渐近界,但在归纳证明时失败。问题常常在于归纳假设不够强,无法证...原创 2020-03-09 15:39:07 · 775 阅读 · 0 评论 -
第三章 函数的增长 3.2 标准记号与常用函数
3.2 标准记号与常用函数一.1.单调性 若 m ≤ n 蕴含 f(m) ≤ f(n),则函数 f(n) 是单调递增的。类似地,若 m ≤ n 蕴含 f(m) ≥ f(n),则函数 f(n) 是单调递减的。若 m < n 蕴含 f(m) < f(n),则函数 f(n) 是严格递增的。若 m < n 蕴含 f(m) > f(n),则函数 f(n) 是严格递减的。2....原创 2020-03-07 18:03:11 · 429 阅读 · 0 评论 -
第三章 函数的增长 3.1 渐进记号
3.1 渐进记号一.1.引言 当输入规模足够大时,使得只有运行时间的增长量级有关时,我们要研究算法的渐进效率。也就是说,我们关心当输入规模无限增加时,在极限中,算法的运行时间如何随着输入规模的变大而增加。通常,渐进地更有效的某个算法对除很小的输入外的所有情况将是最好的选择。2.定义 用来描述算法渐进运行时间的记号根据定义域为自然数集N = {0, 1, 2, …}的函数来定义。 ...原创 2020-03-02 00:30:07 · 700 阅读 · 0 评论 -
第二章 算法基础 2.3 设计算法
2.3 设计算法一. 分治法原创 2020-02-26 23:15:19 · 284 阅读 · 0 评论 -
第二章 算法基础 2.2 分析算法
2.2 分析算法一.1.假定采用一种通用的单处理器计算模型——随机访问机(random-access machine,RAM)来作为实现技术,算法可以通过计算机程序来实现。在RAM模型中,指令一条接一条的执行,没有并发操作。2.RAM模型包含真实计算机中常见的指令:算术指令,如加法、减法、乘法、除法、取余、向下取整、向上取整)数据移动指令:装入、存储、复制控制指令:条件与无条件...原创 2019-09-30 23:27:51 · 333 阅读 · 0 评论 -
第二章 算法基础 2.1 插入排序
2.1 插入排序一.排序问题输入:n个数的一个序列<a1,a2,…,an>。输出:输入序列的一个排列<a1’,a2’,…,an’>,满足a1’≤a2’≤…≤an’。我们希望排序的数也称作关键词。对于少量元素的排序,插入排序是一个有效的算法。插入排序在伪代码过程将其命名为INSERTION-SORT其中的一个参数是一个数组A[1…n]...原创 2019-09-30 22:52:31 · 381 阅读 · 0 评论 -
第一章 算法在计算中的作用
1.1 算法算法:非形式的说,算法就是任何良定义的计算过程,该过程取某个值或值的集合作为输入并产生某个值或值的集合作为输出。以排序问题为例:输入:n个数的一个序列<a1,a2,…,an>。输出:输入序列的一个排列<a1’,a2’,…,an’>,满足a1’≤a2’≤…≤an’。给定输入序列<31,41,59,26,41,58>,这称为排序问题的一个...原创 2019-09-29 20:35:05 · 114 阅读 · 0 评论