《计算机科学中的数学》学习笔记(05 归纳法)

书本信息:

作者: [美] Eric Lehman / [美] F. Thomson Leighton / [美] Albert R. Meyer
出版社: 电子工业出版社
出品方: 博文视点
副标题: 信息与智能时代的必修课
原作名: Mathematics for Computer Science

05 归纳法


数学归纳法是一种证明方法,它基于非负整数的有序性和无穷性、常用于证明涉及非负整数的命题。

1、一般归纳法(Ordinary Induction)

1.1 一般归纳法的规则

设P是一个定义在非负整数上的谓词。如果满足以下两个条件:

  1. P(0)为真;
  2. 对所有的非负整数n,P(n)蕴含P(n+1);

那么,对所有的非负整数m,P(m)都为真。
也可以写作:
{ P ( 0 )  是真的 , ∀ n ∈ N . P ( n )    ⟹    P ( n + 1 ) ∴ ∀ m ∈ N . P ( m )  是真的 \begin{cases} P(0) \text{ 是真的} ,\forall n \in \mathbb{N}. P(n) \implies P(n+1) \\ \therefore \forall m \in \mathbb{N}. P(m) \text{ 是真的} \end{cases} {P(0) 是真的,nN.P(n)P(n+1)mN.P(m) 是真的

1.2 举例说明

例如,我们想要证明以下等式对所有的非负整数n都成立:

1 + 2 + 3 + … + n = n ( n + 1 ) 2 1 + 2 + 3 + \ldots + n = \frac{n(n+1)}{2} 1+2+3++n=2n(n+1)

我们可以使用数学归纳法来证明:

  • 当 n=0 时,等式左边为 0,右边也为 0,所以等式成立。
  • 假设当 n=k 时,等式成立,即:

1 + 2 + 3 + … + k = k ( k + 1 ) 2 1 + 2 + 3 + \ldots + k = \frac{k(k+1)}{2} 1+2+3++k=2k(k+1)

然后证明当 n=k+1 时,等式也成立:

1 + 2 + 3 + … + k + ( k + 1 ) = k ( k + 1 ) 2 + k + 1 = ( k + 1 ) ( ( k + 1 ) + 1 ) 2 1 + 2 + 3 + \ldots + k + (k+1) = \frac{k(k+1)}{2} + k +1 = \frac{(k+1)((k+1)+1)}{2} 1+2+3++k+(k+1)=2k(k+1)+k+1=2(k+1)((k+1)+1)

所以对所有的非负整数n,这个等式都成立。

1.3 归纳法证明的模板

归纳法证明的模板包含五个主要部分:

  1. 声明使用归纳法进行证明 :直截了当地陈述证明的整体结构,有助于读者理解你的论证思路。
  2. 定义适当的谓词P(n) :谓词P(n)被称为归纳假设( induction hypothesis)。归纳法的最终结论是,对于所有非负整数n,P(n)都为真。清晰地陈述归纳假设通常是归纳证明最重要的部分。
  3. 证明P(0)是真的 :这部分证明被称为基础情况(base case)或基础步骤(base step)。
  4. 证明对于每一个非负整数n,P(n)蕴含P(n+1) :这被称为归纳步骤(inductive step)。基本思路总是相同的:假设P(n)是真的,然后使用这个假设来证明P(n+1)是真的。
  5. 得出结论 :鉴于这些事实,得出结论:P(n)对所有非负整数n都为真。

1.4 一般归纳法的简洁写法

一般归纳法(Ordinary Induction)的简洁写法包含两个步骤:

  1. 基础步骤(Base Step):证明当n等于起始值(通常是0或1)时,命题成立。
  2. 归纳步骤(Inductive Step):假设该属性对于某个非负整数k成立,然后证明该属性对于k+1也成立。

如果这两个步骤都被成功证明,那么我们就可以得出结论:该属性对于所有非负整数n都成立。

1.5 更复杂的例子

当归纳证明无法进行时,使用更强的归纳假设(蕴含原来的假设)通常是一个好的选择。前提是,更强的假设必须是真实的;否则,构建有效证明的希望就不大了。

1.6 错误的归纳证明

使用归纳证明时,应当确保逻辑链条的完整性。

2、强归纳法

强归纳法(Strong Induction)是一种数学归纳法的变体,也被称为完全归纳法(Complete Induction)。

在普通的数学归纳法中,我们假设命题对于某个特定的非负整数k成立,然后证明它对于k+1也成立,如果此时无法直接得出它对于k+1也成立,可以尝试使用强归纳法,假设命题对于所有小于或等于k的非负整数都成立,然后证明它对于k+1也成立。

2.1 强归纳法的规则

设P是一个定义在非负整数上的谓词。如果满足以下两个条件:

  1. P(0)为真;
  2. 对所有的非负整数n,P(0)、P(1)、…、P(n)共同蕴含P(n+1);

那么,对所有的非负整数m,P(m)都为真。
也可以写作:
{ P ( 0 )  是真的 , [ ∀ k ≤ n ∈ N ] . P ( k )    ⟹    P ( n + 1 ) ∴ ∀ m ∈ N . P ( m )  是真的 \begin{cases} P(0) \text{ 是真的} ,[\forall k≤n \in \mathbb{N}]. P(k) \implies P(n+1) \\ \therefore \forall m \in \mathbb{N}. P(m) \text{ 是真的} \end{cases} {P(0) 是真的,[knN].P(k)P(n+1)mN.P(m) 是真的

2.2 斐波那契数列

斐波那契数列是这样定义的:第0项是0(在计算机科学中习惯将初始项称为第0项),第1项是1,之后的每一项都是前两项的和,可以定义为:
{ F ( 0 ) : : = 0 F ( 1 ) : : = 1 F ( n ) : : = F ( n − 1 ) + F ( n − 2 ) 其中 n ≥ 2 \begin{cases} F(0) ::= 0 \\ F(1) ::= 1 \\ F(n) ::= F(n-1) + F(n-2) & \text{其中} n ≥ 2 \end{cases} F(0)::=0F(1)::=1F(n)::=F(n1)+F(n2)其中n2
它的前几项是前几项是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …

斐波那契数列在自然界的许多地方都有出现,包括植物的叶子排列、菠菜的螺旋、甚至是银河系的形状。

斐波那契数列的几个有趣的性质:

  1. 黄金分割比:斐波那契数列中任意两个相邻数的比值在n趋向无穷大时,将会接近黄金分割比,约为1.61803。用数学语言表示,这可以写成:
    lim ⁡ n → ∞ F ( n + 1 ) F ( n ) = ϕ ≈ 1.61803 \lim_{{n \to \infty}} \frac{{F(n+1)}}{{F(n)}} = \phi \approx 1.61803 nlimF(n)F(n+1)=ϕ1.61803

  2. 斐波那契恒等式:斐波那契数列的平方数的和等于两个斐波那契数的乘积。用数学语言表示,这可以写成:
    F ( n ) 2 + F ( n + 1 ) 2 = F ( 2 n + 1 ) F(n) ^ 2 + F(n+1) ^ 2 = F(2n+1) F(n)2+F(n+1)2=F(2n+1)

  3. 斐波那契数列的和:斐波那契数列的前n项之和等于第n+2项减1。用数学语言表示,这可以写成:
    ∑ i = 0 n F ( i ) = F ( n + 2 ) − 1 \sum_{{i=0}}^{n} F(i) = F(n+2) - 1 i=0nF(i)=F(n+2)1

  4. 偶数位斐波那契数:每隔三个数,斐波那契数列中就会出现一个偶数。也就是说,F(n) 是偶数当且仅当 n 能被 3 整除。

  5. 斐波那契数列和欧几里得算法:如果取两个连续的斐波那契数作为欧几里得算法的输入,那么算法的步骤数将等于较小的那个斐波那契数。

  6. 斐波那契数列和帕斯卡三角形:如果沿着帕斯卡三角形的"斜边"加起来,会得到斐波那契数列。

  7. 斐波那契数列和黄金矩形:如果画一个由斐波那契数决定的矩形螺旋,会得到一个黄金矩形。

  8. 斐波那契数列和黄金螺旋:斐波那契数列可以用来生成黄金螺旋,这是一个在自然界中常见的形状,如飓风、银河系、菠菜叶等。

本书中采用强归纳法证明了斐波那契数列的上述第4条性质,即斐波那契数的奇偶性每隔三个数循环重复。书中的证明过程所采用的描述方式容易让人误解,不仅是翻译的问题,原版书中的描述也是如此,比如这一句:
“Now it is easy to verify that for all integers k,m, m + k is even IFF [m is even IFF k is even]”

这个表达式可以分解为两部分来理解:

  1. “m + k is even”:这是说m和k的和是偶数。
  2. “m is even IFF k is even”:这是说m是偶数当且仅当k是偶数。也就是说,m和k的奇偶性相同。

所以,整个表达式的意思是:m和k的和是偶数当且仅当m和k的奇偶性相同。

2.3 质数的乘积

书中采用强归纳法再次证明了质因数分解定理,即“每个大于1的正整数都可以表示成质数的乘积”。

  1. 基础步骤(Base Step):对于 n = 2,这是一个质数,所以它可以表示为质数的乘积(就是它自己)。

  2. 归纳步骤(Inductive Step):假设所有小于或等于 k 的正整数都可以表示为质数的乘积。我们需要证明 n = k + 1 也可以表示为质数的乘积。

  • 如果 k + 1 是质数,那么它可以表示为质数的乘积(就是它自己)。
  • 如果 k + 1 不是质数,那么它可以表示为两个正整数的乘积,即 k + 1 = a * b,其中 a 和 b 都小于 k + 1,也就是说a 和 b都是小于或等于 k 的正整数。根据归纳假设,a 和 b 都可以表示为质数的乘积,所以 k + 1 = a * b 也可以表示为质数的乘积。

所以,就证明了每个大于1的正整数都可以表示为质数的乘积。

2.4 找零问题

书中采用强归纳法证明了一个有趣的命题,“使用面值为3元和面值为5元的硬币,可以组合出任意不小于8元的金额”即“通过任意数量的3和任意数量的5相加,便可以得到不小于8的任意正整数”:

归纳假设 P(n) 是:存在一组硬币,其总价值为 n + 8 元。

归纳证明:

  1. 基础步骤:P(0) 是成立的,因为一个3元的硬币和一个5元的硬币可以组合出8元。
  2. 归纳步骤:假设 P(k) 对所有的 k ≤ n 都成立,并证明 P(n+1) 成立。通过以下几种情况进行论证:
  • 情况1(n + 1 = 1):我们需要组合出 (n + 1) + 8 = 9元。我们可以使用三个3元的硬币来实现。
  • 情况2(n + 1 = 2):我们需要组合出 (n + 1) + 8 = 10元。我们可以使用两个5元的硬币来实现。
  • 情况3(n + 1 ≥ 3):此时 0 ≤ n - 2 ≤ n,根据强归纳假设,可以组合出 (n - 2) + 8元。现在再加上一个3元的硬币,就可以组合出 (n + 1) + 8元,所以在这种情况下 P(n + 1) 是成立的。

由于 n ≥ 0,我们知道 n + 1 ≥ 1,因此这三种情况覆盖了所有可能的情况。由于在每种情况下 P(n + 1) 都是成立的,我们可以通过强归纳法得出,对于所有的 n ≥ 0,都可以组合出 n + 8 元。也就是说,可以组合出任意不小于8元的金额。

2.5 堆盒子游戏

书中介绍了一个堆盒子游戏:有一个由n个盒子组成的堆。然后你进行一系列分堆操作。在每一次操作中,你将一个盒子堆分成两个非空的盒子堆。当你得到n个堆,每个堆都只包含一个盒子时,游戏结束。你每进行一次分堆操作就会得到相应的分数,得分的规则是:如果你将一堆盒子分成两堆,分别包含a个盒子和b个盒子,那么你将得到a×b分。你的总分是你每次操作得到的分数的总和。你应该使用什么策略来最大化你的总分?

答案有点出人意料:无论你采用什么策略,最终你的分数都将是n(n-1)/2。

书中采用强归纳法来证明这个答案:
首先,定义 P(n) 为“无论如何分 n 个盒子,得分总是 n(n-1)/2”。

  1. 基础步骤:如果 n = 1,那么没有可以移动的盒子,所以总得分是 1(1-1)/2 = 0。所以 P(1) 是正确的。
  2. 归纳步骤:我们假设 P(1), P(2), …, P(n) 都是正确的,然后我们要证明 P(n+1) 也是正确的。假设我们有 n+1 个箱子,我们的第一步是将这些箱子分成两堆,一堆有 a 个箱子,另一堆有 b 个箱子,其中 a + b = n + 1,且 0 < a, b ≤ n。那么,游戏的总得分是第一步的得分加上分解 a 个箱子和 b 个箱子的得分:
总得分 = (第一步得分) + (分解 a 个箱子的得分) + (分解 b 个箱子的得分)
= ab + a(a-1)/2 + b(b-1)/2 (根据 P(a) 和 P(b))
= (a+b)(a+b-1)/2
= (n+1)n/2

这就证明了 P(n+1) 是正确的。因此,可以得出结论:无论如何分盒子,总得分都是 n(n-1)/2。

使用强归纳法证明这个答案是容易的,但是当我们还不知道这个答案的时候,该如何来找到这个答案呢?好像只能从少量盒子的情况开始慢慢尝试,然后推测出最终的得分规律了。

3、强归纳法、一般归纳法和良序法的比较

这三种证明方法实际上只是呈现相同数学推理的不同格式。每种方法都有其优点和适用的场景。归纳法证明通常更清晰,不需要通过反证法来证明,而良序原理则可能更简短,对初学者来说更自然。

虽然强归纳法在形式上看起来比普通归纳法更强大(因为它允许我们在归纳步骤中假设更多的情况),但在实质上,两者的证明能力是一样的。这是因为任何使用强归纳法的证明都可以被转化为使用普通归纳法的证明。

这种转化的方式是在归纳假设中添加一个全称量词(Universal Quantifier,通常用符号 “∀” 表示,用于表示一个命题对于所有满足某种条件的元素都成立)。在普通归纳法中,我们假设命题对于某个特定的 k 成立,然后证明它对于 k+1 也成立。而在强归纳法中,我们假设命题对于所有小于或等于 k 的正整数都成立,然后证明它对于 k+1 也成立。这个“所有小于或等于 k 的正整数都成立”的假设,就是通过在归纳假设中添加全称量词实现的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值