什么是算法?读完这篇文章你就知道了

算法是指完成一个任务所需要的具体步骤和方法。也就是说给定初始状态或输入数据,经过计算机程序的有限次运算,能够得出所要求或期望的终止状态或输出数据。

编程界的“Pascal之父”NicklausWirth有一句人尽皆知的名言:“算法+数据结构=程序”,Algorithm+DataStructures=Programs,可见算法对程序的重要性。

本文从算法的基本定义出发,详细解读了算法的发展历程、主要特征、衡量指标和算法设计的基本方法,供大家学习参考。

1.算法的基本定义

一句话概括一下,算法就是解决问题的操作步骤。

2.算法的发展历程

在我国古代,算法被称为“演算法”,关于算法的起源最早可以追溯到我国古代公元前1世纪的《周髀算经》,是算经的十书之一,原名《周髀》,主要阐述古代中国的盖天说和四分历法。在唐朝的时候,此书被定为国子监算科的教材之一,并改名为《周髀算经》。《周髀算经》中记载了勾股定理、开平方问题、等差级数等问题,其中用到了相当复杂的分数算法和开平方算法等。在随后的发展中,出现了割圆术、秦九昭算法和剩余定理等一些经典算法。

阿拉伯数学家花拉子米

世界上第一个算法

公元前300年,“几何之父”欧几里得提出了人类史上第一个算法——欧几里得算法,又称辗转相除法,是求最大公约数的一种方法。它的具体做法是:用较大数除以较小数,再用出现的余数(第余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。

辗转相除法举例:

求10,25的最大公约数:

25/10=2……5

10/5=2……0

所以10,25的最大公约数为5

辗转相除法代码实现:

世界上第一个算法程序

虽然这个算法未能实现,但Ada对计算机科学的贡献毋庸置疑,1953年,阿达之前对查尔斯·巴贝奇的《分析机概论》所留下的笔记被重新公布,并被公认对现代计算机与软件工程造成了重大影响。

“软件之母”AdaLovelace

图灵机

20世纪的英国数学家图灵提出了著名的图灵论题,并提出一种假想的计算机的抽象模型,这个模型被称为图灵机。

图灵机,又称图灵计算机,是指一个抽象的机器,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人类进行数学运算。

它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。

图灵机是可被视作任意解决有限数学逻辑过程的机器,可以用来模拟任何算法。图灵机的出现解决了算法定义的难题,图灵的思想对算法的发展起到了重要的作用。

3.算法的重要特征

一个算法应该具有以下五个重要的特征:

·有穷性(Finiteness)

算法的有穷性是指算法必须能在执行有限个步骤之后终止;

·确切性(Definiteness)

算法的每一步骤必须有确切的定义;

·输入项(Input)

一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;

·输出项(Output)

一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;

·可行性(Effectiveness)

4.算法的评定

算法的复杂性是算法效率的度量,在评价算法性能时,复杂性是一个重要的依据。算法的复杂性的程度与运行该算法所需要的计算机资源的多少有关,所需要的资源越多,表明该算法的复杂性越高:所需要的资源越少,表明该算法的复杂性越低。

评定一个算法的优劣可以从以下5个方面进行衡量:

是对一个算法在运行过程中临时占用存储空间大小量度。

2)空间复杂度

程序运行时基本操作所执行的次数。

3)正确性

算法的正确性是评价一个算法优劣的最重要的标准。

4)可读性

算法的可读性是指一个算法可供人们阅读的容易程度。

5)鲁棒性

鲁棒性是指一个算法对不合理数据输入的反应能力和处理能力,也称为容错性。

5.算法设计和分析的基本方法:

1)递归和递推。递归和递推是学习算法设计的第一步。递归算法是把大问题分解成相对较小的问题的过程,而递推就是从小问题逐步推导出大问题的过程。无论递归还是递推,都应该有初始状态。

