计算机问题求解 – 论题2-4 - 分治法与递归 2018年03月28日.

Slides:



Advertisements
Similar presentations
2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
Advertisements

第八章 第四节 机动 目录 上页 下页 返回 结束 一个方程所确定的隐函数 及其导数 隐函数的微分法.
2.5 函数的微分 一、问题的提出 二、微分的定义 三、可微的条件 四、微分的几何意义 五、微分的求法 六、小结.
Course 1 演算法: 效率、分析與量級 Algorithms: Efficiency, Analysis, and Order
你知道嗎? 每年竟然有大約十萬個沒病、沒痛的人因為藥物的副作用死亡!  
2011年10月31日是一个令人警醒的日子,世界在10月31日迎来第70亿人口。当日凌晨,成为象征性的全球第70亿名成员之一的婴儿在菲律宾降生。 ?
6.9二元一次方程组的解法(2) 加减消元法 上虹中学 陶家骏.
中考阅读 复习备考交流 西安铁一中分校 向连吾.
分式的乘除.
中央广播电视大学开放教育 成本会计(补修)期末复习
《高等数学》(理学) 常数项级数的概念 袁安锋
Recurrences 給定T(n)=T(n/2) + O(n) 我們該如何得到 T(n) = O(nlogn)?
分治演算法 各個擊破獲得最後勝利 國立中央大學 資工系 江振瑞 教授.
人教版义务教育课程标准实验教科书 小学数学四年级上册第七单元《数学广角》 合理安排时间 248.
第一章 行列式 第五节 Cramer定理 设含有n 个未知量的n个方程构成的线性方程组为 (Ⅰ) 由未知数的系数组成的n阶行列式
§5.3 定积分的换元法 和分部积分法 一、 定积分的换元法 二、 定积分的分部积分法 三、 小结、作业.
第5章 定积分及其应用 基本要求 5.1 定积分的概念与性质 5.2 微积分基本公式 5.3 定积分的换元积分法与分部积分法
第三节 格林公式及其应用(2) 一、曲线积分与路径无关的定义 二、曲线积分与路径无关的条件 三、二元函数的全微分的求积 四、小结.
小学数学知识讲座 应用题.
探索三角形相似的条件(2).
初中数学八年级下册 (苏科版) 10.4 探索三角形 相似的条件(2).
倒装句之其他句式.
计算机问题求解 – 论题 算法的效率 2018年03月14日.
分治演算法 各個擊破獲得最後勝利 國立中央大學 資工系 江振瑞 教授.
第二章 矩阵(matrix) 第8次课.
第 1 章 演算法分析.
主讲人: 吕敏 { } Spring 2016,USTC 算法基础 主讲人: 吕敏 { } Spring 2016,USTC.
第2讲 绪论(二).
主讲人: 吕敏 } Spring 2012 ,USTC 算法基础 主讲人: 吕敏 } Spring 2012 ,USTC.
Lexicographical order VS canonical order
Cyclic Hanoi问题 李凯旭.
What have we learned?.
动态规划(Dynamic Programming)
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
人教版五年级数学上册第四单元 解方程(一) 马郎小学 陈伟.
Week 2: 程式設計概念與 演算法的效能評估
Lecture 6 Quicksort 本章的重點在介紹Quicksort的作法 然後給予時間複雜度的分析。
实数与向量的积.
顺序表的删除.
3.8.1 代数法计算终点误差 终点误差公式和终点误差图及其应用 3.8 酸碱滴定的终点误差
WPT MRC. WPT MRC 由题目引出的几个问题 1.做MRC-WPT的多了,与其他文章的区别是什么? 2.Charging Control的手段是什么? 3.Power Reigon是什么东西?
离散数学─归纳与递归 南京大学计算机科学与技术系
计算机问题求解 – 论题 算法方法 2016年11月28日.
解 简 易 方 程.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
講師:郭育倫 第2章 效能分析 講師:郭育倫
算法导论第一次习题课.
定理21.9(可满足性定理)设A是P(Y)的协调子集,则存在P(Y)的解释域U和项解释,使得赋值函数v(A){1}。
第16讲 相似矩阵与方阵的对角化 主要内容: 1.相似矩阵 2. 方阵的对角化.
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
数据集的抽取式摘要 程龚, 徐丹云.
第三章 函数的微分学 第二节 导数的四则运算法则 一、导数的四则运算 二、偏导数的求法.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
2.2矩阵的代数运算.
Divide and Conquer 3 Michael Tsai 2011/3/11.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
Open topic2: 大O( Θ ,Ω)和小o( θ ,ω)有什么区别? 3/19/18 黄秉焜
§2 方阵的特征值与特征向量.
平行四边形的面积.
异分母分数加、减法.
找 因 数.
Quicksort 本章的重點在介紹Quicksort的作法 然後給予時間複雜度的分析。.
插入排序的正确性证明 以及各种改进方法.
畢氏定理(百牛大祭)的故事 張美玲 製作 資料來源:探索數學的故事(凡異出版社).
第二次课后作业答案 函数式编程和逻辑式编程
一元一次方程的解法(-).
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
Cfc Zeilberger 算法 陈焕林 陈永川 付梅 臧经涛 2009年7月29日.
102年人事預算編列說明 邁向頂尖大學辦公室製作.
9.3多项式乘多项式.
Presentation transcript:

