|
|
51CTO旗下网站
|
|
移动端

1.2.5 证明的方法

《数据结构与算法分析:Java语言描述(原书第3版)》第1章引论,在这一章, 我们阐述本书的目的和目标并简要复习离散数学以及程序设计的一些概念。本节为大家介绍证明的方法。

作者:冯舜玺/陈越 译来源:机械工业出版社|2016-04-13 10:36

1.2.5 证明的方法

证明数据结构分析中的结论的两种最常用的方法是归纳法证明和反证法证明(偶尔也被迫用到只有教授们才使用的证明)。证明一个定理不成立的最好的方法是举出一个反例。

归纳法证明

由归纳法进行的证明有两个标准的部分。第一步是证明基准情形(base case), 就是确定定理对于某个(某些)小的(通常是退化的)值的正确性; 这一步几乎总是很简单的。接着, 进行归纳假设(inductive hypothesis)。一般说来, 它指的是假设定理对直到某个有限数k的所有的情况都是成立的。然后使用这个假设证明定理对下一个值(通常是k+1)也是成立的。至此定理得证(在k是有限的情形下)。

作为一个例子, 我们证明斐波那契数, F0=1,F1=1,F2=2,F3=3,F4=5,…,Fi=Fi-1+Fi-2,  满足对i≥1,  有Fi<(5/3)i(有些定义规定F0=0, 这只不过将该级数做了一次平移)。为了证明这个不等式, 我们首先验证定理对简单的情形成立。容易验证F1=1<5/3及F2=2<25/9, 这就证明了基准情形。假设定理对于i=1,2,…, k成立, 这就是归纳假设。为了证明定理, 我们需要证明Fk+1<(5/3)k+1。根据定义得到

证明:

用数学归纳法证明。对于基准情形, 容易看到, 当N=1时定理成立。对于归纳假设, 设定理对1≤k≤N成立。我们将在该假设下证明定理对于N+1也是成立的。我们有

应用归纳假设得到

因此

定理得证。

通过反例证明

公式Fk≤k2 不成立。证明这个结论的最容易的方法就是计算F11=144>112。

反证法证明

反证法证明是通过假设定理不成立,  然后证明该假设导致某个已知的性质不成立, 从而原假设是错误的。7一个经典的例子是证明存在无穷多个素数。为了证明这个结论, 我们假设定理不成立。于是, 存在某个最大的素数Pk。令P1,P2,…,Pk是依序排列的所有素数并考虑

显然, N是比Pk大的数, 根据假设N不是素数。可是, P1,P2,…,Pk都不能整除N, 因为除得的结果总有余数1。这就产生一个矛盾, 因为每一个整数或者是素数, 或者是素数的乘积。因此, Pk是最大素数的原假设是不成立的, 这正意味着定理成立。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:342347198

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

网管员必读—超级网管经验谈(第2版)

本书的第1版获得过“2006年度全行业优秀畅销品种奖”。全书共15章,分别介绍了网管员职责和应具备的工作习惯、共享上网与访问控制方法、子...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