算法复习总结

第一章

算法设计应满足以下几条目标:正确性 可使用性 可读性 健壮性  高效率与低存储量需求。

算法具有以下5个重要特征: 有限性 确定性 可行性 输入性 输出性。

算法分析的两个主要方面是分析算法的时间复杂度和 空间复杂度。

渐进符号(O、Ω和Θ):

定义1(大O符号),f(n)=O(g(n))(读作“f(n)是g(n)的大 O”)当且仅当存在正常量c和n0,使当n≥n0时,f(n)≤cg(n),即 g(n)为f(n)的上界。

4ca9fdf3970749fcbc681a241e295676.png

 eccde1bdf4424e9fadba13a0578b674b.png

 

定义2(大Ω符号),f(n)= Ω(g(n))(读作“f(n)是g(n) 的大Ω”)当且仅当存在正常量c和n0,使当n≥n0时, f(n)≥cg(n),即g(n)为f(n)的下界。

c522a040dd034f42b8d80e44174dfae1.png

 

定义3(大Θ符号),f(n)= Θ(g(n))(读作“f(n)是g(n) 的大Θ”)当且仅当存在正常量c1、c2和n0,使当n≥n0时,有 c1g(n)≤f(n)≤c2g(n),即g(n)与f(n)的同阶。

 

20c42cc1dc8f482d942272f73c05eaf5.png

 

22ef1d7cc8a14dea89efcb85ee3cbafb.png

 

第二章

758ad76e5fb347da9531707a602dd3c8.png

 21502ca1db7a452d9f38d448e3f76cf7.png

 de11bbf025084f4993b6cd353aa92606.png

 41b26d584c8948e6b9989863c422283b.png

 1783f0eda975411fbf3ac679a0553f75.png

 7e3ae7de61744a61a160af75d99b85cf.png

 dad6d2ca39df4dbf894553801e38b55c.png

 06ee757d6b5c4080910086cb24f4e157.png

 bc53a4fab51d4a7889725e9a2a6b45a7.png

 求解n皇后问题:【问题描述】在n×n的方格棋盘上,放置n个皇后,要求每个皇后 不同行、不同列、不同左右对角线。如下图所示是6皇后问题的一个解。

7d42ca9e71ce459599645c4aa746bc4b.png

 

7260145a67a145059bc61a9e5218a5ae.png

 1c38325856374b53b4d81dda4c39113f.png

 d4e16fd957ec40f692021d5104e1d7c7.png

 **226b7fa6746e45ef9748d2b2fc4254f5.png

 

第三章 分治法

 432db22ee44f40f1aaea3661b14b0180.png

 fb7fee8efe5c4e5d803715c4d508e086.png

 8e5cc713bdf94d0aaa794dabbb997d2a.png

 034743b5e17047f4ae334468544ad602.png

 54e2abc53d45477bb913f9e916b01510.png

 320723eaf0fd404bb0e5b68b4047e652.png

 a9f3d107565f4c4d9dadbc7c41a37956.png

 bff90b417c3d47c38145ddfaf3ab2de6.png

 d4919e514be545ee8b7a87d14e85b4bc.png

 bf5cdb9143c94b71994e622c5d0c2a12.png

T(n)=O(nlog2n)

采用分治法求最大 元素max1和次大元素max2:T(n)=O(n)

1481297e43ae44f6a79ce7505e8f7ba4.png

 edc225c59bb34eb0a8db009b7bb51107.png

 db20d78f662541c6bc1947f3280e27e7.png

 求这个序列中 第k(1≤k≤n)小的元素,求给定的两个有序序列的中位数,求出其中最 大连续子序列的和,棋盘覆盖,循环日程安排问题,矩阵乘法问题:用分治来做。

设求解序列a[0..n-1]最大连续子序列和的执行时间 为T(n)=O(nlog2n)

fe6eb779f5744f69b0e9ac0597b50ca7.png

 T(n)=O(n)

计算 n 次幂每次递归调用,问题规模从n缩减到n/2,可以推导出T(n)=O(log2n)。

311c16a2280f459190e711839db3e67e.png

 

 第五章 回溯法

一个复杂问题的解决方案是由若干个小的决策步骤组成的决策序列, 解决一个问题的所有可能的决策序列构成该问题的解空间。

1e7f3bda3ea044b9a2dbf9db25692179.png

 02cc8122c15d4cb88c99333bef3eb924.png

 aadbc232ce6b4c46a7a0bd970396b4e1.png

 aa8d8505c04942c5905aac5b1eabd463.png

 回溯法 = 深度优先搜索 + 剪枝

回溯法可以用递归也可以非递归

2319abdbc5504a969dfcb2e159d24a80.png

 4d1aa92a8a974f77982a9511a5cbb5c7.png

 486a7c0101cd45ada91b522e72f04824.png

 576a706f5194436bbefd870a5973ecc7.png

c415ea5042c94d59aa25f3afbf2abe28.png

 c88bfe188a20475c8ac5a2c8807d7614.png

 b0316b6a7b55470293ce35c7581c2d27.png

cba40b331cc943548d20000800d629c2.png 对应的算法时间复杂度为O(n ^n)

该算法中每个顶点试探1~m种着色,共n个顶点, 对应解空间树是一棵m叉树(子集树),算法的时间复杂度为O(m n)。

6718078305e94d82969017bbc4f3ac2a.png

 

 第六章 分支限界

94a9dfbef8ff487287c7891ff1b50c7a.png

 692a9dd28f044cb7b809a6638cba68d5.png 

 

第七章  贪心法

所谓贪心选择性质是指所求问题的整体最优解可以通过一系列 局部最优的选择,即贪心选择来达到。

如果一个问题的最优解包含其子问题的最优解,则称此问题具有 最优子结构性质。 问题的最优子结构性质是该问题可用动态规划算法或贪心法求解 的关键特征。

活动安排问题,用贪心最好。

9919f96fd5bf414394ffa197c76c9522.png

 算法的时间复杂度为O(nlog2n)。

0/1背包问题贪心策略可能无效!需要用动态规划来解

f94dad618d7b4002aee44229ed73c331.png

 925c7f3ed4ff4f65bf2906d18fdda469.png

 96a2e76cca58415c88eedecf31683165.png

 80f00b1b84a2413787cdf1bea43061bf.png

 时间复杂 度为O(nlog2n)

 

 

第8章 动态规划

a678ccec805b4b17b955c13b160371bb.png

 9722b470318b49d0b65f1d0579ef2073.png

 0e5e228b27034a40b2ab34feebc388d8.png

b7d1f9f51eb0492e8a6f5d4e3aad8ea2.png 

e4d8645c26e54756885d961c077f57ca.png 

 1d36ba7b30d3405aabb056ed88482de6.png

 5026ed4547a94d9b96e3ad13f0926e60.png

 分治法各个子问题是独立的,动态规划的子问题是重叠的。

动态规划方法又和贪心法有些相似,在动态规划中,可将一个问 题的解决方案视为一系列决策的结果。

贪心可以用动态规划做,反之不行。

29e9bcc2f1244dd287320ef4a94aa0ab.png

0507554c73a3433f9baf31855c50e717.png 4c68838937954140b74e456aaff513e6.png

 

 853a66553f0b46e8a44736cf0411c638.png

 8e4c96b517df4ab780d7c031c6a5b43e.png

 5502da030bf046dcbd1d4b64ce0aef7a.png

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值