现实世界中的算法

2025-06-08

现实世界中的算法

横幅

需要以编写代码为生的计算机科学家经常在整洁美丽的理论小世界和有些混乱的、“macgyverish”的实际软件工程世界之间徘徊。

在理论世界里,可爱的毛绒玩具互相传递着和平与爱的信息。它们生活在一个美丽的星球上,拥有丰富的自然资源。

在现实世界中,物体有时会试图点燃彼此。他们酒后驾车,和岳母住在一间100平方英尺的公寓里,岳母是在他们和另一个项目中那个火辣的方法结婚后搬进来的。

但尽管如此,计算机科学家每次访问理论星球时总是试图带回一些可爱的物体。

有一次,就连我也很幸运。我之前工作的一家大公司需要一个目录系统,帮助顾客在他们那栋城市街区大小的大楼里导航。你知道他们在商场里摆放的那种“你在这里”地图,上面有一个红色的大圆点,指示你的位置。就像那样,只不过是在大数字屏幕上。

总之,长话短说,项目经理预测该项目将需要数周时间才能完成,因为将客户从建筑物中的任何 A 点路由到任何 B 点涉及相当复杂的问题。

事实上我自己也这么想。但后来我想起我们网络部门的同事不久前说过一个关于“最短路径算法”的东西。当时他正试图向我解释,在给定多条可能的路径的情况下,网络数据包如何高效地传输。

简单的谷歌搜索一下,就找到了一个完整的 Dijkstra 算法实现。整个实现,从头到尾用 Java 写的代码应该有 100 行。非常简洁。

由于我不清楚它的工作原理或它试图解决的问题,所以我查阅了维基百科文章:

Dijkstra 算法是一种用于查找图中节点之间最短路径的算法。

例如,如果图的节点代表城市,边路径成本代表由直达道路连接的城市对之间的行驶距离,则可以使用 Dijkstra 算法来查找一个城市与所有其他城市之间的最短路线。

哦,好的。所以我要做的就是把建筑物里的所有点都建模成“节点”,用“边”连接它们,并为每条边分配一个距离。然后算法就可以利用这些信息找出从任意点 A 到任意点 B 的最短路径。听起来很简单。

我把代码复制粘贴到我的项目中,输入了几个样本点,并在一对端点上进行了测试。它成功了。

我在其他几个端点上尝试了它,为算法添加了可供选择的替代路径,并且每次都能完美运行。

我把代码部署到我们的开发环境中,并展示给项目经理看。他简直不敢相信。接到任务后的几天内,我就给他展示了产品的实际演示。

然后他开始自己测试。他确信自己能找到一些会破坏算法的极端情况。他甚至几次自豪地来找我,说他找到了一个。但每次我们都发现,问题出在他输入的输入上,而不是算法本身。

那么这个故事的寓意是什么呢?至少对我来说,它让我意识到计算机科学是一门很有用的学科,而且它与软件开发截然不同。此外,它还让我明白了编程有一些强大的基本原理。学好这些基础知识绝对值得,因为投入学习的时间将获得成倍的回报。

鏂囩珷鏉ユ簮锛�https://dev.to/acoh3n/algorithms-in-the-real-world-j96
PREV
你从未读完的那本编程书
NEXT
像专业人士一样美化你的 GitHub 个人资料 😍 添加自述文件 发挥你的创造力 固定最佳存储库 为优秀的 GitHub 个人简介部分做出贡献