算法证明_算法分析与设计之基本概念

de8354fcc4d4c2e6e0e244446f83f722.png

这一节即将介绍算法分析与设计中的一些基本概念,包括算法的定义、算法的正确性证明、时间复杂度、空间复杂度以及相应的数学理论分析基础!

1.算法的定义

533606b9d03e4ac9413fb2d4bde08ac4.png

41c7e66f61a07aabbad2b4f4c89e9339.png

有意思的是,最早的算法是欧几里得的“求最大公因子算法”!

2.算法的正确性

b6d8ea66197dde5d71b94071330dd7dd.png

所以设计了一个算法后,怎么说明它是正确的呢?严格的话需要进行算法的正确性证明。

7643569a736405042551ed310a3e1b18.png

其实算法的正确性证明是一个很复杂的问题,很多算法的正确性证明特别复杂!通常一个很常用的证明方法叫做:循环不变量方法,这个方法通常用来证明主要结构是循环结构的算法的正确性证明上!

e87549da4e7de3cd1f00bdb8c221aed7.png

例如下面一个例子:证明插入排序算法的正确性。

f4830ff3ab5ace3b7c6bd52a5e968840.png

循环不变量是什么?

a1f939b14bf9b3d7bbbbb9025dad61ac.png

3. 算法的复杂性分析

一般会有时间复杂度空间复杂度

b2a9250fcc49584482781a5dcae4b877.png

ba72c01d7878e90b1d31463cf04c46a7.png

4. 计算复杂性的阶-同阶(

)、低阶(
)、高阶(
)

(1)同阶函数的定义:

9844f4a32f5b9fc2a505aa05a3528f6e.png

从定义中可以看到,要证明同阶的关系,就是要找到满足条件的

即可

49ebb9bc5db3119aa32dcb7f844e7d47.png

f6b5610926812cb81d72cf4e3afbad08.png

822dbb5bdd73c6f014179ab24fe2095d.png

(2)低阶函数的定义:

b8f8fca8a50220db8214538ad4654f46.png

从定义中可以看到,要证明低阶的关系,关键是要要找到满足条件的

.

93dd89ab6e49a65a11ddf0c7ab6d4177.png

5bdd4ff128a1fb601b057fadf84b253c.png

(3)高阶函数的定义

097809b2620a6cad86f78b335b9e4820.png

从定义中可以看到,要证明高阶的关系,关键是要要找到满足条件的

.

例子1:

cabbc2dd86010466a2b44a20a3662aa9.png

例子2:

6a9e49093a6f8b9d10f1235598734f1f.png

(4)严格低阶函数(

)的定义

1d22b57ffc2937ccb6f90d954ff12c09.png

要证明严格低阶的关系,只需找到满足恒等式条件

即可!

d97e437018fbd306696cba2cf1747401.png

46c9594bfbcec4789336829f7de5cb69.png

例3:

27c5ed1cc89ed619a74d5f7feb17a56a.png

(5)严格高阶函数(

)的定义

cf0c6fe1ac39bc4e89f16ae91681d464.png

由定义可知:

21ce5457755c95ea9db1638a87cce74b.png

同样的,

ca2d2f153960bd684854e0bd81f96712.png

c3a5085dc941d4f66bf664f7641d306f.png

(6)函数阶的性质

可以将函数阶与

类比,易知:

638976082fa8de798d77e133aa2db964.png

37200788f075fe2dd2624a54993d50a3.png

另外,有一些特殊的函数是没法比较的,例如:

88840439bb68c00b4c2b48672d279653.png

5. Floor和Ceiling函数

7d63b43db8cfb7ea64c4a8b0779b7886.png

它有一下性质:

9952d236856115006ca7354049102cc3.png

1e202fa8f0bf9f081acfd4542ae79561.png

6.和式的估计与界限

79631030a5bfcd73fb5168c2ecad4ed4.png

fd8a3a9625907989129a6dce2aeed4ef.png

9a2116bee747fee7f1db36860eb2a6a2.png

(1)直接求和的界限

d9d48f994c43480b9d82a16e9b85916d.png

6e73a152d5d5276883b1d65cfac48518.png

b949b51c6c0a2591347a811884185967.png

e16c14b071faad314a34582c41c801ef.png

ef694462f9c76c05bf7e1ae4428f9052.png

1a7555fa4f363460ca97bfce061313b0.png

(2)递归方程

991da8b4f22ff319062b32362aef6a75.png

求解递归方程的三个主要方法:

ec255382af796a5f05010eb9422ed317.png

a.迭代法

cd4b486e2aa88b0a24e7b963273a1deb.png

来看下面的例子:

7968c53ae0315c07f32e9bcfa8da2ad1.png

a61df6035378cf48944a38c18c141ca9.png

b. 替换法

c8bf0f197e6e5b0d41ff672c89541301.png

来看下面的例子:

0a1f5721e7d682f02335b5b15617129d.png

8e7d56102bf91012845c0fdecfad69be.png

还可以“先猜再证”:

815933451d537b728c5727c9195f3083.png

e472294fa17888b79972bcd16a97d665.png

a9f49a178b5149e65983733c4dff39db.png

例如下面的例子:

0998cba084e147523b4e031a7d1a8043.png

c.Master 定理

7359c5d3b7b80bac9b004138a5b84cd3.png

e725de41acf08a9b25f9958da6f5a706.png

直观的理解Master定理:

c60c72b1175c09a483cfd729ec72996f.png

所以为了应用Master定理,

26c52e3cfa4f215e8473a227123d8463.png

下面来看Master定理的几个例子:

7743ae77cea169b2399a159416e7878b.png

6790b71c5f2678da48b759fa9258b5c0.png

aa8194281b6696136cb8a04b658c7b0a.png

0896076619d2fcc5b9477c3b566421b4.png

(例4中

没有高出一个多项式!)

小结:至此,本小节讲解了算法分析与设计中的基本概念以及基本的数学知识,包括时间复杂度、空间复杂度,以及递归方程、Master定理等内容,这些知识对后面的算法分析与设计将会很有帮助!


参考资源:

【1】哈工大骆吉洲《算法分析与设计》PPT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值