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

banner

除非你是数学或编程,“算法”这个词可能是希腊语,但它是你用来阅读这篇文章的一个基本组成部分。 这里有一个快速的解释,它们是什么,以及它们如何工作。

免责声明:我不是一个数学或计算机科学老师,所以不是我使用的所有术语都是技术。 这是因为我试图用简单的英语解释一切,人们对数学不是很舒服。 话虽如此,有一些数学涉及,这是不可避免的。 数学怪胎,随时更正或更好地解释在评论,但请,保持简单的数学上不倾向于我们。

图片由 伊恩·Ruotsala

什么是算法?

“算法”一词具有类似于“代数”的词源,除了这是指阿拉伯数学家本人,al-Khwarizmi(只是一个有趣的tidbit)。 对于我们之间的非程序员,一种算法是一组指令,它们接受输入A,并提供输出B,其以某种方式改变所涉及的数据。 算法具有广泛的应用。 在数学中,他们可以帮助从数据集中的点计算函数,更先进的事情。 除了在编程本身的使用,它们在文件压缩和数据加密等方面发挥着重要作用。

基本指令集

假设你的朋友在杂货店和你会面,你会引导他走向你。 你说的话是“通过右侧门进来”,“通过左侧的鱼”,“如果你看到奶制品,你传过来了”。算法就是这样。 我们可以使用流程图来说明基于我们提前知道的标准的指示,或者在过程中找出。

icebreaking-routine

(图片名为“ 破冰常规 ”编辑:礼貌触发和飞轮

从开始,你会沿着路径走,根据发生了什么,你遵循“流”到最终结果。 流程图是可以更容易地表示计算机使用的一组指令的可视工具。 类似地,算法帮助做更多基于数学的模型。

图表

让我们使用图表来说明我们可以给出指示的各种方式。

graph_drawn.gif

我们可以将该图表示为其所有点之间的连接。 为了再现这个图像,我们可以给别人一组指令。

方法1

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

图表= {(0,0),(3,0),(3,3),(5,5),(7,10),(8,7),(9,4) }}

很容易绘制每个点,一个接一个,并将它们连接到上一个点。 然而,想象一下一千个点或多个段的图表。 那个列表会有很多数据,对吧? 然后必须连接每一个,一次一个,可以是一个痛苦。

方法2

我们可以做的另一件事是给出一个起始点,它和下一个点之间的线的斜率,并使用标准形式的graph = {(起点),[m1,x1,h1 ],...,[mn,xn,hn]}这里,变量m表示线的斜率,x表示计数方向(x或y),h许多人在所说的方向上计数你也可以记住在每次移动后画一个点。

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

你会得到同样的图。 你可以看到,这个表达式中的最后三个词是相同的,所以我们可以通过只是说“重复三次”在某种程度上修剪它。 让我们说,任何时候你看到变量“R”出现,它意味着重复最后一件事。 我们做得到:

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

如果个人点并不重要,只有图本身呢? 我们可以巩固最后三个部分,如下:

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

它缩短了一些从他们以前的地方。

方法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文件,在后台执行所有操作。 在我的Windows 95机器十几年前,我不得不手动提取一切,我可以看到的东西以外的文件名。 这是因为以.zip文件形式存储在磁盘上的内容不是可用的形式。 想想一个拉出的沙发。 当你想使用它作为床,你必须删除垫子和展开它,占用更多的空间。 当你不需要它,或者你想运输它,你可以把它折回来。

压缩算法专门针对它们所针对的文件类型进行调整和优化。 例如,音频格式各自使用不同的方式来存储数据,当由音频编解码器解码时,将给出类似于原始波形的声音文件。 有关这些区别的详细信息,请查看我们以前的文章, 什么是所有的音频格式之间的区别? 无损音频格式和.zip文件有一个共同点:它们都会在解压缩过程后产生原始数据的确切形式。 有损音频编解码器使用其他方法来节省磁盘空间,例如人耳不能听到的调整频率,以及平滑部分波形以去除一些细节。 最后,虽然我们可能无法真正听到MP3和CD轨道之间的差异,但在前者中肯定有信息的缺失。

数据加密

enc-algorithms-(truecrypt)

在保护数据或通信线路时也使用算法。 而不是存储数据,以使它使用较少的磁盘空间,它的存储方式是不可检测的其他程序。 如果有人窃取您的硬盘驱动器并开始扫描它,他们可以拾取数据,即使您删除文件,因为数据本身仍然存在,即使它的转发位置已经走了。 当数据被加密时,存储的任何东西都不像它是什么。 它通常看起来是随机的,就好像碎片随着时间的推移一样。 您还可以存储数据,并使其显示为另一种类型的文件。 图像文件和音乐文件对此有好处,例如,它们可能相当大而没有引起怀疑。 所有这些都是通过使用数学算法来完成的,这些算法采用某种输入并将其转换为另一种非常特定类型的输出。 有关加密如何工作的更多信息,请HTG解释:什么是加密,它是如何工作的?


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

赞 (1)
分享到:更多 ()