还剩2页未读,继续阅读
文本内容:
递推法递推是序列计算机中的一种常用算法它是按照一定的规律来计算序列中的每个项,通常是通过计算机前面的一些项来得出序列中的指定项的值其思想是把一个复杂的庞大的计算过程转化为简单过程的多次重复,该算法利用了计算机速度快和不知疲倦的机器特点递归法程序调用自身的编程技巧称为递归一个过程或函数在其定义或说明中有直接或间recursion接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量递归的能力在于用有限的语句来定义对象的无限集合一般来说,递归需要有边界条件、递归前进段和递归返回段当边界条件不满足时,递归前进;当边界条件满足时,递归返回注意递归就是在过程或函数里调用自身;1在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口2穷举法穷举法,或称为暴力破解法,其基本思路是对于要解决的问题,列举出它的所有可能的情况,逐个判断有哪些是符合问题所要求的条件,从而得到问题的解它也常用于对于密码的破译,即将密码进行逐个推算直到找出真正的密码为止例如一个已知是四位并且全部由数字组成的密码,其可能共有种组合,因此最多尝试次就能找到正确的密码理论上利用1000010000这种方法可以破解任何一种密码,问题只在于如何缩短试误时间因此有些人运用计算机来增加效率,有些人辅以字典来缩小密码组合的范围贪心算法贪心算法是一种对某些求最优解问题的更简单、更迅速的设计技术用贪心法设计算法的特点是一步一步地进行,常以当前情况为基础根据某个优化测度作最优选择,而不考虑各种可能的整体情况,它省去了为找最优解要穷尽所有可能而必须耗费的大量时间,它采用自顶向下,以迭代的方法做出相继的贪心选择,每做一次贪心选择就将所求问题简化为一个规模更小的子问题,通过每一步贪心选择,可得到问题的一个最优解,虽然每一步上都要保证能获得局部最优解,但由此产生的全局解有时不一定是最优的,所以贪婪法不要回溯贪婪算法是一种改进了的分级处理方法,其核心是根据题意选取一种量度标准,然后将这多个输入排成这种量度标准所要求的顺序,按这种顺序一次输入一个量,如果这个输入和当前已构成在这种量度意义下的部分最佳解加在一起不能产生一个可行解,则不把此输入加到这部分解中这种能够得到某种量度意义下最优解的分级处理方法称为贪婪算法对于一个给定的问题,往往可能有好几种量度标准初看起来,这些量度标准似乎都是可取的,但实际上,用其中的大多数量度标准作贪婪处理所得到该量度意义下的最优解并不是问题的最优解,而是次优解因此,选择能产生问题最优解的最优量度标准是使用贪婪算法的核心一般情况下,要选出最优量度标准并不是一件容易的事,但对某问题能选择出最优量度标准后,用贪婪算法求解则特别有效分治法分治法是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并分治法所能解决的问题一般具有以下几个特征该问题的规模缩小到一定的程度就可以容易地解决;1该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质;2利用该问题分解出的子问题的解可以合并为该问题的解;3该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子子问题4动态规划法动态规划是一种在数学和计算机科学中使用的,用于求解包含重叠子问题的最优化问题的方法其基本思想是,将原问题分解为相似的子问题,在求解的过程中通过子问题的解求出原问题的解动态规划的思想是多种算法的基础,被广泛应用于计算机科学和工程领域动态规划程序设计是对解最优化问题的一种途径、一种方法,而不是一种特殊算法不象前面所述的那些搜索或数值计算那样,具有一个标准的数学表达式和明确清晰的解题方法动态规划程序设计往往是针对一种最优化问题,由于各种问题的性质不同,确定最优解的条件也互不相同,因而动态规划的设计方法对不同的问题,有各具特色的解题方法,而不存在一种万能的动态规划算法,可以解决各类最优化问题因此读者在学习时,除了要对基本概念和方法正确理解外,必须具体问题具体分析处理,以丰富的想象力去建立模型,用创造性的技巧去求解迭代法迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法或者称为一次解法,即一次性解决问题迭代法又分为精确迭代和近似迭代二分法〃和牛顿迭代法〃属于近似迭代法迭代算法是用计算机解决问题的一种基本方法它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令或一定步骤进行重复执行,在每次执行这组指令或这些步骤时,都从变量的原值推出它的一个新值分支界限法分枝界限法是一个用途十分广泛的算法,运用这种算法的技巧性很强,不同类型的问题解法也各不相同分支定界法的基本思想是对有约束条件的最优化问题的所有可行解(数目有限)空间进行搜索该算法在具体执行时,把全部可行的解空间不断分割为越来越小的子集(称为分支),并为每个子集内的解的值计算一个下界或上界(称为定界)在每次分支后,对凡是界限超出已知可行解值那些子集不再做进一步分支,这样,解的许多子集(即搜索树上的许多结点)就可以不予考虑了,从而缩小了搜索范围这一过程一直进行到找出可行解为止,该可行解的值不大于任何子集的界限因此这种算法一般可以求得最优解与贪心算法一样,这种方法也是用来为组合优化问题设计求解算法的,所不同的是它在问题的整个可能解空间搜索,所设计出来的算法虽其时间复杂度比贪婪算法高,但它的优点是与穷举法类似,都能保证求出问题的最佳解,而且这种方法不是盲目的穷举搜索,而是在搜索过程中通过限界,可以中途停止对某些不可能得到最优解的子空间进一步搜索(类似于人工智能中的剪枝),故它比穷举法效率更高回溯法回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为回溯点〃其基本思想是,在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度探索解空间树当探索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发继续探索下去,如果该结点不包含问题的解,则逐层向其祖先结点回溯(其实回溯法就是对隐式图的深度优先搜索算法)若用回溯法求问题的所有解时,要回溯到根,且根结点的所有可行的子树都要已被搜索遍才结束而若使用回溯法求任一个解时,只要搜索到问题的一个解就可以结束描述算法的方法有多种,常用的有自然语言、结构化流程图、伪代码和PAD图等,其中最普遍的是流程图以特定的图形符号加上说明,表示算法的图,称为流程图或捱圉流程图是流经一个系统的信息流、观点流或部件流的图形代表在企业中,流程图主要用来说明某一过程这种过程既可以是生产线上的筐流程,也可以是完成一项任务必需的管理过程例如,一张流程图能够成为解释某个零件的制造工序,甚至组织决策制定程序的方式之一这些过程的各个阶段均用图形块表示,不同图形块之间以箭头相连,代表它们在系统内的流动方向下一步何去何从,要取决于上一步的结果,典型做法是用是或否的逻辑分支加以判断流程图是揭示和掌握封闭系统运动状况的有效方式作为诊断工具,它能够辅助决策制定,让管理直清楚地知道,问题可能出在什么地方,从而确定出可供选择的行动方案流程图有时也称作输入-输出图该图直观地描述一个工作过程的具体步骤流程图对准确了解事情是如何进行的,以及决定应如何改进过程极有帮助这一方法可以用于整个企业,以便直观地跟踪和图解企业的运作方式流程图使用一些标准符号代表某些类型的动作,如决策用菱形框表示,具体活动用方框表示但比这些符号规定更重要的,是必须清楚地描述工作过程的顺序流程图也可用于设计改进工作过程,具体做法是先画出事情应该怎么做,再将其与实际情况进行比较为便于识别,绘制流程图的习惯做法是圆角矩形表示开始与结束;矩形表示行动方案、普通工作环节用;菱形表示问题判断或判定(审核/审批/评审)环节;用平行四边形表示输入输出;箭头代表工作流方向。
个人认证
优秀文档
获得点赞 0