什么是计算机算法,它们是如何工作的?

除非你对数学或编程感兴趣,否则“算法”这个词对你来说可能是希腊语,但它是你用来阅读本文的所有东西的组成部分之一。这里有一个快速的解释,他们是什么,以及如何工作。...

什么是计算机算法,它们是如何工作的?

除非你对数学或编程感兴趣,否则“算法”这个词对你来说可能是希腊语,但它是你用来阅读本文的所有东西的组成部分之一。这里有一个快速的解释,他们是什么,以及如何工作。

免责声明:我不是一个数学或计算机科学老师,所以不是所有的术语我使用的技术。那是因为我试图用通俗易懂的英语解释一切,因为人们对数学不太熟悉。也就是说,其中涉及到一些数学问题,这是不可避免的。数学极客们,请随意在评论中纠正或更好地解释,但请对我们当中不喜欢数学的人保持简单。

Ian Ruotsala图片

什么是算法?

“算法”一词的词源与“代数”相似,只是它指的是阿拉伯数学家阿尔·赫瓦里兹米(al-Khwarizmi)(只是一个有趣的小道消息)。对于我们当中的非程序员来说,算法是一组指令,它们接受输入a,并提供输出B,以某种方式改变所涉及的数据。算法有着广泛的应用。在数学方面,它们可以帮助从数据集中的点计算函数,还有更高级的东西。除了在编程本身中使用之外,它们在文件压缩和数据加密等方面也发挥着重要作用。

一套基本的指令

假设你的朋友在一家杂货店和你见面,你引导他走向你。你说“从右边的门进来”、“从左边的鱼区过去”和“如果你看到牛奶场,你就从我身边过去”之类的话。算法就是这样工作的。我们可以使用流程图来说明基于我们提前知道或在过程中发现的标准的说明。

什么是计算机算法,它们是如何工作的?

(图片标题为“破冰常规”编辑:由触发器和飞轮提供)

从一开始,你会沿着这条路走下去,根据发生的事情,你会沿着“流程”走到最终的结果。流程图是一种可视化工具,可以更容易地表示计算机使用的一组指令。类似地,算法也有助于对更多基于数学的模型进行同样的处理。

让我们用图表来说明我们可以给出方向的各种方法。

什么是计算机算法,它们是如何工作的?

我们可以把这个图表示为它所有点之间的连接。为了重现这个图像,我们可以给其他人一套指令。

方法1

我们可以将其表示为一系列点,信息将遵循图={(x1,y1),(x2,y2),…,(xn,yn)}的标准形式。

graph = {(0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1)}

很容易一个接一个地绘制每个点,并将它们连接到上一个点。然而,想象一下一个有一千个点或多个线段的图形,所有的方向都是这样的。名单上会有很多数据,对吧?然后必须连接每一个,一次一个,可能是一种痛苦。

方法2

我们可以做的另一件事是给出一个起点,即它和下一个点之间的直线的斜率,并用标准形式的graph={(起点},[m1,x1,h1],…,[mn,xn,hn]}指出下一个点的位置。这里,变量'm'表示直线的斜率,'x'表示要计数的方向(无论是x还是y),'h'告诉您在该方向上要计数多少。您还可以记住在每次移动后绘制一个点。

graph = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [-3,x,1], [-3,x,1]}

你会得到相同的图表。你可以看到这个表达式中的最后三个词是相同的,所以我们可以通过某种方式说“重复三次”来减少这个词。假设在任何时候看到变量'R'出现,都意味着重复最后一件事。我们可以这样做:

graph = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [R=2]}

如果单个点并不重要,只有图形本身才重要呢?我们可以将最后三部分合并如下:

graph = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,3]}

它使事情比以前缩短了一点。

方法3

让我们换一种方式试试。

y=0, 0≤x≤3 x=0, 0≤y≤3 y=x, 3≤x≤5 y=2.5x-7.5, 5≤x≤7 y=-3x+29, 7≤x≤8 y=-3x+29, 8≤x≤9 y=-3x+29, 9≤x≤10

这里我们用纯代数的术语来表示。同样,如果点本身不重要,只有图表才重要,我们可以合并最后三项。

y=0, 0≤x≤3 x=0, 0≤y≤3 y=x, 3≤x≤5 y=2.5x-7.5, 5≤x≤7 y=-3x+29, 7≤x≤10

现在,你选择哪种方法取决于你的能力。也许你擅长数学和绘图,所以你选择了最后一个选项。也许你擅长导航,所以你选择了第二种选择。然而,在计算机领域,你正在做许多不同种类的任务,而计算机的能力并没有真正改变。因此,算法针对它们完成的任务进行了优化。

另一个需要注意的要点是,每个方法都依赖于一个键。每一套指令都是无用的,除非你知道如何处理它们。如果你不知道你应该绘制每个点并连接这些点,那么第一组点就毫无意义。除非您知道第二种方法中每个变量的含义,否则您将不知道如何应用它们,就像密码的密钥一样。该密钥也是使用算法的一个组成部分,通常,该密钥可以在社区中或通过“标准”找到

文件压缩

当您下载一个.zip文件时,您可以提取其中的内容,以便可以使用其中的任何内容。现在,大多数操作系统可以像普通文件夹一样深入到.zip文件中,在后台执行所有操作。十多年前,在我的windows95机器上,我不得不手动提取所有内容,然后才能看到里面除了文件名以外的任何内容。这是因为存储在磁盘上的.zip文件不是可用的格式。想一个可拉出的沙发。当你想把它当床用的时候,你必须把垫子取下来展开,这样会占用更多的空间。当你不需要的时候,或者你想运输的时候,你可以把它折叠起来。

