离散数学-数学归纳法(1)

数学归纳法是一种证明技术,除了在数学领域中有很大作用外。在编程领域中,也常常使用它的某种变体来证明算法的正确性(在算导里面就多次用到该技术,来证明各种算法,特别是一些比较复杂的图算法的正确性)

个人感觉,学习数学归纳法以及经过一段时间的练习后,可以非常自然的把一些算法,看成数学归纳法中的几个组成块,大大减少了写算法时出错概率(特别是相对复杂的算法,不好直接看出因果的),而且知道了如何推导算法的正确性之后,对算法的本质也有更深的理解(特别是对于各种树,图算法)。

数学归纳法是基于以下逻辑推理(虽然里面包含的是数字,但是可以推广到更多情况下)
这里写图片描述
简单来说,就是当满足某种初始状态,同时可以从初始状态移动到下一个邻接状态,可以从初始状态到达任意一个状态。

来看一个梯子问题
这里写图片描述
此时,我们可以到达梯子的第一个阶梯(初始状态),同时我们可以从任意一个阶梯,移动到下一个阶梯(状态转移),最终可以推论出,我们可以从初始阶梯到达任意一个阶梯

数学归纳法的优缺点

数学归纳法的优点是他用途相当广泛,而且很多时候用起来相当简单,从证明数学定理到算法的正确性,以及用来证明一些逻辑的正确性(例如上面那个梯子问题)。
缺点是数学归纳法只能证明某个已经构造好的猜想或者定理的正确性,而不能用来发现新的定理,而且使用他来证明猜想,难以带来新的启发。
对编程领域来说,就是数学归纳法可以让我们更容易理解一些已经被公认为正确的算法,知道它是怎么工作的,不过如果我们想创造一类新的算法,那数学归纳法不能带来多少启发。

例子

下面这个书里的例子很有意思,非常精髓的说明了数学归纳法求解某类问题有多方便,此问题用其他方式难以求解,或者会异常麻烦
这里写图片描述
这里写图片描述
更多请参考《离散数学及其应用》


欢迎关注我的github
https://github.com/luckyCatMiao

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值