算法
算法
然.燃
这个作者很懒,什么都没留下…
展开
-
算法8_回溯
回溯理论基础回溯法是一种组织搜索的一般技术,有“通用的解题法”之称,用它可以系统的搜索一个问题的所有解或任一解。有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。可以系统地搜索一个问题的所有解或任意解,既有系统性又有跳跃性。回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种以深度优先的方式系统地搜索问题的解的方法称为回溯法。回溯法的基本思想在生成解空间树时,定义以下几个相关概念:活结点:如果已生成一个结点而它原创 2020-05-10 20:33:56 · 209 阅读 · 0 评论 -
算法_7 贪心(续)
删数问题给定n位正整数a,去掉其中任意k≤n个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a和正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。输入第1行是1个正整数a,第2行是正整数k。输出对于给定的正整数a,编程计算删去k个数字后得到的最小数。n位数a可表示为x1x2…xixjxk…xn,要删去k位数,使得剩下的数字组成的整数最小。将该问题记为T,最优解A=xi1xi2 …xim (i1<i2…<im,m=n-k), 在删去k个数后剩下的数字原创 2020-05-10 20:27:13 · 301 阅读 · 0 评论 -
算法_6贪心
贪心在求最优解问题的过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解,这种求解方法就是贪心算法。从贪心算法的定义可以看出,贪心算法不是从整体上考虑问题,它所做出的选择只是在某种意义上的局部最优解,而由问题自身的特性决定了该题运用贪心算法可以得到最优解。如果一个问题可以同时用几种方法解决,贪心算法应该是最好的选择之一。活动安排问题活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子。该原创 2020-05-10 19:12:45 · 155 阅读 · 0 评论 -
算法5_动态规划
最长公共子序列若给定序列X={x1,x2,…,xm},则另一序列Z={z1,z2,…,zk},是X的子序列是指存在一个严格递增下标序列{i1,i2,…,ik}使得对于所有j=1,2,…,k有:zj=xij。例如,序列Z={B,C,D,B}是序列X={A,B,C,B,D,A,B}的子序列,相应的递增下标序列为{2,3,5,7}。给定2个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。给定2个序列X={x1,x2,…,xm}和Y={y1,y2,…,yn},找出X和Y原创 2020-05-10 19:01:30 · 246 阅读 · 0 评论 -
算法4_分治
概述根据分治法的分割原则,原问题应该分为多少个子问题才较适宜?各个子问题的规模应该怎样才为适当?这些问题很难予以肯定的回答。在用分治法设计算法时,最好使子问题的规模大致相同。如分成大小相等的k个子问题,许多问题可以取k=2。这种使子问题规模大致相等的做法是出自一种平衡(Balancing)子问题的思想,它几乎总是比子问题规模不等的做法要好。适用条件分治法所能解决的问题一般具有以下几个特征:1.该问题的规模缩小到一定的程度就可以容易地解决;2.该问题可以分解为若干个规模较小的相同问题,即该问题具原创 2020-05-10 18:55:30 · 452 阅读 · 0 评论 -
算法3_递归
递归简介:任何一个可以用计算机求解的问题所需的计算时间都与其规模n有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。如果原问题可分割成k个子问题(1<k≤n),且这些子问题都可解,并可利用这些子问题的解求出原问题的解,那么这种分治法就是可行的。由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。Fibonacci数列Fibonacci数列的递归算法:int原创 2020-05-10 11:04:12 · 252 阅读 · 0 评论 -
算法2_递推
递推简介:递推法是一种重要的数学方法,在数学的各个领域中都有广泛的运用,也是计算机用于数值计算的一个重要算法。这种算法特点是:一个问题的求解需一系列的计算,在已知条件和所求问题之间总存在着某种相互联系的关系,在计算时,如果可以找到前后过程之间的数量关系(即递推式),那么,从问题出发逐步推到已知条件,此种方法叫逆推。无论顺推还是逆推,其关键是要找到递推式。这种处理问题的方法能使复杂运算化为若干步重复的简单运算,充分发挥出计算机擅长于重复处理的特点。 递推算法的首要问题是得到相邻的数据项间的关系(即递推关原创 2020-05-10 10:56:09 · 273 阅读 · 0 评论 -
算法1_绪论
绪论算法理论的两大论题:算法设计—对于一个问题如何设计一个有效的算法算法分析—如何评价或判断一个算法的优劣问题的求解过程:分析问题→设计算法→编写程序→整理结果算法(Algorithm):对特定问题求解步骤的一种描述,是指令的有限序列。算法的五大特性:⑴ 输入:一个算法有零个或多个输入。⑵ 输出:一个算法有一个或多个输出。⑶ 有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。⑷ 确定性:算法中的每一条指令必须有确切的含义,对于相同的输入只能得到相同的输出。⑸原创 2020-05-10 10:04:40 · 386 阅读 · 0 评论