MIT6.042学习笔记(一)——强归纳法,数论(1)

如果学生在学校里学习的结果是使自己什么也不会创造,那他的一生永远是模仿和抄袭。——列夫·托尔斯泰

引言

MIT6.042(计算机科学中的数学)是MIT 的离散数学以及概率综合课程,导师是大名鼎鼎的 Tom Leighton ( Akamai 的联合创始人之一)。学完之后对于后续的算法学习大有裨益。

强归纳法

我们平时常用的归纳法证明分为两步(假设Pn表示变量为n时命题成立):

  • 第一步:考虑基准情况,一般是P0或P1
  • 第二步:假设Pn成立,证明Pn+1成立。

强归纳法与归纳法类似,它也分为两步:

  • 第一步:与归纳法相同,考虑基准情况。
  • 第二步:假设P0,P1,…,Pn都成立,证明Pn+1成立。

举个例子来说明强归纳法的应用。

例题:拆积木游戏

每次将叠在一起的多块积木拆成两叠,得到的分数为两叠积木的数量乘积。例如:
在这里插入图片描述
在第一次拆分时,将叠在一起的8块积木拆分成5块的一叠和3块的一叠,得到53=15分;第二次拆分时,将5块的一叠拆分成4块和1块,得到41=4分…如此重复,直到分成八叠一块的积木,分无可分为止,将每次拆分得到的分数相加,就是最后得到的分数。
尝试不同的拆分8块积木的方式,你会发现最后得到的分数都相同。扩展这一特例,我们可以证明:用所有方式拆分n块积木,最后得到的分数都相同。

证明

我们可以用强归纳法来证明。首先,我们需要猜测Pn等于多少。列举P1,P2,P3等例子,我们猜测Pn=n(n-1)/2。(注意:这里有一个强化归纳假设的技巧,我们可以通过证明更强、更明确的归纳假设来证明想要证明的命题),于是,我们转而证明拆分n块积木会得到n(n-1)/2分。

  1. 基准情况:P0已经计算过,满足命题。
  2. 归纳步骤:如果P1,P2,…,Pn都成立,那么证明Pn+1成立。
    在这里插入图片描述
    如图所示,不失一般性地,可以将n+1块积木拆成K块积木和n+1-K块积木。那么:
  • Pn+1
  • =K(n+1-K)+PK(拆分K块积木最后能得到的总分数)+Pn+1-K(拆分n+1-K块积木得到的总分数)
  • =K(n+1-K)+K(K-1)/2+(n+1-K)(n-K)/2
  • =(n+1)n/2 □(这个符号代表证明结束)

总结:当推导Pn+1时不仅需要Pn,Pn-1,也需要从P0到Pn的不确定值时,就需要用强归纳法来证明。

数论(第一节)

整除运算

定义:如果m能整除a,则我们说m|a(注意,和正常除法的顺序相反)。

例题:取水

证明:用一个A加仑的水箱和一个B加仑的水箱量出指定加仑的水,则我们能准确量出的水的加仑数不大于A或B且拥有A和B的最大公约数作为约数。

证明

设A和B的最大公约数为m,我们用(x,y)来表示两个水箱中分别存储的水,则我们需要证明m|x且m|y。我们用归纳法来证明:

  • 基准情况:一开始水箱中没有水,即(0,0),显然符合命题。
  • 归纳步骤:设n步后水箱中为(x,y)符合命题,那么n+1步后可能有如下几种情况:

(0,y)、(x,0)、(a,y)、(a,b)、(x,b)
当x+y<=b时,可以到达(0,x+y)
当x+y<=a时,可以到达(x+y,0)
当x+y>=b时,可以到达(x+y-b,b)
当x+y>=a时,可以到达(a,x+y-a)

不难证明这些情况都拥有m这个约数。□

公约数

定义:A和B的最大公约数称为gcd(A,B)

例题

证明定理:用上面的两个水箱可以量出所有不大于A和B且能被A和B线性变换得到的数。

证明

我们直接给出满足上述定理的算法(不失一般性地,假设A<B):

  • 装满A加仑的水箱
  • 将A水箱中的水加入B水箱
  • 如果B水箱被装满了,倒掉B中的水,返回第2步
  • 如果没有得到想要的加仑数,返回第1步

接下来我们证明这个算法:

在这个算法中,假设我们充满m次A加仑水箱,倒掉n次B加仑水箱,得到r加仑水,则r=mA-nB。设L=mA+qB,那么
r=mA+qB-qB-nB=L-(q+n)B。由于r和L都是正数且小于B,因此q+n=0,所以q=-n,所以r=L。所以这个算法可以得到任意的线性变换。□

Eucild算法

定理:gcd(A,B)=gcd(rem(B,A),A)(rem(B,A)指B和A的余数)。该定理用于求最大公约数。
定理:A和B的最大公约数同时也是A和B的最小正数线性变换。
请添加图片描述
我是霜_哀,在算法之路上努力前行的一位萌新,感谢你的阅读!如果觉得好的话,可以关注一下,我会在将来带来更多更全面的知识讲解!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霜_哀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值