什么是算法?

Person's hand typing code into an algorithm on a computer.
算法是完成任务的基本技术。 Laflor / Getty Images

在当今的数字时代,算法是塑造技术和信息格局的无形架构师。这些复杂的规则和指令集合构成了我们数字生活几乎所有方面,从搜索引擎如何优先显示结果到社交媒体源如何呈现内容。但算法到底是什么

从本质上讲,算法是解决问题或完成任务的系统化、分步过程。无论是简单的加法公式还是复杂的机器学习协议,算法都是软件应用程序的支柱,确保任务高效、有效地执行。在本文中,我们将揭开算法概念的神秘面纱,探索它们的起源、工作原理以及它们对社会和技术的影响。

广告

算法在计算机科学中的作用

要让计算机做任何事情,你必须编写一个计算机程序。要编写计算机程序,你必须一步一步地告诉计算机,你到底想让它做什么。然后计算机“执行”程序,机械地遵循每个步骤,以达到最终目标。

当你告诉计算机要做什么时,你也可以选择如何做。这就是计算机算法发挥作用的地方。算法是完成任务的基本技术。让我们通过一个例子来帮助理解算法概念。

广告

针对不同情况的多种算法

假设你的朋友将抵达机场,他需要从机场到你家。这里有四种不同的算法,你可以告诉你的朋友如何到达你家:

出租车算法:

广告

  1. 去出租车候车点。
  2. 坐上一辆出租车。
  3. 把我的地址告诉司机。

给我打电话算法:

  1. 飞机抵达时,给我打手机
  2. 行李领取处外面见我。

租车算法:

  1. 乘坐穿梭巴士到租车点。
  2. 租一辆车。
  3. 按照指示开到我家。

公交车算法:

  1. 在行李领取处外面,搭乘70路公交车。
  2. 在主街转乘14路公交车。
  3. 在榆树街下车。
  4. 向北走两个街区到我家。

这四种算法都达到了完全相同的目标,但每种算法都以完全不同的方式实现。每种算法的成本和旅行时间也不同。例如,乘坐出租车可能是最快的方式,但也是最贵的。乘坐公交车无疑更便宜,但要慢得多。你根据具体情况选择算法。

广告

排序算法

在计算机编程中,通常有许多不同的方式——算法——来完成任何给定的任务。每种算法在不同情况下都有其优缺点。排序算法是一个已经进行了大量研究的领域,因为计算机花费大量时间对列表进行排序。

这里有五种不同的排序算法:

广告

  • 桶排序
  • 归并排序
  • 冒泡排序
  • 希尔排序
  • 快速排序

如果你有1到10之间的一百万个整数值需要排序,桶排序是正确的算法。如果你有一百万本书名,快速排序可能是最好的算法。通过了解不同算法的优缺点,你可以为手头的任务选择最佳算法。

广告

算法类型

在计算机科学中,算法可以根据其方法、目的和应用领域大致分为几种主要类型。从加密算法到递归算法,不同的编程语言有多种用途。

以下是常用算法主要类型的概述:

广告

搜索算法

搜索算法旨在检索存储在数据结构中的信息。示例包括线性搜索、二分搜索以及数据库和搜索引擎中使用的搜索算法。

动态规划算法

这种类型通过将问题分解为更简单的子问题来优化问题。示例包括斐波那契数列生成、背包问题以及图中最短路径算法,如贝尔曼-福特算法和弗洛伊德-沃沙尔算法。

贪婪算法

贪婪算法旨在当下寻找最佳解决方案,而不考虑未来的后果。它们用于解决问题,例如用于在图中找到最小生成树的克鲁斯卡尔算法和普里姆算法。

回溯算法

这种类型用于约束满足问题,您在此类问题中逐步构建解决方案的候选,并在确定候选不可能完成为有效解决方案时立即放弃该候选(“回溯”)。示例包括解决N皇后问题和数独等谜题。

机器学习算法

这些算法旨在让计算机从数据中学习并做出预测或决策。它们可以进一步分为监督学习、无监督学习、强化学习和深度学习算法等类别。

随机算法

顾名思义,随机算法在其逻辑中包含一定程度的随机性。它们对于确定性方法效率低下的问题非常有用。示例包括蒙特卡洛方法和随机快速排序。

暴力算法

暴力算法系统地探索问题的所有可能解决方案以找到正确答案。它简单且保证在存在解决方案时找到,但由于其穷尽性,对于大型或复杂问题可能效率低下。

这些类别并非相互排斥,许多算法可能根据其应用和方法属于多个类别。理解这些类型有助于选择正确的算法来有效地解决特定问题。

广告

算法致力于找到最优解

无论使用何种编程语言,算法都会根据一组输入和一系列定义的计算步骤生成结果或输出。此输出的性质会根据算法的目的和它旨在解决的问题而有很大差异。

以下是算法产生的一些常见输出类型:

广告

  1. 问题的解决方案:算法通常旨在解决特定问题,例如计算地图上两点之间的最短路径、对数字列表进行排序或找到两个整数的最大公约数。
  2. 决策或分类:在机器学习和决策算法中,输出可以是决策或分类。例如,垃圾邮件检测算法将电子邮件分类为“垃圾邮件”或“非垃圾邮件”,而推荐算法决定向用户推荐哪些产品或内容。
  3. 数值:许多算法执行计算并产生数值作为输出。这包括用于数学计算的算法,例如求方程的根或从数据集中计算统计量。
  4. 数据结构:一些算法组织或操纵数据,并产生修改后的数据结构作为输出。例如,排序算法将列表或数组重新排列成特定顺序,而图算法可能会输出图中的树或一组连通分量。
  5. 视觉表示:计算机图形和可视化中的算法将数值数据转换为视觉形式,例如图像、图表或动画。例如,渲染算法从3D模型生成我们在视频游戏和模拟中看到的2D图像。
  6. 文本内容:为自然语言处理或生成设计的算法可以产生文本内容作为输出。这包括生成类似人类文本、翻译语言或总结长文档的算法。
  7. 信号或物理动作:在机器人和嵌入式系统中,算法可以产生控制电机或其他执行器的信号,从而在现实世界中产生物理动作。这可能像打开一盏灯一样简单,也可能像协调机械臂的运动一样复杂。

无论您是想识别模式、梳理初始数据、输入数据和变量,还是找到数学过程,高效的算法都可以自动化这些过程。想象一下它们未来能做些什么!

本文与AI技术结合更新,并经十万个为什么编辑事实核查和编辑。

这里有一些有趣的链接:

广告

算法常见问题

简单来说,算法是什么?
当你告诉计算机要做什么时,你也可以选择它如何去做。这就是计算机算法的用武之地。算法是完成任务的基本技术或一组指令。
算法的例子有哪些?
菜谱就是算法的一个例子,因为它是一个有限的指令列表,尽管算法可能比菜谱更具体。
算法的三个部分是什么?
算法需要数据输入、数据处理和数据输出。
算法在计算机编程中有什么用?
算法是计算机系统处理数据方式的组成部分。大多数计算机程序都包含遵循特定指令执行简单任务的算法。

广告

加载中...