- 1、本文档共226页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
根据相关教材和网络资料制作,可作为授课教师的教学参考资料和从业人员、专业学生的学习资料。
目 录第1章 算法的概念 1.1 算法的概念和描述 1.2 算法的时间复杂度 和空间复杂度第2章 常用算法 2.1 递归法 2.2 分治法 2.3 贪心法 2.4 搜索法与回溯法目 录第3章 动态规划 3.1 动态规划的基本思想与概念 3.2 动态规划的简单应用 3.3 动态规划的深入研究 3.4 动态规划的优化方法第4章 搜索算法中的优化技巧 4.1 搜索中的剪枝技巧 4.2 选择合适的搜索方向 4.3 A*算法 4.4 跳舞链 4.5 搜索还是动态规划目 录第5章 图上的算法 5.1 并查集 5.2 生成树 5.3 最短路 5.4 强连通分量 5.5 2—SAT 5.6 差分约束 5.7 二分图 5.8 网络流第一章 算法的概念1.1 算法的概念和描述1.2 算法的时间复杂度和空间复杂度1.1 算法的概念和描述【1.1.1 算法的概念】 算法是一系列解决问题的清晰指令,也就是对于符合一定规范的输入在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗点说,就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是推理实现的算法,后者是操作实现的算法。 这个定义可以用一幅简明的图来说明,如图1.1所示。 一个算法应该具有以下五个重要的特征:①有穷性:一个算法必须保证执行有限步之后结束,并且每一步都在有穷时间内完成。②确定性:算法的每一步骤都必须有确切的定义。③输入:一个算法有零个或多个输入,以刻画运算对象的初始情况。④输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的。⑤可行性:算法应该是可行的,这意味着所有待实现的算法都是能够理解和实现的,并可通过有限次运算完成。 为了阐明算法的概念,本节将以三种方法为例来解决同一个问题:计算两个整数的最大公约数。这些例子会帮助我们阐明以下几项要点:图1.1 算法的概念1.1 算法的概念和描述①算法的每一个步骤都必须没有歧义,不能有半点含糊。②必须认真确定算法所处理的输入的值域。③同一算法可以用几种不同的形式来描述。④同一问题,可能存在几种不同的算法。⑤针对同一问题的算法可能会基于完全不同的解题思路而且解题速度也会有显著不同。 还记得最大公约数的定义吗?将两个不全为0的非负整数m和n的最大公约数记为gcd(m,n),代表能够整除(即余数为0)m和n的最大正整数。亚历山大的欧几里得(公元前3世纪)所著的《几何原本》,以系统论述几何学而著称,在其中的一卷里,他简要地描述了一个最大公约数算法。用现代数学的术语来表述,欧几里得算法基于的方法重复应用下列等式,直到 m mod n 等于0。 gcd(m,n)=gcd(n,m mod n)(m mod n表示 m 除以 n 之后的余数) 因为gcd(m,0)=m,m 最后的取值也就是 m 和 n 的初值的最大公约数。 举例来说,gcd(60,24)可以这样计算: gcd(60,24)=gcd(24,60 mod 24)=gcd(24,12) =gcd(12,24 mod 12)=gcd(12,0)=12 下面是该算法的一个更加结构化的描述。1.1 算法的概念和描述 用于计算 gcd(m,n)的欧几里得算法: 第一步: 如果 n=0,返回 m的值作为结果,同时函数结束;否则,进入第二步。 第二步:m 除以 n,将余数赋给 r。 第三步: 将 n 的值赋给 m,将r 的值赋给 n,返回第一步。 我们也可以使用伪代码来描述这个算法: 算法 Euclid(m,n) //使用欧几里得算法计算gcd(m,n) //输入∶两个不全为0的非负整数m,n //输出∶m,n的最大公约数 while n≠0do { r←mmodn m←n n←r } return m 上面的伪代码也可以用流程图来加以描述,如图1.2所示。图1.2 欧几里得算法的流程图1.1 算法的概念和描述 我们怎么知道欧几里得算法最终一定会结束呢?通过观察,我们发现,每经过一次循环,参加运算的两个算子中的后一个都会变得更小,而且绝对不会变成负数。确实,下一次循环时,n的新值是m mod n,这个值总是比n小。所以,第二个算子的值最终会变成0,此时,这个算法也就停止了。 就像其他许多问题—样,最大公约数问题也有多种算法。让我们看看解这个问题的另外两种方法。第—个方法只基于最大公约数的定义;m和n的最大公约数就是能够同时整除它们的最大正整数。显然,这样一个公约数不会大干两数中的较小者,因此,我们先有:t=min{m,n}。现在可以开始检查t是否能够整除m和n:如果能,t就是最大公约数;如果不能,我们就将t减1,然后继续尝试(我们如何确定该算法最终一定会结束呢?)。 例如,对于60和24这两个数来说,该算法会
您可能关注的文档
- 汽车机械基础.pptx
- 金融学(第二版).pptx
- JAVA程序设计教学课件.pptx
- Altium Designer 19原理图与PCB设计速成.ppt
- 物联网专业英语(第二版).ppt
- 2024 年度民主生活会实施方案 范文2篇.docx
- 副部长2024年民主生活会、组织生活会自我批评意见25条供参考.docx
- 老干管理部门2024年党支部支部班子组织生活会“四个带头”对照检查材料范文稿.docx
- 街道党支部副书记组织生活会“四个带头”对照检查材料范文供参考.docx
- 纪委书记2024年度组织生活会对照检查材料(四个带头)范文稿.docx
- 苏教版8年级上册数学全册教学课件(2021年10月修订).pptx
- 比师大版数学4年级下册全册教学课件.pptx
- 冀教版5年级上册数学全册教学课件.pptx
- 办公室普通党员2024年组织生活会个人对照检查发言材料供参考.docx
- 领导班子成员2025年组织生活会“四个带头”对照检查材料范文.docx
- 2024年度专题组织生活会个人“四个带头”对照检查材料范文.docx
- 党支部领导班子2025年民主生活会“四个带头”个人对照检查材料范文.docx
- 2024年抓基层党建工作述职报告参考范文.docx
- 2024年度民主生活会征求意见情况的报告范文2篇.docx
- 普通党员2024年组织生活会个人“四个带头”对照检查发言材料2篇.docx
文档评论(0)