理论教育 常用算法及分类-程序设计基础

常用算法及分类-程序设计基础

时间:2023-11-20 理论教育 版权反馈
【摘要】:回溯法用于解决一些要经过多个步骤才能完成、每个步骤都有若干可能的分支且过程需要遵守某些规则,而这些规则又无法用数学公式来描述的一类问题。动态规划的思想是多种算法的基础,被广泛应用于计算机科学和工程领域。

常用算法及分类-程序设计基础

设计算法程序时要根据问题的性质,使用不同的设计方法。一般常见的算法如下。

1.穷举法

穷举法是对有可能是解的多个候选解按一定的顺序进行逐一枚举和检验,并从中找出那些符合要求的候选解作为问题的解。穷举算法效率相对比较低。

2.递推法

递推法是利用问题本身所具有的一种递推关系来进行求解的一种方法。它把问题分成若干步,找出每个相邻步的关系,从而达到最终求解目的。如n!=nn-1)!,也就是可以从(n-1)!递推出n!。使用递推法要求问题的每个步骤有一定的关连和递推关系。

3.迭代法

迭代法常用于数值分析求解。方法首先假定一个初始估计值,由此出发寻找更接近的近似解来解决问题,直到求出最接近的解。这种方法一般用于求解方程或者方程组。典型的迭代算法是牛顿迭代法。

4.递归

递归指的是这样的一个过程:方法中不断调用自身,直到被调用的对象已知为止。

5.回溯法(www.daowen.com)

回溯法也称为试探法,方法将问题的候选解按某种顺序逐一枚举并向前搜索,当发现当前候选解不可能是解或找不到最终解时,就退回一步重新选择另一个候选解,这个过程叫回溯。回溯法用于解决一些要经过多个步骤才能完成、每个步骤都有若干可能的分支且过程需要遵守某些规则,而这些规则又无法用数学公式来描述的一类问题。

6.贪婪法

贪婪法是一种不追求最优解,只求得到较为满意解的一种方法。贪婪法常以当前情况为基础作最优选择,而不考虑各种可能的整体情况,省去了为寻找最优解要穷尽所有可能所要耗费的时间,一般可以快速得到满意的解,因而贪婪法不需要回溯。

7.分治法

把一个复杂的问题分解成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题,直到最后子问题可以直接求解为止,然后将这些子问题的解进行合并得到原问题的解。

8.动态规划

动态规划是一种在数学和计算机科学中使用的、用于求解包含重叠子问题的最优化问题的方法。其基本思想是:将原问题分解为相似的子问题,在求解的过程中通过子问题的解求出原问题的解。动态规划的思想是多种算法的基础,被广泛应用于计算机科学和工程领域

如果对算法进行分类,可大致分为基本算法、数据结构的算法、数论代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、查找算法、随机化算法、并行算法等。

本章只简要介绍查找和排序两类算法。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