ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

算法0.什么是算法

2021-10-19 17:01:42  阅读:303  来源: 互联网

标签:计算机 一个 什么 问题 算法 解决问题 复杂度


一、基本概念

算法(Algorithm)是指一个解决问题的准确而完整的过程,包含一系列解决问题的清晰指令。

例如把大象放进冰箱需要几步,答案是3步:

  1. 打开冰箱门;
  2. 把大象塞进去;
  3. 关上冰箱门。

这三步准确并且完整的描述了解决这个问题的指令,所以从大的角度看,我们的日常生活中充满了算法,如何做一顿饭、如何冲一杯咖啡等等。但是这样去讨论算法就有点广泛了,很多现实问题是拥有近乎无穷变量的混沌系统,我们很难给出一个解决问题的方案。

扯远了,我准备讲的是计算机中算法。

在计算机中,算法就是解决一个问题的计算过程,该过程通过输入,然后通过算法获取一个正确的输出。按照这个思路,算法就是把输入转换为输出的计算步骤。

例如对一个数组进行排序
请添加图片描述

二、算法解决了什么问题

  1. 识别人类DNA中10万个基因
  2. 互联网中的网页快速访问与信息检索
  3. 电子商务中的核心技术,公钥密码与数字签名
  4. 如何按最有效的方式分配稀有资源
  5. 如何确定地图中某一点到另一点的最短道路
  6. 求两个序列的最长公共子序列
  7. 寻找n个点的凸包

上述只是无穷无尽的问题中的微不足道的一部分,但已经向我们展示出了算法的应用。同样,对于一个复杂问题,寻找一个真正的解或一个最优解是一个很大的挑战。

三、如何评价一个算法

如果计算机的计算速度无限快、储存空间无限大且免费,那么研究算法毫无意义,我们只需要关注如何才能正确获得问题的结果就行了。

可惜计算机计算速度很快,但是不是无限快;存储空间是廉价的,但不免费。

所以对于一个算法,时间和空间都是有限的资源,我们需要合理运用这两种资源来解决问题。

因此对于算法的评价引入了时间复杂度和空间复杂度。

1 时间复杂度

算法的时间复杂度是指执行算法所需要的计算工作量。一般来说,计算机算法是问题规模 n 的函数 f(n) ,算法的时间复杂度也因此记做:

T ( n ) = O ( f ( n ) ) T(n) = O(f(n)) T(n)=O(f(n))

从想当然的角度和理论的角度看,算法规模越大,所需要的时间就越久,增长的速率则与 f(n) 正相关。

当然时间复杂度还分好几种,如最坏情况下、最好情况下、平均情况下这几种,这些都需要根据具体问题进行具体分析。

2 空间复杂度

算法的空间复杂度的衡量就简单的多,是指算法需要消耗的内存空间。

除了时间和空间复杂度外,还有几项评价算法的指标。

3 正确性

毫无疑问,这是废话!

4 可读性

算法是人设计和使用的,所以得关照一下使用者ㄟ( ▔, ▔ )ㄏ,或者防止过段时间连自己都看不懂。

5 鲁棒性

这个词是英文单词 robustness 英译过来的, 用中文来理解的话大概是稳定性的意思吧,指一个算法对不合理数据输入的反应能力和处理能力,也称为容错性。

四、结语

以上就是关于算法的基本介绍、下一节开始将从排序算法开始进入算法的世界。

标签:计算机,一个,什么,问题,算法,解决问题,复杂度
来源: https://blog.csdn.net/a1191651771/article/details/120849715

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有