2)搜索、枚举及优化剪枝。搜索在所有算法中既是最简单也是最复杂的算法。说它简单,是因为算法本身并不复杂,实现容易:说它最复杂,是因为要对搜索的范围进行一定的控制,不然就会出现超时等问题。搜索技术主要包括广度优先搜索和深度优先搜索。当其余算法都无法对问题进行求解时,搜索或许是唯一可用的方法。搜索是对问题的解空间进行遍历的过程。有时问题解空间相当庞大,完全遍历解空间是不现实的,此时就必须充分发掘问题所包含的约束条件,在搜索过程中应用这些条件进行剪枝,从而减少搜索量。

3)分治法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题.....直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)......

5)贪心算法(亦作饕餮法)。就是一种在每一步选择中都采取在当前状态下最好/优的选择,从而希望导致结果是最好!优的算法。贪心法可以解决一些最优性问题,如:求图中的最小生成树、求哈夫曼编码.....对于其他问题,贪心法般不能得到我们所要求的答案。一旦一个问题可以通过贪心法来解决,那么贪心法一般是解决这个问题的最好办法。由于贪心法的高效性以及其所求得的答案比较接近最优结果,贪心法也可以用作辅助算法或者直接解决一些要求结果不特别精确的问题。

THE END
1.『算法导论』什么是算法?什么是程序?算法和程序1.什么是算法 2.“算法”的来源 3.什么是程序 4.三种常用的描述算法的形式 5.算法的好与坏 6.算法复杂性的渐近性态 7.时间复杂性渐进表示法 8.常见的算法复杂度的大O阶 1.什么是算法 算法(Algorithm)是指解决问题的方法或过程,它包含一系列步骤,用来将 输入数据转换成输出结果 https://blog.csdn.net/weixin_53463734/article/details/126102763
2.什么叫算法什么叫计算机算法算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题https://edu.iask.sina.com.cn/jy/2RDeRSFqaAB.html
3.什么叫算法?它有哪些特性?百度试题 题目什么叫算法?它有哪些特性?相关知识点: 试题来源: 解析 算法是对特定问题求解步骤的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作。算法具有有穷性、确定性、可行性、输入和输出5个特性。反馈 收藏 https://easylearn.baidu.com/edu-page/tiangong/bgkdetail?id=8e05b443cf84b9d528ea7a20&fr=search
4.高中数学知识点整理(6)——算法(2)输出语句的作用是实现算法的输出结果功能 (3)"提示内容"提示用户输入什么样的信息,表达式是指程序要输出的数据 (4)输出语句可以输出常量、变量或表达式的值以及字符 3.赋值语句 (2)赋值语句的作用是将表达式所代表的值赋给变量 (3)赋值语句中的"="称作赋值号,与数学中的等号的意义是不同的。赋值号的左右https://zhuanlan.zhihu.com/p/266795449
5.从一道简单算法题里面解释什么叫做O(1)腾讯云开发者社区今天有同学在粉丝群里面问了一个算法题: 对话中的题目如下: 题目要求从一个有序数组 nums 中,原地删除重复出现的元素,使得每个元素只出现一次。返回删除后数组的长度。不能使用额外的数组空间,使用 O(1)空间复杂度。 这个同学之所以做错了,是因为他没有理解什么叫做 O(1)空间复杂度。他在第3行实际上生成了一https://cloud.tencent.com/developer/article/1823176
6.什么叫结构化的算法为什么要提倡结构化的算法结构工程师将算法分解成模块化的部分。这样做可以增强代码的清晰度和可维护性,提高编程效率。提倡结构化算法,因为https://www.bkw.cn/zcjls/ask/4577918.html
7.《人民政协报》:(张欣)不想被算法“绑架”?今年3月1日施行的新规什么是“算法安全”?我认为应该包括以下三个方面。 一是平台企业确保算法模型的设计和运行是安全可靠的,是按照设计的初衷稳健运行的。 二是算法应用在部署和运行层面所产生的影响是可控的。例如,具有舆论属性或者社会动员能力较强的算法应用就不能通过流量造假和控制热搜等方式影响网络舆论,引发网络公共事件,使得传播秩序https://law.uibe.edu.cn/mtmf/9726609ad0244a75b6d78cbf424b8904.htm
8.什么是算法?一个算法应该具有以下五个重要的特征:1、有穷性: 一个算法必须保证执行有限步之后结束;2、确切性: 算法的每一步骤必须有确切的定义;3、输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件;4、输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有https://m.imooc.com/mip/wenda/detail/509729
9.算法是指什么?算法概述算法是指什么?算法概述 描述 一、算法概述 算法是指解题方案的准确而完整的描述,是一系列解决问题、高度符合逻辑性、可执行性的指令集合,代表运用系统方法描述解决问题的策略机制。算法能够对一定规范的输入在有限时间内运行得到输出。 算法中的指令描述的是计算过程,当其运行时能从初始状态和初始输入(初始输入可能为https://m.elecfans.com/article/2008707.html
10.什么是密码算法?马在旅途:什么是密码算法? 回复:密码算法是实现密码对信息进行“明”“密”变换的一种特定的规则。不同的密码算法有不同的变换规则。因此,密码算法也是加密算法、解密算法、签名算法和认证算法等各类算法的统称。 密码算法对密码系统的安全性有着至关重要的意义。衡量密码算法的优劣采用的是密码强度的概念。密码强度https://www.oscca.gov.cn/sca/hdjl/2016-11/18/content_1002847.shtml
11.什么是哈希算法?常见的哈希算法有哪些?区块链技术区块链这篇文章主要介绍了什么是哈希算法?常见的哈希算法有哪些?的相关资料,需要的朋友可以参考下本文详细内容介绍 哈希算法是一种数学函数或者算法,它可以将任意长度的数据(称为“消息”)转换为固定长度的字符串(称为“哈希值”或者简称“哈希”)。哈希算法的作用是将数据进行一次性的加密,从而生成一个唯一且不可逆的标识https://www.jb51.net/blockchain/891421.html
12.老邪给你说说什么是算法00:00/00:00 老邪给你说说什么是算法 IT老邪讲编程发布于:辽宁省2023.06.09 02:17 +1 首赞 老邪来给你讲讲什么是算法? 聊IT我很特别 学编程找IT老邪https://learning.sohu.com/a/683432171_121730054
13.算法是什么?算法是什么? 平台算法,是指互联网平台企业在日常运营中,以平台为载体,与消费者、平台内经营者进行交易等交互过程中所主动执行的算法。 算法分为个性化推送类、检索过滤类、排序精选类、调度决策类、生成合成类五大类。其中,个性化推送类是大头。 举个例子,刷微博、抖音、朋友圈等媒体平台时,是不是总是刷到自己https://www.jianshu.com/p/5b9ad0124070
14.算法到底算什么?大咖说法讨论法律与算法的关系,显然可以同时做双向的思考:(1)法律对算法的影响;(2)算法对法律的影响。本文主要关注的是“法律对算法的影响”这个话题,这通常也被叫作“法律对算法的介入或规制”;相应地,所要处理的核心问题,就是“法律介入或规制算法的最佳方式是什么”。所以,我要面对两类论辩对手:其一,“法律根本没有http://www.mzyfz.com/html/1335/2020-04-06/content-1422962.html
15.什么是算理和算法在计算教学中,算理与算法是两个不可或缺的关键。算理是对算法的解释,是理解算法的前提,算法是对算理的总结与提炼,它们是相互联系,有机统一的整体。透彻理解算理和熟练掌握算法是提高学生计算能力的重要保证。那么什么叫做算理和算法呢?算理:即计算的原理或者道理,它有两层含义:一是列式的依据,即某一问题为什么要用https://www.unjs.com/xuexi/jiaoyuwenzhai/20111016201853_703871.html
16.百科什么是思维算法(AoT)?百科| 什么是思维算法(AoT)? 摘要 思维算法 (AoT) 是人工智能 (AI) 领域的一种突破性方法,彻底改变了 AI 模型的思考和推理方式 。 币界网报道: 作者:Aimen Noor,CoinTelegraph;编译:五铢, 一、思维算法(AoT)的解释 AoT 通过模仿人类思维过程来增强 AI 推理能力,提高解决问题的适应性和效率。https://m.528btc.com/news/116212848.html