首页 > 编程知识 正文

计算机计算公式有哪些,计算机经典算法

时间:2023-05-04 04:12:50 阅读:149454 作者:2588

迭代算法迭代是重复反馈过程的活动,并且通常是接近所需的目标或结果(一个确定条件)。 每次重复过程都称为“迭代”,每次迭代获得的结果是下一次迭代的初始值。

递归算法(recursion )表现为程序的自调用,将大复杂问题逐层变换为与原问题相似的小问题进行求解。

酱料

套用这句话:“迭代是人,递归是神。”

递归实际上是不断地深入调用函数直到函数有返回才会逐层的返回。 因此,递归涉及运行时的堆栈开销。 (在返回该层的函数调用之前,必须将参数推入并保存在堆栈中。)因此可能会导致堆栈溢出错误。 但是,递归编程所体现的思想是人们追求简洁,把问题交给计算机,把大问题分解成同一个小问题来解决大问题的动机。

在大多数情况下,迭代需要人为分析问题,将问题转化为一次次的迭代来逼近答案。 迭代并不像递归那样对栈有一定的要求,而且问题分析完成后,通过循环很容易实现。 的迭代很有效率,但很难理解。 数据结构的设计,如遇到图‘表、二叉树、网格等问题时,很难使用,但使用递归,可以省去人工思考解法的过程,在返回之前只需要继续分解问题就可以了。

总之,递归算法在思想上更接近人们处理问题的想法,而且虽然位于上层(神),但由于反复偏向下层),所以在执行效率上下层)容易比上层)高,但是上层)递归

用zjdhn序列的求法解释其差异:

回溯法是一种启发式算法,在这一点上类似于穷举法。 但是,那毕竟不是包罗万象的方法。 回溯法为有组织的进行穷举,在搜索中通过问题设定持续要求减少搜索空间。 这种减少不是一个个解的减少,而是对搜索空间进行了大规模的剪枝,使实际的搜索空间远远小于问题的解空间。 算法大多只在“不得不”的情况下使用。 如果有别的算法,那很可能比回溯法更有效率。 请记住,回溯法是基于包罗万象的。 回溯法适用于求解序列组合问题。 也就是说,目标解选自一个候选空间。

动态规划(Dynamic programming,DP )基本概念1. 多阶段决策问题某个活动过程分为几个相互关联的阶段时,需要在每个阶段进行决策(措施),在某个阶段决策确定后

每个阶段的决策组成一个决策序列,称为一种策略。 每个阶段都有几个决策。 因此,可以选择很多战略。 根据一个战略决定活动的效果,其效果可以由数量决定。 不同的策略有不同的效果,多阶段的决策问题是从可选择的策略中选择最优策略,在给定的标准下达到最好的效果。

3358 www.Sina.com/http://www.Sina.com /将求解给定问题的过程适当地分成几个相互关联的阶段,以便于求解。 不同的过程阶段数可能不同。 描述阶段的变量称为阶段变量。 在大多数情况下,阶段变量是离散的,用k表示。 另外,也有阶段变量连续的情况。 如果进程可以在任意时间点做出决策,并且在任意两个不同的时间点之间允许无限决策,则阶段变量是连续的。

在上一个示例中,第一个阶段是点a,第二个阶段是点a到点b,第三个阶段是点b到点c,第四个阶段是点c到点d。

2动态规划问题中的术语状态代表每个阶段开始面临的自然状况或客观条件,它不以人们的主观意志为转移,也称不可控因素。 上例中状态是某一阶段的出发点,它既是该阶段某一道路的起点,又是前一阶段某一支路的终点。 在前面的示例中,第一个阶段有两个状态: a,第二个阶段有B1和B2。 第三个阶段是C1、C2、C3这三种状态,第四个阶段是d这种状态。

进程的状态通常可以用一个或多个数来描述,称为状态变量。 一般来说,状态是离散的,但是为了方便有时也连续地取得状态。 当然,在现实生活中,由于变量形式的限制,所有的状态都是离散的,但从分析的角度来看,将状态作为连续的状态来处理有时会有很大的好处。 另外,由于状态中有多个成分(多维情况),所以用向量表示; 另外,各阶段的状态维数可以不同。

当流程以所有可能不同的方式发展时,流程的每个段的状态变量都在特定范围内取值。 状态变量取值的集合称为状态集合。

阶段:给定某一阶段的状态,该阶段以后的过程的发展不受该阶段以前各阶段状态的影响,要求当所有阶段都确定时,整个过程也具有确定的性质。 换句话说,过程的各实现可以用一个状态系列表示,在以前的例子中,各阶段的状态是该线路的起点,确定这些点的系列,并且也完全确定整个线路。 从某个阶段以后的线路中,给予这个区间的起点时,不受以前的线路(通过的点)的影响。 状态的这一性质意味着过程的历史只能通过现在的状态来影响未来的发展,这一性质称为无后效性。

状态:给定某个阶段的状态后,从该状态迁移到下一个阶段

段某个状态的一种选择(行动)称为决策。在最优控制中,也称为控制。在许多问题中,决策可以自然而然地表示为一个数或一组数。不同的决策对应着不同的数值。描述决策的变量称决策变量,因状态满足无后效性,故在每个阶段选择决策时只需考虑当前的状态而无须考虑过程的历史。

决策变量的范围称为允许决策集合

策略: 由每个阶段的决策组成的序列称为策略。对于每一个实际的多阶段决策过程,可供选取的策略有一定的范围限制,这个范围称为允许策略集合。允许策略

动态规划程序设计是对解最优化问题的一种途径、一种方法,而不是一种特殊算法。不像搜索或数值计算那样,具有一个标准的数学表达式和明确清晰的解题方法。动态规划程序设计往往是针对一种最优化问题,由于各种问题的性质不同,确定最优解的条件也互不相同,因而动态规划的设计方法对不同的问题,有各具特色的解题方法,而不存在一种万能的动态规划算法,可以解决各类最优化问题。因此读者在学习时,除了要对基本概念和方法正确理解外,必须具体问题具体分析处理,以丰富的想象力去建立模型,用创造性的技巧去求解。

分类 线性动规:拦截导弹,合唱队形,挖地雷,建学校,剑客决斗等;区域动规:石子合并, 加分二叉树,统计单词个数,炮兵布阵等;树形动规:贪吃的drdmj,二分查找树,聚会的欢乐,数字三角形等;背包问题:01背包问题,完全背包问题,分组背包问题,二维背包,装箱问题,挤牛奶(同济ACM第1132题)等;

应用实例:最短路径问题 ,项目管理,网络流优化等;

大多数动态规划问题都能被归类成两种类型:

优化问题组合问题

优化问题希望你选择一个可行的解决方案,以便最小化或最大化所需函数的值。组合问题希望你弄清楚做某事方案的数量或某些事件发生的概率。

参考:动态规划算法入门,这就够了

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。