什么是算法?一切皆算法

简介: 如果有人问我什么算法?我就一句话:算法就是对一类问题的最优求解路径。

如果有人问我什么算法?我就一句话:算法就是对一类问题的最优求解路径。

1、计算机领域的算法概念

算法一直都是计算机领域非常重要的概念,具备极高的地位,各个公司对算法的考察也非常热衷。

我们只有在数学、计算机和人工智能领域会听到算法的概念,再加上似乎没人能讲清楚算法的概念。所以,一听到算法,很多人以为是个高深概念。

在计算机科学中,算法是指一个被定义好的、计算机可施行其指示的有限步骤或次序,常用于计算、数据处理和自动推理。

简单来说,算法就是一个定义明确的步骤集合,用来解决特定问题或执行特定任务。或者说算法是一种解决问题的方法,它通过一系列的步骤,逐步达到目标。

在编程中,算法被用来处理数据、执行计算、自动推理和做出决策。

我们常用的公共类算法很多,比如:

  • 排序算法:如快速排序、冒泡排序等,用于将数据按特定顺序排列。
  • 搜索算法:如二分查找,用于在数据集中找到特定元素。
  • 加密算法:如AES、RSA,用于数据加密和解密。
  • 路径规划算法:如Dijkstra算法,用于寻找最短路径。

2、算法只存在于计算机领域吗

我们基本只会在数学和计算机领域听过算法的概念,提到“算法”,很多人的第一反应是复杂的数学公式或计算机程序。那其他领域存在算法吗?

我的观点是,算法并不仅仅存在于科技领域,各个领域都存在算法。

为什么?因为算法是一个通用概念,它是一种解决问题的思维方式,它帮助我们理清思路,找到最优的解决方案。

算法说白了就是:对一类问题的最优求解路径

每个行业都存在各种各样的问题,每个问题都有对应的解决方法和步骤。有问题,有沉淀下来的解决路径,这不就是算法嘛。

所以每个行业都存在算法。我们不要把算法想的那么高深。

3、生活中的算法

比如在日常生活中,无论是农民在田间播种,还是建筑师设计大楼,甚至是我们在解决生活中的问题时,算法都无处不在。

农民种地的算法:农民要种出好的麦子,这个过程就是一个算法。首先,需要选择合适的种子,这是输入;然后,要根据天气、土壤和季节来决定何时播种,这相当于判断条件;最后,经过施肥、浇水、除草等一系列步骤,农民收获了粮食。这就是一个完整的算法过程。

建筑师的算法:建筑师设计一栋坚固的房子也是在执行一套算法。从选择建筑材料,到规划结构,再到每一个房间的布局,每一个步骤都是为了最终目标服务的。

日常生活中的算法:就连你早晨起床的过程也可以看作一个算法。你可能会在心里梳理一个步骤:起床、刷牙、洗脸、吃早餐、出门。这些看似简单的步骤,背后都有一个潜在的逻辑顺序,确保你能够顺利开始新的一天。

社会的算法:在社会中,规则和法律也是一种算法。它们帮助我们解决各种社会问题,维护秩序。比如,交通规则就是为了避免混乱和事故的一套算法;教育体系则是为了培养人才的一种算法。

程序员的算法:对于编程领域的算法,有两点说明:

  • 对于编程来说,编写高效的代码就是在执行算法。从需求分析到设计,再到编码、测试,每一步都是有目的、有方向的。
  • 为什么正常情况下我们不提“算法”俩字呢?因为常规的编码复杂度不高,在程序员的心目中低复杂度的流程和步骤还不足以称之为“算法”。但实际上简单的流程和步骤也是算法。

4、完结

算法就是对一类问题的最优求解路径,它存在于各行各业,无处不在。

本篇完结!欢迎 关注、交流、全网可搜(程序员半支烟)

原文链接:https://mp.weixin.qq.com/s/s7pS_HUKjmfb-dNnHOyuBQ

相关文章
|
3月前
|
算法 机器人
算法题(3)
算法题(3)
46 5
|
3月前
|
算法
算法题(2)
算法题(2)
32 3
|
存储 并行计算 算法
FlashAttention算法详解
这篇文章的目的是详细的解释Flash Attention,为什么要解释FlashAttention呢?因为FlashAttention 是一种重新排序注意力计算的算法,它无需任何近似即可加速注意力计算并减少内存占用。所以作为目前LLM的模型加速它是一个非常好的解决方案,本文介绍经典的V1版本,最新的V2做了其他优化我们这里暂时不介绍。因为V1版的FlashAttention号称可以提速5-10倍,所以我们来研究一下它到底是怎么实现的。
568 0
|
算法
转:johnson算法的现实意义
Johnson算法是一种用于解决边数与节点数之间关系为O(n^2)的带权图的最短路径问题的算法。它是一种结合了Dijkstra算法和Bellman-Ford算法的技术,通过使用一个负权重的环检测器来消除负权重的影响。这种算法的时间复杂度为O(n^2+m log n)。
149 1
|
算法
海王算法(看完不会变成海王)
海王算法(看完不会变成海王)
172 0
海王算法(看完不会变成海王)
|
机器学习/深度学习 人工智能 算法
秒懂算法 | 尺取法
尺取法(又称为:双指针、two pointers),是算法竞赛中一个常用的优化技巧,用来解决序列的区间问题,操作简单、容易编程。 本篇介绍了尺取法的概念、反向扫描、同向扫描、模板、典型题目。
384 1
秒懂算法 | 尺取法
|
存储 机器学习/深度学习 人工智能
秒懂算法 | 分块算法
本篇内容包括了分块算法的思想的介绍、分块算法复杂度的分析以及相关例题。
374 0
秒懂算法 | 分块算法
|
机器学习/深度学习 算法 C++
树形DP算法的实现
树形DP算法的实现
树形DP算法的实现
|
算法
BWT算法
BWT算法
256 0
BWT算法
|
算法
算法练习——(2)逢7过
中国朋友们聚会时喜欢玩"逢7过"的游戏,老外有个同样的游戏,FlipFlop,它从1计数到100,顺序输出。当遇到3的倍数就要说“Flip”,遇到5的倍数就要说“Flop”,既为3的倍数又为5的倍数则要说“FlipFlop”,说错的话表演节目或罚酒。
197 0
下一篇
DataWorks