虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

您现在的位置是:首页 > 技术阅读 >  随机性如何改进算法

随机性如何改进算法

时间:2024-02-07

自计算机科学诞生之日起——这个领域以其有条不紊地解决问题的方法而闻名——随机性就发挥了重要作用。在世界上第一台通用电子计算机上运行的第一个程序使用随机性来模拟核过程。此后,类似的方法被用于天体物理学、气候科学和经济学。在所有这些情况下,在算法的某些步骤插入随机数有助于研究人员解释复杂过程可以发挥作用的多种方式的不确定性。

但是,将随机性添加到算法中也可以帮助你计算出明确判断真假问题的正确答案。「你只要说『好吧,让我放弃,让我不要尝试,让我随机挑选一些东西。』」滑铁卢大学的计算机科学家 Eric Blais 说,「对于太多的问题,这最终成为一种成功的方法。」

假设你要确定给定数字是质数(只能被 1 和它本身整除)还是合数(也可以被其他整数整除)。你可以简单地尝试将其除以所有可能的因数,但对于大数,这种「蛮力」方法和其他因式分解算法速度极慢。如果结果是合数,分解算法会告诉你它的除数的值——比你要求的更多的信息。如果你只关心数字的「素性」,有没有更高效的算法?

如果你使用随机性的话。基本思想可以追溯到 17 世纪法国数学家 Pierre de Fermat (费马)的一个结果,即他的「小定理」。Fermat 考虑了两个整数——称它们为 N 和 x。他证明了如果 N 是质数,那么 x^N − x 总是 N 的倍数,而不管 x 的值如何。等价地,如果 x^N − x 不是 N 的倍数,则 N 不可能是质数。但逆命题并不总是正确的:如果 x^N − x 是 N 的倍数,则 N 并不总是质数。

要将费马小定理变成素数检验,只需取你感兴趣的 N,随机选择 x,然后将这两个数代入 x^N − x。如果结果不是 N 的倍数,那么你就完了:你知道 N 肯定是合数。如果结果是 N 的倍数,那么 N 可能是素数。现在选择另一个随机 x 并重试。在大多数情况下,经过几十次尝试,你几乎可以肯定地得出 N 是质数的结论。「你这样做的次数很少。」Blais 说,「不知何故,现在你出错的概率小于从现在到你看到答案时小行星撞击地球的概率。」

论文链接:

https://www.sciencedirect.com/science/article/pii/0022314X80900840

使用随机算法(基于对费马小定理的改进)的第一个素数测试开创了一个新时代。事实证明,与非随机或确定性算法相比,用随机算法解决一个又一个问题要容易得多。关键是将每个问题重新定义为可以在给定某个数字 x 的适当值的情况下快速解决的问题,然后证明几乎任何 x 都可以解决。即使研究人员不知道如何确定任何特定选择是否是一个好的解决方案,该解决方案仍然有效。数学家开玩笑说,这个不寻常的挑战就像大海捞针。

但这些成功让研究人员想知道为什么随机性应该有助于解决诸如素数测试之类的问题,这些问题都是关于寻找隐藏的、非随机的模式。「这有点自相矛盾。」牛津大学计算机科学家 Rahul Santhanam 说, 「纯粹的随机性正在帮助你掌握解决问题的结构。」

1994 年,计算机科学家 Noam Nisan 和 Avi Wigderson 通过证明随机性虽然有用但可能并非必需,帮助解决了这一困惑。他们证明了以下两件事之一必须是正确的:要么所有可以使用随机性有效解决的问题也有快速确定性算法,要么许多众所周知的难题实际上很容易。计算机科学家认为第二种可能性极小。

论文链接:

https://www.sciencedirect.com/science/article/pii/S0022000005800431

事实上,计算机科学家经常发现通过从随机版本开始然后「去随机化」它来开发确定性算法更容易。布朗大学的计算机科学家 Eli Upfal 说:「一旦我有了它,我突然看到了一种非常明显的方法来让它具有确定性……但如果我不以随机方式将其视为概率问题,我可能不会想到它。」

在 Nisan 和 Wigderson 具有里程碑意义的证明之后将近 30 年,随机算法仍然一如既往地流行,因为去随机化可能很棘手,而确定性算法通常仅在原则上有效。直到 2002 年,三位研究人员才找到一种去随机化素性测试的方法,而且在实践中,他们的算法比最好的随机算法慢得多。对于其他问题,甚至不知道从哪里开始——最著名的算法有一个鸡和蛋的问题,你只能通过随机性来逃避。

论文链接:

https://annals.math.princeton.edu/2004/160-2/p12

图论最近的突破就是这种情况。2022 年,三位计算机科学家开发了一种快速算法,用于通过图形(由线段连接的节点网络)找到最短路径,即使某些线段从总路径长度中减去而不是添加,该算法也能正常工作。他们的算法涉及通过删除某些段将图形转换为更简单的图形,解决简化图形的问题,然后考虑删除的段。他们可以证明,如果没有最短路径经过太多已删除的段,算法将运行得很快——否则,最后一步将花费太长时间。

论文链接:

https://arxiv.org/abs/2203.03456#

但是如何决定首先删除哪些段呢?确定性地找到理想的细分市场不仅很难——这是不可能的。该集合取决于最短的路径,这正是三位研究人员试图解决的问题。但即使他们找不到要删除的最佳片段集,他们也可以证明大多数随机选择都很好,这足以打破自我参照循环。在极少数情况下,算法做出了一个不幸的选择并在最后一步陷入困境,他们可以停止并再次运行它。

「随机性基本上是一种在不知道最佳解决方案的情况下确保最佳解决方案为真的方法,」新算法的作者之一 Aaron Bernstein 说。

随机性在计算机科学中发现了无数其他用途,从密码学到博弈论再到机器学习。很有可能,它会留在这里。

相关报道:

https://www.quantamagazine.org/how-randomness-improves-algorithms-20230403/

文章来源:ScienceAI

IEEE Spectrum

《科技纵览》

官方微信公众平台






往期推荐
提高计算速度的新方法
碳储存和氢:天作之合?

人工智能帮助人类提升能力