从未尝试过从3D分散的规模场中提取多角网格?
没有?
好吧,早在1987年,通用电气的两位程序员就这样做了,他们最终发明了Marching Cubes算法,这就是为什么医生可以将医疗扫描转化为3D模型,这实际上拯救了数百万人的生命。
这就是一个算法的力量。
Whenever you instruct a machine to solve a problem with code, you’re designing a procedure to transform bits into meaning有些算法是快速的,有些是优雅的,有些是如此的奇怪,他们感觉像魔法。
在这个故事中,我们将沉浸在有史以来最奇怪、最辉煌的十个算法中,这些算法有助于在毫秒内搜索数十亿行代码,从无处生成无限的地图,并将量子奇怪性转化为实际的逻辑。
1、波动函数崩溃
科学中最奇怪的事情之一是双裂实验:当你不观察时,粒子表现得像波浪,但当你观察它们时,它们像粒子一样进入位置。
这种“波功能崩溃”的想法听起来是抽象的,但它已经转化为一个令人惊讶的实用算法。 想象一下你正在设计一个侧向滚动的视频游戏地图。
起初,地图的每块砖都像是一个“波” - 它还没有什么具体的。 它充满了可能性. 但随着玩家前进 - 观察世界 - 算法“崩溃”不确定性。
这是有目的的随机性,没有任何一块生成人工智能,这只是奇怪的,美丽的逻辑。
2、传播模式
她很奇怪,真的很奇怪。
采取散射模型 - 像DALL·E和稳定散射这样的图像生成器背后的技术. 它们基于热力学的想法:散射,其中粒子自然地从高浓度区域扩散到较低浓度区域。
在机器学习中,这个过程被扭转了。
相反,从秩序到混乱,该算法以纯粹的噪音开始 - 像猫的图像 - 并学习如何逐渐将其改进为有意义的图像. 你从随机性(高)开始,并以清晰的,一致的输出(低)结束。
但是你需要一个模型来做到这一点,散发算法工作在两个阶段。
首先,在训练过程中,模型会拍摄真实的图像,并逐渐在前进过程中添加噪音,直到它们变得不可识别。
通过数以百万计的标签图像来做这件事,你会得到一个可以从头开始梦想新的图像的模型. 空间中的猫. 皮克斯风格的古罗马。
它很计算,但它不会停止在图像上。传播已经重新塑造了我们如何生成音乐、音频和视频。
#3 模拟 Annealing
编程中最令人沮丧的部分之一是,很少有一个正确的解决方案 - 只是一个大海的好的解决方案,还有几个很棒的解决方案. 类似于组织亚马逊仓库:有几十种方法可以做到这一点,但只有几个实际上在规模上有意义。
Simulated annealing 借用了其名称的冶金,其中金属被重复加热和冷却,以消除缺陷. 相同的概念适用于优化. 你试图在混乱的风景中找到最好的解决方案,充满了当地峰和山谷。
想象一下,你正在寻找一个山脉中最高的山峰。一个基本的登山算法会让你在看起来有前途的第一个碰撞上陷入困境,但模拟的水更聪明。它从高“温度”开始,这意味着它可以自由地探索 - 有时甚至接受更糟糕的路径来逃避当地的陷阱。
交易是探索与剥削,它不仅在代码中有用,而且也是学习编码的好比喻。
第4章 睡不着
你不能谈论算法而不提出排序 - 也许最荒谬的聪明(和完全无用的)曾经发明的是黑色睡眠.
传统分类算法,如快递或水果,使用分割和征服策略,重复地将数组分割成子数组,并高效地排序它们,但在4chan上,一个疯狂的天才提出了一个完全不同的方法。
这是如何工作的:对于数组中的每个数字,开始一个新的线程. 每个线程睡眠数毫秒等于其值,然后在醒来时打印数字. 因为较小的数字睡眠的时间较短,它们被打印得更早 - 结果是排序的输出。
聪明的部分?它跳过了所有常见的逻辑,并将CPU的线程编程器转化为排序引擎. 没有比较. 没有回归. 只需睡觉和打印。
但是它是非常不切实际的。它打破了负数,重复或大值。它也是无效的,每一个数字创建一个线条。它取决于睡眠时间,这并不太准确。
第5章 神明
BogoSort是一个开玩笑的算法:它随机一遍又一遍地篡改一个数组,直到通过纯粹的运气,结果被排序。
现在想象一下将这一点与量子力学和多元宇宙的想法相结合,理论上,如果所有可能的结果存在于无限的平行宇宙中,那么一些宇宙,你的数组已经排序。
该技术尚未完全到位,但一个“量子BogoSort”将通过同时创造所有这些可能性而起作用,然后立即崩溃到数组被排序的宇宙中 - 基本上让量子随机为您工作。
当然,这是科幻小说,不是计算机科学,我们不能随意观察或崩溃多元宇宙,但这是一个关于粗力随机性的有趣的思想实验,以其逻辑(和荒谬)的极端。
第6章 - 跳舞
这里是我最喜欢的。关于算法我觉得很酷的是,它们有时是如何反映大自然的。从1986年开始的Craig Reynolds的Boids计划 - 它是第一个人工生命模拟之一,它模仿了鸟类的群。感觉如此活着。
每个鸟类(或“小鸟”)只遵循三个规则:避免碰撞邻居(分离),与他们的方向(调和),并向当地群体的中心(凝聚力)移动。
没有人负责,但是当你模拟一堆这些简单的行为时,你会得到迷人的有机模式,这些模式像一个真正的羊群一样移动和流动。
这里的美丽不在代码中 - 它在于什么出现这些复杂的群体动态不需要被明确地编程,它们只是发生,就像碰到大自然的骗局代码来实现分散协调。
#7 - SHOR的算法
允许人们锁定邮箱并用独特的签名签署信件的想法是基于加密学的一个重要概念:计算大数字的困难。
大多数加密方法背后的安全性依赖于这个简单的数学现实 - 将大数加起来很容易,但要弄清楚产品背后的两个原始总数—一个被称为prime factorization —这是非常困难和耗时的。
事实上,它是如此困难,以至于它可能需要您的笔记本电脑数百万亿年的时间来 brute-force解决方案 - 除非,当然,我们开始使用量子计算机。
Shor 的算法可以比传统方法更快地将大数字分解为主要因素,但这个算法是如何运作的,事情变得非常奇怪。
Shor的算法的核心是量子力学概念,如量子比特,叠加和混合,这些概念允许量子计算机同时执行巨大的计算,这是经典计算机甚至无法接近的。
虽然该算法本身是合法的,但其现实世界的应用仍然处于早期阶段,事实上,使用量子计算计算计算的最大数字仅为21个,IBM的最先进的量子系统Q System One无法计算一个数字像35一样简单。
最近,一支中国团队成功使用量子计算机计算出一个巨大的数字,但他们使用了一种算法,对于更大的数字不大规模,这意味着它还不适用于一般用途。
然而,如果量子计算机变得足够强大,并且有人想出如何将这些算法扩展到真正大的数字,那么就等待网络安全领域的严重破坏。
# 8 - 行进的古巴
在这个故事的开头,我们提到了Marching Cubes算法,但值得深入研究,因为它是可视化3D数据的主要转折点,尤其是在医学领域。
想象一下你对人体进行3D扫描,就像从MRI中。MRI不会给你一个3D模型,而是数字的巨型立方体 - 一个3D尺寸场。该场的每个点都具有代表组织密度或信号强度的东西的值。
这就是Marching Cubes进入的地方,该算法将这个3D字段带入并一次穿过它,每个字段由该字段的8个邻近数据点组成。
现在,这是一个聪明的点:这八个点的每一个点都高于或低于一个门槛(例如,皮肤变成骨头)。
这给了你一个8位数 - 每个小立方体的256种可能的组合. 对于每个组合,三角形的特定的模式已经预计算并存储在一个搜索表中。
通过重复这个过程 - 通过立方体走过立方体,插入值,寻找形状 - 算法逐渐构建一个完整的3D网格。
这在20世纪80年代是突破性的,因为它将MRI或CT扫描片段转化为实际的3D模型,医生可以旋转,缩放和分析,即使在今天,Marching Cubes仍在许多领域使用 - 从医学成像和地质学到游戏中的程序生成。
# 9 — 实际的拜占庭错误容忍
在现代计算中,我们经常使用分布式系统 - 计算机网络遍布云端,这将我们带到分布式计算中最著名的问题之一:拜占庭将军问题。
想象一下:几位来自拜占庭军的将军围绕着一个城市,他们需要同时协调和攻击以获胜,但他们只能通过发送消息进行沟通,其中一些将军可能是试图破坏计划的叛徒。
在分布式系统中,一些机器可能会崩溃,慢下来,甚至被黑客攻击。
这就是PBFT(Practical Byzantine Fault Tolerance)等共识算法出现的地方。PBFT旨在处理这些类型的失败。它通过让一个节点通过播放一个“预备”消息来提出行动来工作。其他节点以承认响应。一旦某些节点(通常有三分之二或更多)同意,他们就达成共识。最后,原始节点发出一个“承诺”消息,告诉每个人执行该操作。即使三分之一的节点有故障或恶意,系统仍然可以正常运作。
像PBFT这样的算法是区块链系统和分布式云数据库的支柱,有助于它们保持一致性和可靠性,即使事情发生错误。
第10章:鲍伊尔·摩尔
最后,这将我们带到一个老式的算法,它悄悄地支持一些我们今天使用的最快的工具 - 如grep。更快它得到。
大多数基本的搜索算法都是从左到右,检查每一个字符一个接一个,但Boyer-Moore扭转了这一点 - 它扫描从right to left在搜索模式中,它使用两个聪明的技巧来跳过大量的文本。“needle”在一个巨大的文本块。
1. Bad character rule:
如果你正在搜索“钉子”,而当前的文本字符是“z”,那么就没有办法在那个点开始或之前进行匹配,所以,而不是按字符进行检查,算法将前进6个位置 - “钉子”的全部长度 - 并继续进行。
2. Good suffix rule:
如果你正在寻找“钉子”,而你刚刚在结束时匹配了“dle” - 但下一个字符打破了匹配 - 算法不会从下一个字母开始。相反,它问:在“钉子”中“dle”是否更早出现?如果是的,它会改变模式,以便更早的“dle”排列起来。
这些 heuristic 跳跃策略不是完美的,但它们是路比暴力手段更有效。
结果?随着文本的长度增加,算法倾向于跳过越来越多的字符,使其与输入的大小相对较快,这就是为什么grep等工具可以以惊人的速度咀嚼几兆日志 - 为什么这个几十年的算法今天仍然感觉像黑魔法。
当逻辑与想象力相遇时:算法的真正力量
无论是将量子不确定性转化为实际的图像生成,用三个简单的规则模仿生物聚集行为,还是回头搜索文本以更快地找到模式,这些方法都表明,最不传统的想法往往会导致最强大的解决方案。
使这些算法辉煌的不是它们的效率或新颖性,而是它们的大胆性;它们挑战假设;它们在头脑上扭转问题;它们把随机性变成结构,混乱变成秩序,抽象理论变成现实世界的影响。
超过优雅的数学工具 - 这些10个奇怪的算法are a testament to human ingenuity.
你想经常听我说吗?
联系我们在LinkedIn我分享日常可操作的见解,提示和更新,以帮助您避免昂贵的错误,并在AI世界保持领先地位。
你是一个技术专业人士,想通过写作来培养你的观众吗?
↓↓不要错过我的电子邮件!
不要错过我的电子邮件我的Tech Audience Accelerator充满了可操作的写作和观众建设策略,这些策略帮助数百名专业人士脱颖而出,并加速其增长。