压缩算法专门针对其目标文件的类型进行调整和优化。例如,每种音频格式都使用不同的方式来存储数据,当音频编解码器对这些数据进行解码时,将产生与原始波形相似的声音文件。有关这些差异的更多信息,请查看我们的上一篇文章,所有这些音频格式之间的差异是什么?无损音频格式和.zip文件有一个共同点:它们都在解压过程后以精确的形式生成原始数据。有损音频编解码器使用其他方法来节省磁盘空间,例如修剪人耳听不到的频率,平滑分段波形以去除一些细节。最后,虽然我们可能无法真正听到MP3和CD曲目之间的区别,但肯定是前者信息不足。

数据加密

什么是计算机算法,它们是如何工作的?

算法也用于保护数据或通信线路。存储数据不是为了减少磁盘空间,而是以其他程序无法检测到的方式进行存储。如果有人偷了你的硬盘并开始扫描它,即使你删除了文件,他们也可以提取数据,因为数据本身仍然存在,即使转发到它的位置不见了。当数据被加密时,所存储的东西看起来都不像它是什么。它通常看起来是随机的,就好像碎片是随着时间积累起来的。您还可以存储数据并使其显示为另一种类型的文件。图像文件和音乐文件是很好的,因为它们可以相当大,而不会引起怀疑,例如。所有这些都是通过使用数学算法来完成的,这些算法将某种输入转换成另一种非常特殊的输出类型。有关加密工作原理的更多信息,请查看HTG解释:什么是加密及其工作原理?


算法是数学工具,在计算机科学中有多种用途。它们以一致的方式提供起点和终点之间的路径,并提供遵循该路径的指令。知道的比我们强调的更多?在评论中分享你的解释!

  • 发表于 2021-04-09 01:40
  • 阅读 ( 109 )
  • 分类:互联网

你可能感兴趣的文章

什么是计算机科学?

用最简单的术语来说,计算机科学是研究信息(“数据”)以及如何操纵它(“算法”)来解决问题,主要是在理论上,但也在实践中。 ...

  • 发布于 2021-03-13 19:10
  • 阅读 ( 207 )

什么是神经网络?它们是如何工作的?

... 像大脑一样的计算机 ...

  • 发布于 2021-03-16 14:03
  • 阅读 ( 347 )

什么是slam?自动驾驶汽车怎么知道自己在哪里

... 此外,SLAM算法使用静态图像和计算机视觉技术作为外部测量。这是一个单一的相机,但可以更准确地与立体声对。 ...

  • 发布于 2021-03-21 23:54
  • 阅读 ( 350 )

什么是机器学习算法?他们是这样工作的

... 机器学习是计算机科学的一个分支,它致力于赋予人工智能学习任务的能力。这包括开发没有程序员显式地编写人工智能来做这些事情的能力。相反,人工智能能够利用数据来自学。...

  • 发布于 2021-03-23 07:51
  • 阅读 ( 166 )

5种常见的加密类型以及为什么您不应该自己创建

...击需要大约38万亿兆兆字节的数据——比2016年世界上所有计算机上存储的所有数据都要多。据其他估计,暴力破解AES-128密钥所需的总时间为数十亿年。 ...

  • 发布于 2021-03-24 13:51
  • 阅读 ( 218 )

ssh是什么?它代表什么?

...密的隧道。但是当SSH在客户机-服务器配置中提供到特定计算机的安全连接时,VPN在您的计算机和VPN服务器之间提供安全连接。 ...

  • 发布于 2021-03-28 08:50
  • 阅读 ( 321 )

计算机如何产生随机数

计算机为从密码学到电子游戏和赌博的所有东西生成随机数。随机数有两类——“真”随机数和伪随机数,两者的区别对于加密系统的安全性非常重要。 计算机可以通过观察一些外部数据(如鼠标移动或风扇噪音,这是不可预...

  • 发布于 2021-04-08 00:19
  • 阅读 ( 188 )

为什么不应该在windows上启用“fips兼容”加密

...你在必要时使用FIPS模式。例如,如果您使用的是美国**的计算机,则根据**自己的法规,该计算机应该启用“FIPS模式”。在您自己的个人计算机上启用此设置的情况并不存在,除非您在启用此设置的美国**计算机上测试软件的行...

  • 发布于 2021-04-09 20:19
  • 阅读 ( 107 )

暴力攻击解释:如何所有的加密是脆弱的

...暴力攻击很容易理解,但很难防范。加密就是数学,随着计算机在数学方面的速度越来越快,他们在尝试所有的解决方案和确定哪一个适合方面也越来越快。 这些攻击可以用来对付任何类型的加密,并取得不同程度的成功。随...

  • 发布于 2021-04-11 18:25
  • 阅读 ( 139 )

一项新的政府研究称,面具正在破坏面部识别算法

...盖的鼻子越多,算法越难找到识别人脸。 报告作者、NIST计算机科学家梅恩说:“随着流感大流行的到来,我们需要了解人脸识别技术是如何处理蒙面人脸的。”。“我们已经开始关注在流感大流行之前开发的算法如何受到戴着...

  • 发布于 2021-04-18 16:25
  • 阅读 ( 193 )
hyo1563269
hyo1563269

0 篇文章

相关推荐