程序设计基础12_2_动态规划(2015春)
- 格式:ppt
- 大小:552.00 KB
- 文档页数:43


计算机算法设计五⼤常⽤算法的分析及实例摘要算法(Algorithm)是指解题⽅案的准确⽽完整的描述,是⼀系列解决问题的清晰指令,算法代表着⽤系统的⽅法描述解决问题的策略机制。
也就是说,能够对⼀定规范的输⼊,在有限时间内获得所要求的输出。
如果⼀个算法有缺陷,或不适合于某个问题,执⾏这个算法将不会解决这个问题。
不同的算法可能⽤不同的时间、空间或效率来完成同样的任务。
其中最常见的五中基本算法是递归与分治法、动态规划、贪⼼算法、回溯法、分⽀限界法。
本⽂通过这种算法的分析以及实例的讲解,让读者对算法有更深刻的认识,同时对这五种算法有更清楚认识关键词:算法,递归与分治法、动态规划、贪⼼算法、回溯法、分⽀限界法AbstractAlgorithm is the description to the problem solving scheme ,a set of clear instructions to solve the problem and represents the describe the strategy to solve the problem using the method of system mechanism . That is to say, given some confirm import,the Algorithm will find result In a limited time。
If an algorithm is defective or is not suitable for a certain job, it is invalid to execute it. Different algorithms have different need of time or space, and it's efficiency are different.There are most common algorithms: the recursive and divide and conquer、dynamic programming method、greedy algorithm、backtracking、branch and bound method.According to analyze the five algorithms and explain examples, make readers know more about algorithm , and understand the five algorithms more deeply.Keywords: Algorithm, the recursive and divide and conquer, dynamic programming method, greedy algorithm、backtracking, branch and bound method⽬录1. 前⾔ (4)1.1 论⽂背景 (4)2. 算法详解 (5)2.1 算法与程序 (5)2.2 表达算法的抽象机制 (5)2.3 算法复杂性分析 (5)3.五中常⽤算法的详解及实例 (6)3.1 递归与分治策略 (6)3.1.1 递归与分治策略基本思想 (6)3.1.2 实例——棋盘覆盖 (7)3.2 动态规划 (8)3.2.1 动态规划基本思想 (8)3.2.2 动态规划算法的基本步骤 (9)3.2.3 实例——矩阵连乘 (9)3.3 贪⼼算法 (11)3.3.1 贪⼼算法基本思想 (11)3.3.2 贪⼼算法和动态规划的区别 (12)3.3.3 ⽤贪⼼算法解背包问题的基本步骤: (12)3.4 回溯发 (13)3.4.1 回溯法基本思想 (13)3.3.2 回溯发解题基本步骤 (13)3.3.3 实例——0-1背包问题 (14)3.5 分⽀限界法 (15)3.5.1 分⽀限界法思想 (15)3.5.2 实例——装载问题 (16)总结 (18)参考⽂献 (18)1. 前⾔1.1 论⽂背景算法(Algorithm)是指解题⽅案的准确⽽完整的描述,是⼀系列解决问题的清晰指令,算法代表着⽤系统的⽅法描述解决问题的策略机制。
程序设计基础
程序设计基础可以理解为计算机编程的基础知识和技能。
它包括了一系列概念、原理、语法和技巧,用于编写计算机程序。
学习程序设计基础通常需要掌握以下内容:
1. 编程语言:选择一门合适的编程语言进行学习,比如C、C++、Python、Java等。
不同的编程语言有不同的特点和用途,初学者可以选择一门容易上手的语言进行学习。
2. 编程概念:了解基本的编程概念,如变量、数据类型、算术运算、逻辑运算、条件
语句、循环语句、函数等。
这些概念是编程的基础,掌握它们可以更好地理解和编写
程序。
3. 数据结构:学习不同的数据结构,如数组、链表、栈、队列、树、图等。
了解数据
结构可以帮助我们更有效地组织和管理数据,提高程序的性能和效率。
4. 算法设计:学习常见的算法设计和分析方法,如递归、分治、动态规划等。
了解算
法可以帮助我们解决实际问题,提供高效的解决方案。
5. 软件工程:学习软件工程的基本原理和方法,如需求分析、设计、编码、测试和维
护等。
了解软件工程可以帮助我们更好地组织和管理程序开发过程,提高程序的质量
和可维护性。
除了上述内容,学习程序设计基础还需要进行实践,通过编写实际的程序来加深理解
和掌握。
可以选择一些简单的编程项目进行练习,逐步提升自己的编程能力。
同时,
阅读相关的编程书籍、在线教程和参与编程社区也是很有帮助的。