分享

算法如何分类及案例说明?

 新潮看世界 2022-07-21 发布于北京

算法被广泛用于计算机编程并不奇怪。但是,它可以应用于解决数学问题,甚至在日常生活中。这里有一个问题:有多少种算法?根据在奥地利符号计算研究所 (RISC) 工作的计算机科学家 Christoph Koutschan 博士的说法,他对重要算法类型的投票进行了调查。因此,他列出了计算机科学中的 32 种关键算法。尽管算法很复杂,但我们通常可以根据其功能将算法分为六种基本类型。

1. 递归算法

它是指通过反复将问题分解为同类子问题来解决问题的方法。使用递归算法解决问题的经典例子是河内塔。

2. 分而治之的算法

传统上,分治算法由两部分组成: 1. 将一个问题分解为一些较小的相同类型的独立子问题;2.把这些比较小的问题单独解决后,找到原来问题的最终解决方案。

分治算法的关键点是:

如果你能找到重复的子问题和原问题的循环子结构,你可以很快把原问题变成一个小问题,简单的问题。

尝试将整个解决方案分解为不同的步骤(不同的步骤需要不同的解决方案),以使过程更容易。

子问题容易解决吗?如果没有,最初的问题可能会花费大量时间。

3.动态规划算法

由 Richard Bellman 在 1950 年代开发的动态规划算法通常用于优化问题。在这种类型的算法中,收集过去的结果以供将来使用。与分治算法一样,动态规划算法通过将复杂问题分解为一些简单的子问题来简化它。但是,它们之间最显着的区别是后者需要重叠的子问题,而前者不需要。

4. 贪心算法

这是解决优化问题的另一种方法——贪心算法。它指的是始终在每一步中找到最佳解决方案,而不是考虑整体最优性。也就是说,他所做的只是局部最优。由于贪心算法的局限性,需要注意的是,选择贪心算法的关键是是否考虑到未来的任何后果。

5.蛮力算法

蛮力算法是对问题的一种简单直接的解决方案,一般基于对问题的描述和所涉及概念的定义。您也可以使用“就做吧!” 来描述蛮力的策略。简而言之,蛮力算法被认为是最简单的算法之一,它迭代所有可能性并最终得到令人满意的解决方案。

6. 回溯算法

基于深度优先递归搜索,回溯算法侧重于在类枚举搜索过程中找到问题的解决方案。当它不能满足条件时,它会返回“回溯”并尝试另一条路径。适用于解决大而复杂的问题,享有“通用解法”的美誉。最著名的回溯算法之一就是八皇后拼图。

示例 1:打印 1 到 20:

算法:

第 1 步:将 X 初始化为 0,

第 2 步:将 X 加 1,

第 3 步:打印 X,

第 4 步:如果 X 小于 20,则返回第 2 步。

示例 2:将温度从华氏 (℉) 转换为摄氏 (℃)

算法:

第 1 步:读取华氏温度,

第 2 步:使用公式 C=5/9*(F-32) 计算温度,

第 3 步:打印 C。

示例 3:确定学生是否通过考试:

算法:

第一步:输入4门课程的成绩M1、M2、M3和M4,

第二步:用公式“Grade=(M1+M2+M3+M4)/4”计算平均成绩

第三步:如果平均分低于60,打印“FAIL”,否则打印“PASS”。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多