计算机问题求解 – 论题2-4 - 分治法与递归 2018年03月28日

Mergesort Revisited 问题1: 这个算法究竟是如何“排”序的?

Divide Conquer Conquer Combine 5 2 4 7 1 3 2 6 Divide 5 2 4 7 1 3 2 6 5 2 4 7 1 3 2 6 5 2 4 7 1 3 2 6 Divide Conquer Combine Divide Conquer Divide further, until…

问题2: 人的思维“分而治之” 如何变为算法策略的呢? 递归:如果分而后的“治”是同样的“治” 叠加:否则。

问题3: 如何考虑分治算法的代 价? 递归代价与非递归代价

导出递归式 两次递归,理想情况下每次问题规模是原来的一半。 非递归开销

cn log n 这里似乎假设n是2的整次幂,在我们涉及的大多数情况下,这不影响结果。 T(n/2) T(n/2) 确实比插入排序效率高。 递归算法的实际运行效率另行讨论。 这里似乎假设n是2的整次幂,在我们涉及的大多数情况下,这不影响结果。

更一般的情况是 请解释a,b,c的含义,D(n)和C(n)代表什么? “分”成了多少小问题:a 小问题的规模(通常规模是一样的):b

问题4: 书上的投资回报问题是怎样 被转化为最大子数组问题 的? We want to find a sequence of days over which the net change from the first day to the last is maximum.

Maximum subarray

最大投资回报问题:暴力解法 in O(n2) 下面的过程遍历的顺序为: (0,0), (0,1), …, (0,n-1); (1,1), (1,2), …, (1,n-1), …… (n-2,n-2), (n-2, n-1), (n-1,n-1) MaxSum = 0; for (i = 0; i < N; i++) { ThisSum = 0; for (j = i; j < N; j++) ThisSum += A[j]; if (ThisSum > MaxSum) MaxSum = ThisSum; } return MaxSum; the sequence i=0 i=1 j i=2 N个元素中任取两个元素子集,C(n,2) in O(n2) i=n-1

用分治法解最大子数组问题 问题5:跨中点的部分如何计算? Part 1 Part 2 the sub with largest sum may be in: recursion Part 1 Part 2 or: The largest is the result 从mid开始向左扫描到最左边:累加,判断累加后的值是否为最大,记录累加最大时的下标。 Part 1 Part 2 问题5:跨中点的部分如何计算?

O(n log n) 非递归代价:常量 递归,理想状况下问题规模是原来的一半。 非递归代价:线性 非递归代价:常量 T(n)=2T(n)+Θ(n)+c 非递归代价:常量 O(n log n)

矩阵乘法:似乎非得(n3)

问题:你能就以下这句话,说清楚Ω,Θ,О和o的区别吗? 不会比n3小 一定比n3小

1个n阶方阵相乘的问题可以分解为8个n/2阶方阵相乘的子问题。 N代表的是2维n矩阵,不是n个元素构成的二维矩阵 1个n阶方阵相乘的问题可以分解为8个n/2阶方阵相乘的子问题。

仍然是立方复杂度 问题6: 决定上面的递归代价 比较大的原因是什么? 因子8不能被“吞啮”掉

问题7: 你能否描述Strassen 方法的基本思想?

复杂的组合为了减少一次乘法 诸Si只需通过加减法计算

这个算法曾经引起轰动 问题8: 你对于这个结果是否有感性认 识?

问题: 两种算法性能的比较 8和7的区别本质上来说是什么 的区别? 经典矩阵相乘: Strassen算法 T(n)=8T(n/2)+Θ(n2) Strassen算法 T(n)=7T(n/2)+Θ(n2) 问题: 8和7的区别本质上来说是什么 的区别? 子问题个数的区别

问题9: 为什么降低子问题个数会导致复杂 度的阶下降?是一定的吗?

对应于 T(n)=T(n/2)+T(n/2)+n 的递归树 T(size) nonrecursive cost T(n) n T(n/4) n/4 T(n/2) n/2 所有节点的非递归开销的和就是算法的开销 树的“高度”和“胖度”决定了节点的多寡 在非递归开销不变的情况下,降低“高度”、缩小“胖度”

 

分治算法的复杂度分析和算法优化  

代入法解(隐式)递归公式 问题:什么叫解递归公式?(在算法分析范畴内) 找出其上界或者下界,或者紧致界

