我们知道有效的随机算法有很多问题,我们不知道任何可以证明有效的确定性算法。但是,这可能反映出我们证明有关复杂性而不是任何根本差异的能力的缺陷。
根据您的评论,您似乎想问的是是否存在有效的随机算法的问题,我们可以证明没有可比效率的确定性算法。我不知道有什么问题。
确实,有合理的理由怀疑这种问题不太可能存在。从经验上讲,这种问题的存在可能意味着安全加密是不可能的。这似乎是一个令人难以置信的结果。
你问什么关系?好吧,请考虑可以有效解决某些问题的任何随机算法它依赖于随机硬币:从真实随机源获得的随机比特。现在假设我们采用了具有密码质量的伪随机数发生器,并用伪随机数发生器的输出替换了真实随机数源。通话所产生的算法一个“。注意,A '是确定性算法,其运行时间与A大致相同。AA′A′A
此外,如果密码PRNG是安全的,启发式我们应该期待是一个很好的算法,如果一个是:A′A
例如,如果是一种拉斯维加斯算法(它总是输出正确的答案,并以高概率快速终止),那么A ′将是一个很好的确定性算法(始终输出正确的答案,并且对于大多数输入都迅速终止) 。AA′
作为另一示例,如果是一个蒙特卡洛算法(确定性的运行时间,并且输出的概率至少正确答案1 - ε),则甲将是一个不错的确定性算法(确定性的运行时间,并输出了正确的答案在所有输入的1 - ε中)。A′1−εA1−ε
因此,如果密码PRNG是安全的,并且有一个有效的随机算法,那么您将获得非常好的确定性算法。现在,如果某些密码假设成立,则可以保证许多密码PRNG的构造是安全的。实际上,这些密码学假设被广泛认为:至少,安全的商业和交易依赖于它们的真实性,因此我们显然愿意押注存在安全密码学的巨额资金。这种转换失败的唯一方法是不存在加密PRNG,这反过来意味着不可能进行安全加密。尽管我们没有任何证据证明并非如此,但这似乎是不太可能的结果。
结构细节:这是工作原理。上输入X,它导出用于加密PRNG作为的函数的种子X(例如,通过散列X),然后模拟甲(X ),使用加密PRNG作为硬币的输出甲。例如,特定的实例将设置k = SHA256 (x ),然后将k用作计数器模式下的AES256或其他加密PRNG的种子。我们可以在随机预言模型下证明以上陈述。A′xxxA(x)Ak=SHA256(x)k
如果您不满意的想法,上投入一些小部分可能输出不正确的结果,可以得到解决。如果多次重复A '并获得多数表决,则错误概率在迭代次数中呈指数级下降。这样,通过迭代的次数恒定数目,就可以得到错误概率ε为低于1 / 2 256,这意味着机会,您在输入运行XA′A′ε1/2256x算法输出错误答案的位置几乎很小(小于连续多次被雷击的机会)。而且,根据我上面给出的结构,可以使对手甚至在A '给出错误答案的情况下找到输入的机会很小,因为这将需要破坏SHA256哈希的安全性。(从技术上讲,这需要使用随机预言模型进行证明,因此这意味着必须选择A独立于SHA256,而不是对其进行与SHA256相关的计算中的硬编码,但是几乎所有现实世界算法都可以满足该要求)xA′A
如果你想要更强的理论依据,可以迭代Θ (Ñ )倍,得到的错误概率低于1 / 2 Ñ,其中Ñ是输入的长度X。现在的分数Ñ位输入,其中甲'给出了一个不正确的答案是不是严格小于1 / 2 Ñ。但是只有2 n个可能的n位输入,并且每一个A都是正确的或不正确的,因此得出在A '处没有输入的结论。A Θ(n)1/2nnxnA′1/2n2nnAA′不正确:是对所有输入正确,这个拥有无条件。如果一个在时间用完牛逼(ñ ),然后一个'在时间用完Θ (ñ ⋅ Ť (ñ )),所以一个'是有点慢一但不会太大慢。这是Adleman证明BPP包含在P / poly中的内容。出于实际目的,这可能是过大了,但是如果您喜欢避免加密假设的干净证据,或者如果从理论家的角度进行研究,那么您可能会更喜欢此版本。A′At(n)A′Θ(n⋅t(n))A′A
有关后面的理论考量和其他问题的更多详细信息(我们知道有效的随机算法,但我们不知道任何可以证明有效的确定性算法),请参阅/cstheory//q/31195 / 5038
总结:对于任何我们知道有效的随机算法的问题,我们也知道确定性算法在实践中似乎很有效-但目前我们还不知道如何证明它是有效的。一种可能的解释是,我们只是不能很好地证明有关算法的知识。