2024.4.7 算法设计与分析 复习 数学基础

这个笔记用于我本人的复习,所以引用了很多东西。如果被侵权了请联系我,我会删掉,谢谢。:-)

写这个笔记,根本目的是希望我能养成做有效笔记的习惯,帮助我提高学习的效率。除此之外,我还希望能借由这个渠道来锻炼我书面表达的能力(因为发现上了大学之后越来越不会写文章了,偏偏又还有一堆文章要写 :-(  )以及提取信息的能力。

说实话,不知道我能坚持多久,但是我还是希望我能一直坚持下去。

今天来谈谈关于算法设计的那些数学基础:

高低阶函数(上界和下界)

以下各项的从左到右逐渐递增:

同阶函数定义:

证明同阶函数的例子:

而要反正不是同阶函数也比较简单,使用反证法即可。

低阶函数定义:

 关于渐进上界(O)与渐进紧界(Θ,读音西塔)之间的关系:

 这里初次提到了多项式界限的概念。

高阶函数集合:

 

这里有一个易错点,O表示低阶函数集合,O表示的为渐进上界,可以理解为g为f的上界;相对的,高阶函数集合Ω(欧米伽)即为渐进下界,当然也可以理解为g为f的下界。

下面这个定义很重要,是个充要条件:

这里有以下对Ω的使用规范:

 在这里,n就是一个下界,所以任何情况都是要比n大的。

接下来定义严格高低阶函数,注意它们之间的区别:除了≥和≤被换成了>和<之外,严格高低阶函数还要求对任意正常数c,而非严格情况下我们只要能找到一个c就可以了。

从下面的证明可以看出:

再往下看之前,你可以先思考一下小o、大O和θ之间的关系如何。

如下:可以说小o表示了一种“不紧的上界”

下面是一个比较常见的定义:

下面是严格高阶函数的定义:

 

对于这个ω(这个也叫欧米伽,不过是小写的),根据前面的知识,我们知道它表示了一种“不紧的下界”。

对于ω,上面的那个极限也从0变成了无穷。

从上面我们可以看出,符合等价关系的只有θ了。

级数

以下这些级数知识需要我们记一记,也许你还记得你曾经在微积分课上和他们见过面:

 

(其实这第一个式子就是你求等比数列之和公式的原理,眼熟吗)

用数学归纳法来证明低阶函数,这里的3/2是最后一步才得到的,显然是先推后补的结果。

 

下面有一个易错案例。

这是一种错误的证明方法,我来谈谈我的理解:

这里是用到了数学归纳法。错误的原因在于最后那个部分:O(n)+(n+1)=O(n)。

按定义,前面的O(n)中一定包含一个c值。问题在于,这个c值是定下来的!f(n)≤cg(n)为真,不说明f(n)+n+1≤cg(n)亦为真。

所以注意,到了要证明的时候老老实实按定义就完事了。

下面这个证明用到了放缩,还有前面的级数知识。

训练一下,用上面的方法看看下面这两题:

 答案如下:

还有下面这些,但是我们可以记结论,毕竟这不是数学课。

上面那个结论的一些用法:

 递归方程

 下面这个递归方程是Merge-sort归并排序算法的复杂性方程,后面我们会经常用到。

一些定义:

求解递归方程的方法有三种:替换法、迭代法和Master引理

首先看看替换法的例子:

同样的,要证明是高阶函数而且一般猜想失败的时候,加上一个低阶项再试试看。

第二种方法是迭代法,就是循环地展开递归方程,最后看那个和式的结果是怎样的。

看例子:

顺带一提,还有一个变量替换的方法,经变量替换把递归方程变换为熟悉的方程。

 下面有两道替换法的习题,拿来练练手吧。

答案如下:

 

 注意到右上角那行小字没有,在递归方程的计算中,底数没影响的,因为lgn = log2(n)/log2(10)

还有一些非典型替换:

最后我们介绍master定理。

可以简化成下面的说法:

什么叫“多项式的大于”,举个例子,n^3比起n^2就是多项式的大于,但是n^2比起nlogn就不是多项式的大于。你可以认为多项式的大小于是指比较双方之间至少要有一个n的差距。

一些使用:

一些陷阱:

一些快速计算训练:

To be continued.

  • 23
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值