我经常听到,对于许多问题,我们知道非常优雅的随机算法,但没有,或者只有更复杂的确定性解决方案。但是,我只知道几个例子。最突出
- 随机快速排序(以及相关的几何算法,例如用于凸包)
- 随机Mincut
- 多项式身份测试
- 克莱的度量问题
其中,如果不使用随机性,则仅多项式恒等性检验似乎非常困难。
您是否知道更多示例问题,其中随机解决方案非常优雅或非常有效,而确定性解决方案却并非如此?理想情况下,外行应容易激发问题(与多项式身份测试不同)。
我经常听到,对于许多问题,我们知道非常优雅的随机算法,但没有,或者只有更复杂的确定性解决方案。但是,我只知道几个例子。最突出
其中,如果不使用随机性,则仅多项式恒等性检验似乎非常困难。
您是否知道更多示例问题,其中随机解决方案非常优雅或非常有效,而确定性解决方案却并非如此?理想情况下,外行应容易激发问题(与多项式身份测试不同)。
Answers:
螺母和螺栓分类
Rawlins在1992年提出了以下问题:假设您得到了n个螺母和n个螺栓的集合。每个螺栓恰好适合一个螺母,否则,螺母和螺栓具有不同的尺寸。尺寸太小,无法直接比较成对的螺栓或螺母。但是,您可以尝试将它们拧在一起,从而将任何螺母与任何螺栓进行比较。在恒定时间内,您会发现螺栓太大,太小还是恰好适合螺母。您的任务是发现适合每个螺母的螺栓,或者等效地按大小对螺母和螺栓进行分类。
随机快速排序的一个简单变体以高概率解决了时间的问题。随机选择一个螺栓;用它来分割坚果;使用配套螺母对螺栓进行分隔;然后递归。但是,找到一个甚至可以在o (n 2)中运行的确定性算法并非易事。确定性O (n log n )时间算法最终由Bradford于1995年发现,由Komlós,Ma和Szemerédi独立发现。在后台,两种算法都使用AKS并行排序网络的变体,因此O (n时限很大;随机算法的隐藏常数为4。
一旦您不仅在谈论多元时间,而且在研究我们研究的许多计算模型后,到处都有示例:
在Logspace中:无方向的ST连接(自1979年以来在RL中,仅从2005年以来在L中)
在NC中:在二部图中并行查找完美匹配(在RNC中,但仍未知在NC中)
在交互式证明中:确定性给定NP,而随机性给定PSPACE。相关:确定地检查证明需要查看所有证明,而PCP证明仅允许您检查恒定位数。
在算法机制设计中:许多随机的真实逼近机制,没有确定的对应物。
在“通信复杂性”中:等式函数需要确定性地进行线性通信,但需要对数(或取决于精确模型,恒定)通信。
在决策树中:评估“与”或“或”树需要确定性的线性查询,而随机化则要少得多。这基本上等效于alpha-beta修剪,后者提供了用于游戏树评估的随机亚线性算法。
在流模型中,为分布式计算模型:请参见先前的答案。
[1] Michael Luby:关于最大独立集问题的简单并行算法。SIAM J.计算。15(4):1036-1053(1986) http://dx.doi.org/10.1137/0215074
[2] Alessandro Panconesi,Aravind Srinivasan:论分布式网络分解的复杂性。J.算法20(2):356-374(1996) http://dx.doi.org/10.1006/jagm.1996.0017
[3] Fabian Kuhn,Thomas Moscibroda,Roger Wattenhofer:本地计算:上下界。CoRR abs / 1011.5470(2010) http://arxiv.org/abs/1011.5470
有一个简单的论点(例如[1]),没有针对匿名环的确定性领导者选举算法。
模型:我们假设计算在同步回合中进行,在每个回合中,每个进程都执行一些本地计算,将消息发送到环中的邻居,并从其邻居接收消息。
[1] Dana Angluin:处理器网络中的本地和全局属性(扩展摘要)。STOC 1980:82-93。 http://doi.acm.org/10.1145/800141.804655