我们猜测解是:     将猜测代入: 验证我们的猜测是否是“合理的”,“可能的”  

证明:   回忆一下: Giving g:N→R+, then Ο(g) is the set of f:N→R+, such that for some cR+ and some n0N, f(n)cg(n) for all nn0. 必须找到合适的c和n0

证明: 奠基: n=1? 选择n0=2进行奠基 归纳:略 T(2)=2T(1)+2=4 当选定c=2时: cnlgn=2*2lg2=4   奠基: n=1? 选择n0=2进行奠基 T(2)=2T(1)+2=4 当选定c=2时: cnlgn=2*2lg2=4 归纳:略 本质上,我们只是找到了T(n)的一个上界nlgn,如果我们需要证明nlgn是T(n)的紧致界,还需做什么?

问题:T(n)的紧致界就是nlgn吗?我们还缺什么? 猜一个递归式的解,容易吗? 但是,如果我们猜测解是T(n)=O(n),会发生什么?得到什么结论? 将猜测代入:T(n)<=2cn/2+n =cn+n //任取c都不可能满足 T(n)<= cn 但是,如果我们猜测解是T(n)=O(n2),会发生什么?得到什么结论? 将猜测代入:T(n)<=2c(n/2)2+n =c/2n2+n //任取C>=2即可满足T(n)<=cn2 本质上,我们只是找到了T(n)的一个上界nlgn,如果我们需要证明nlgn是T(n)的紧致界,还需做什么?证明T(n)=Ω(nlgn) 问题:T(n)的紧致界就是nlgn吗?我们还缺什么?

T(n)=3T(n/4)+(n2) 递归树方法可以直观地帮助我们猜测结果 cn2 3T(n/4) c(¼ n)2 T(n/4)

T(n)=3T(n/4)+(n2) 递归树方法可以直观地 帮助我们猜测结果 Note: Total: (n2) cn2 cn2 log4n c(¼ n)2 c((1/16)n)2 …… …… … Note: T(1) Total: (n2)

分治法一般递归式的递归树分析 一般递归式: T(n) = aT(n/b) + f(n) 递归树扩展到第k层时:

T(n)=aT(n/b)+f(n) a个 a个 f(n) f(n) f(n/b) f(n/b) f(n/b) K=3 aT(n/b3)+f(n/b2) …… aT(n/b3)+f(n/b2) a和b的关系决定了树的“形状” F(n)到nlogba次幂,是递增、递减还是不变,决定了sum是什么量级

T(n)=aT(n/b)+f(n) a个 a个 当递归树扩张结束时: Note: Total ? f(n) f(n) f(n/b) logbn f(n/b2) f(n/b2) f(n/b2) f(n/b2) f(n/b2) f(n/b2) f(n/b2) f(n/b2) f(n/b2) …… …… a和b的关系决定了树的“形状” F(n)到nlogba次幂,是递增、递减还是不变,决定了sum是什么量级 … T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) … T(1) T(1) T(1) Note: Total ?

单纯从左式看,我们可以怎样思考得到它的简单形式? 问题:当我们将上式和如下递归表达式放在一起时,你能看出上式两个部分分别代表了分治算法中的什么开销吗? T(n)=aT(n/b)+f(n) 前者是解nlogba个小问题的开销,后者是分解logbn层问题以及合并logbn层解的开销。 从bigO的角度看,比较两者到底“谁的order高”成为关键。 提示:a代表了分治为几块;b代表每块的大小;f(n)代表了分解和合并的开销;其中还有一个隐含的T(1)代表了求解小问题的开销

令 直观上,我们可以“相信”这样一些结论: af(n/b)<=cf(n),将在分治过程中形成一个(小问题分解、小问题解合并)代价的几何递减序列,其综合代价将和f(n)相同阶。

分解综合开销和>原子问题求解开销和 Master定理 分解综合开销和 < 原子问题求解开销和 分解综合开销和 = 原子问题求解开销和 分解综合开销和>原子问题求解开销和 分解综合开销几何递减

Using Master Theorem

Using Master Theorem

问题10: 在比较两个函数大小时, 是什么意思? Polynomially larger / smaller ε必须存在!

Master定理的条件有空隙 T(n)=2T(n/2)+nlgn a=2, b=2, logba=1, f(n)=nlgn We have f(n)=(n1), but no >0 satisfies f(n)=(n1+), since lgn grows slower that n for any small positive . So, case 3 doesn’t apply. However, neither case 2 applies. 没有覆盖所有可能性! 1,Case1和3都必须满足多项式大(小):必须存在, 2,Case3的“分解综合开销”呈几何递减趋势!

Open Topics: 请证明master theorem 请介绍Akra-Bazzi method.这个方法是master方法的扩展,请解释:1,扩展表现在哪里?2,AB方法的使用案例;3,证明(if possible).