“看起来”确定性的随机算法?


31

是否有一个有趣的随机搜索算法示例,无论其内部随机性如何,该算法总是输出相同(正确)的答案,但会利用随机性,因此其预期运行时间比已知最快的运行时间要好确定性算法的问题?

特别是,我想知道是否有这样一种算法可以找到n和2n之间的质数。没有已知的多项式时间确定性算法。有一种简单的随机算法,该算法仅对间隔中的随机整数进行采样即可工作,这要归功于素数定理。但是,是否存在上述类型的算法,其预期运行时间介于两者之间?

编辑:为了稍微细化我的问题,我想要一个这样的算法来解决有很多可能正确输出的问题,而随机算法却依赖于其随机性。我意识到这个问题可能尚未完全说明。


3
为了给您提供一些搜索关键字,总是产生正确答案(并使用随机性以缩短运行时间)的随机算法被称为Las Vegas算法(与Monte Carlo算法相对)或零误差算法,而相关的复杂度类别为ZPP
伊藤刚(Tsuyoshi Ito)2010年

@Tsuyoshi:感谢您的评论。但是我不知道拉斯维加斯式的搜索问题算法。这是我的问题。
arnab

如果有一种随机算法可以找到独特的纳什均衡,可以回答您的问题。
沃伦·舒迪

也许有一些与生日袭击有关的问题(en.wikipedia.org/wiki/Birthday_attack)可以满足您的要求?
沃伦·舒迪

Answers:


23

沙菲·戈德华瑟(Shafi Goldwasser)向我传达了她和他的合著者一直在研究这类用于数论问题的算法!以下是已知的:

  1. Lenstra已经表明,存在一种用于找到给定素数的二次非残基模的算法。

  2. 水道和戈德瓦塞尔表明有查找的发电机这样的算法,其中p是具有以下形式的给定素数2 q + 1为素数qZpp2q+1q

(我不知道引用的参考文献。)关于我问的关于找到2 n之间的质数的问题,也正在进行研究。n2n

编辑:由Gat和Goldwasser撰写的论文现已发布:http : //eccc.hpi-web.de/report/2011/136/。尽管本文没有解决在2 n之间找到素数的问题。n2n


1
虚拟+1。这真的很有趣,将寻找论文。
安德拉斯·萨拉蒙(AndrásSalamon),2010年

2
尽管有注释,我还是仅仅因为这是一个很好的答案而赞成这个答案。我认为,为他人发布好的答案并不存在任何问题。我开始在Meta上对此进行讨论
伊藤刚(Tsuyoshi Ito)2010年

1
根据元线程上的讨论,我删除了该注释,并使其成为“社区Wiki”。
arnab

arnab提到的meta线程可以在这里找到:meta.cstheory.stackexchange.com/q/607/873
MS Dousti

18

随机数据结构是否有价值?

有一个跳过列表,它是一种排序的关联地图数据结构。

(在预期的情况下)其用于常见操作(如插入,检索和删除)的运行时间与平衡搜索树中的运行时间相同,即。但是,有时候,正确完成数据结构有时会被认为具有比搜索树实现更好的恒定因子(这主要取决于良好而有效的随机性源)。更好的恒定因子可能是由于无需进行重新平衡(或任何类似操作)的结果。O(logn)


谢谢!这绝对是很重要的,对我的原始问题来说是一个不平凡的答案。我想要一个问题,尽管它更类似于最初的问题,那里有很多潜在的解决方案。
arnab

将跳转列表添加到该思路中。
拉斐尔

13

Kelner和Spielman的随机多项式时间单纯形算法怎么样?它找到线性程序的最佳顶点。没有已知的确定性单纯形算法可以在多项式时间内运行,并且对于其中许多而言,可以构造病理实例以使该算法花费指数时间。

当然,有多项式时间内点算法,因此它并不是您想要的。


如果存在多个最佳点,Kelner-Spielman会始终返回同一点吗?
Sasho Nikolov,

3
通用线性程序只有一个最佳点,因此使用摄动可以使Kelner-Spielman变体始终返回相同的最佳点。
彼得·索尔

12

考虑一个完整的二叉树,其中所有叶子均包含0,一个叶子除外,其中每个叶子包含1。任务是找到包含1的叶子。针对任何确定性搜索算法,可以构造无限的树族(每棵树一个)n),算法必须为此检查每个叶子。因此,对于这个最坏的情况,确定性算法的预期运行时间为2 n2nn2n

现在考虑一种算法,该算法随机地随机均匀地选择第一片叶子,然后确定性地检查所有连续叶子(环绕到开始)。平均检查所有叶子的一半后,将得出1。因此,随机算法的预期运行时间为2n1

这符合条件吗?


不错!尽管我一直在寻找一个更平凡的例子,其中运行时间的改善更为显着,但这绝对符合条件。
arnab

您不需要树结构,它可以在数组上工作。
sdcvvc

7

多项式因式分解算法可能是您正在寻找的示例。的 坎托-Zassenhaus算法用途随机性来计算(唯一高达缩放)在有限域的给定元多项式的不可约多项式因子在时间多项式中输入的尺寸和日志Fp。如果您确实希望问题有一个唯一的答案,则可以要求单项多项式的单项不可约素数。据我所知,除非保证 p很小,否则不知道如何分解确定性多项式时间。logpp

顺便说一下,上面的方法可以做成零误差算法,因为我们知道如何在多项式和log p的次数上以时间多项式确定性地测试多项式的不可约性。logp。(请参阅这些讲义。)


6

有一个Polymath项目解决了一个相关问题: http


是的,这是我提出这个问题的动力。我认为他们在polymath项目中没有明确提到这个问题。
arnab

3

关于您的第一个问题,我首先想到了Quicksort,但这很明显。

有一个使用概率思想的字符串匹配算法(Nebel,2006年)。我确实知道这是现有最快的方法,而且您显然需要一些样本进行培训。


查找中位数的速度也更快,但并非如此。
Aram Harrow

3

以下STACS '97论文可能对您的案例很有趣:生成测试实例的复杂性

摘要:最近,渡边提出了一个新的框架,用于测试算法的正确性和平均情况行为,该算法旨在平均有效地解决给定的NP搜索问题。想法是以类似于基础分布的方式随机生成认证实例。我们讨论了这种方法,并表明可以使用对NP oracle的非自适应查询为每个NP搜索问题生成测试实例。此外,我们介绍了拉斯维加斯以及测试实例生成器的蒙特卡洛类型,并显示了这些生成器可用于发现算法平均而言是否正确和有效。实际上,为所有RP搜索问题构造蒙特卡洛生成器以及为所有ZPP搜索问题构造拉斯维加斯生成器并不难。另一方面,

特别地,请看推论12下的384页:

ZPPRPZPPNPNPcoNP


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.