算法的分类——精选推荐

算法的分类
算法有多种分类⽅式,可以根据实现⽅式分类,也可以根据设计⽅法分类,还可以根据应⽤领域进⾏分类。不同的分类⽅式有不同的特点。
按照实现⽅式分类,可以将算法分为递归算法、迭代算法、逻辑算法、串⾏算法和并⾏算法和分布式算法、确定性算法和⾮确定性算法、精确算法和近似算法等。
递归算法(recursion algorithms)是⼀种不断调⽤⾃⾝直到指定条件满⾜为⽌的算法。这是⼀种重要的算法思想。有关递归算法的详细内容,参见本章后⾯的相关节次。
迭代算法(iteration algorithms)是采⽤计算机解决问题的⼀种基本⽅法。该算法主要是利⽤计算机运算速度快、适合做重复性操作的特点,让计算机重复执⾏某种结构或⼀组指令或⼀些步骤,在每次执⾏这种结构(或指令或步骤)时,都从变量的原值推出它的⼀个新值。也就是说,迭代算法通过从⼀个初始值出发寻⼀系列近似值来解决问题。迭代算法的基本步骤包括确定迭代变量、建⽴迭代关系式、对迭代过程和结束⽅式进⾏控制。
逻辑算法(logical algorithms)⼜称为逻辑演绎、演绎逻辑,是⼀种以⼀般概念、原则为前提,推导出个别结论的思维⽅法,即根据某类事物都具有的⼀般属性、关系来推断该类事物中个别事物所具有的属性、关系的推理⽅法。例如,⽔果都含维⽣素,猕猴桃是⽔果,所以猕猴含维⽣素。
如果算法指令在计算机中执⾏的过程是⼀个指令接着⼀个指令,在指定的时刻只能有⼀个指令在执⾏,那么该算法是就串⾏算法(serial algorithms)。与串⾏算法对应的是并⾏算法、分布式算法。并⾏算法(parallel algorithms)是并⾏计算中的重要问题,指在并⾏机上同时⽤很多个处理器联合求解问题的⽅法。分布式算法(distributed algorithms)是⼀种可以借助计算机⽹络进⾏运算的⽅法。分布式算法⼴泛应⽤于通信、科学计算、分布式信息处理等领域。在并⾏算法和分布式算法中,成本消耗不仅涉及到每⼀个处理器本⾝处理数据的消耗,⽽且包括处理器之间通信所耗费的成本。因此,在选择是采⽤串⾏算法,还是并⾏算法或分布式算法时,要综合考虑成本因素。
美的电磁炉电路图确定性算法(deterministic algorithms)是最常见到的算法,其计算⾏为是可预测的。在确定性算法中,给定⼀个特定的输⼊,总是会产⽣相同的输出结果,且其计算过程总是⼀样的。例如,求解⼀元⼆次⽅程根的算法就是⼀个典型的确定性算法。与确定性算法相⽐,不确定性算法(non-deterministic algorithm)是指计算⾏为是不可预测的。在很多运算过程中,往往有许多因素造成运算过程或结果是不确定的。在不确定算法中,运算过程往往有⼀个或多个选择点,且各种选择都有可能发⽣。
⼀般地认为,精确算法(exact algorithms)是指总是可以到最优解的算法,近似算法(approximate algorithms)则是指寻接近最优解的满意解的算法。在很多实际问题中,往往只能到近似解,因此近似算法更加有效。
唐弢如果根据设计⽅法来分类,可以将算法分为穷举法、分治法、线性规划法、动态规划法、贪⼼算法、回溯法等。
穷举法(exhaustive search),⼜称为强⼒搜索法(brute-force search)、枚举法(enumeration method),是⼀种解决问题的基本⽅法,该⽅法枚举出所有可能的解决⽅案,然后对每⼀个可能的解决⽅案进⾏测评以便到满⾜条件的⽅案。例如,寻⾃然数n的所有除数、中国传统的百元买百鸡问题(公鸡每只5元、母鸡每只3元、⼩鸡3只1元,百元买百鸡,问共有多少种买法?)、国际象棋中的8皇后问题等,穷举法是解决这些问题的有效⽅法。在这种⽅法中,算法的主要成本是需要枚举出所有可能的解决⽅案,解决⽅案数量会随着问题中数据规模的增加⽽急剧地增⼤。因此,这种⽅法适合问题中数据规模有限的情况,或者问题限于特定领域中。
分治法(divide and conquer algorithm)的基本思想是把⼀个⼤问题分解成多个⼦问题,这些⼦问题可以继续再分解(递归⽅式),直到分解后的⼦问题容易解决为⽌,然后把这些⼦问题的解决⽅案组合起来得到最终的结果。其主要步骤如下:按照指定的约束条件把问题进⾏分解直⾄得到容易解决的⼦问题,分别解决每个⼦问题,把⼦问题的⽅案组合起来。需要注意的是,分治法与递归法不同,虽然两者都强调层层分解得到⼦问题,但是递归强调⼦问题的形式与初始问题的形式完全⼀样,⽽分治法则不强调⼦问题的形式与初始问题完全⼀样,只是强调⼦问题是否容易得到解决,不同的⼦问题可以有不同的解决⽅式。⼆分搜索算法就是⼀个典型的分治法,其基本思想是,对于有序序列,确定待查记
22美女网录的范围,然后逐步缩⼩范围直到到记录为⽌。
线性规划法(linear programming method,LPM)⼜称为线性规划技术,是⼀种解决多变量最优决策的典型⽅法。线性规划法是指在各种相互关联的多变量约束条件下,解决⼀个对象的线性⽬标函数最优化的问题。其中,⽬标函数是决策者要求达到⽬标的数学表达式,⽤⼀个极⼤或极⼩值来表⽰;约束条件是指实现⽬标的能⼒资源和内部条件的限制因素,⽤⼀组等式或不等式表⽰。线性规划法是经营管理决策中最常⽤的数学⽅法,主要⽤来解决管理决策、⽣产安排、交通设计、军事指挥等问题。
动态规划法(dynamic programming method,DPM)是1953年美国应⽤数学家Richard Bellman提出⽤来解决多阶段决策过程问题的⼀种最优化⽅法。多阶段决策过程是把研究问题分成若⼲个相互联系的阶段,每⼀个阶段都做出决策,从⽽使整个过程达到最优化。动态规划法是⼀种多阶段决策⽅法,其基本思想是按时空特点将复杂问题划分为相互联系的若⼲个阶段,在选定系统⾏进⽅向之后,从终点向始点逆向计算,逐次对每个阶段寻决策,使整个决策过程达到最优。该⽅法⼜称为逆序决策过程。许多实际问题利⽤动态规划法处理往往⽐线性规划法更有效。动态规划法与分治法类似,都是将问题归纳为较⼩的、相似的⼦问题,通过求解⼦问题产⽣⼀个全局解。但是,分治法中的各个⼦问题是独⽴的,⼀旦求出各个⼦问题的解后,可以⾃下⽽上地将⼦问题的解合并成问题的最终解。动态规划法则允许这些⼦问题不独⽴,该⽅法对每个⼦问题只解⼀次,并将结果保存起来,避免每次碰到时都重复计算。动态规划法适合于解决资源分配、优化调度等优化问题。
贪⼼算法(greedy algorithms)类似于动态规划法,在对问题求解时,先把问题分成若⼲个⼦问题,总是贪⼼地做出在当前看来是最好的选择。也就是说,贪⼼算法不是从整体最优上加以考虑,所做出的决策仅是在某种意义上的局部最优解。虽然对于许多问题,贪⼼算法不能给出整体最优结果,但是贪⼼算法是运算速度最快的⽅法,并且对许多问题能产⽣整体最优解或整体最优解的近似解。Kruskal提出的最⼩⽣成树算法就是⼀个典型的贪⼼算法。贪⼼算法与动态规划法类似,但也有不同之处。贪⼼算法的当前选择可能要依赖已经做出的所有选择,但不依赖于有待于做出的选择和⼦问题。动态规划法的当前选择不仅依赖已经做出的所有选择,⽽且还依赖于有待于做出的选择和⼦问题。传奇故事2010
细胞分化回溯法(backtracking algorithms)是⼀种选优搜索法,按选优条件向前搜索,以达到⽬标。当搜索到某⼀步时,发现原先选择并不优或达不到⽬标,就退回上⼀步重新选择。这种⾛不通就退回再⾛以便达到优化⽬的的⽅法称为回溯法。如果搜索⽅式合理的话,回溯法往往⽐穷举法要快,因为回溯法可以根据⼀次尝试⽽删除⼤量可选的解决⽅案。
可贵的沉默教学设计
如果根据应⽤领域进⾏分类的话,算法的种类就更多了。每种应⽤领域都会有⼤量的算法。⼀些典型的算法包括排序算法、搜索算法、图论算法、机器学习、加密算法、数据压缩算法、语法分析算法、数论与代数算法等。

本文发布于:2024-09-21 03:32:04,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/590211.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:算法   问题   解决   过程   决策   动态
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议