5
随机化何时可以加速算法,但“不应该”?
Adleman证明包含的证明表明,如果存在一个针对大小为输入在时间上运行的问题的随机算法,那么对于在时间上运行的问题也存在确定性算法输入大小为 [算法在独立的随机字符串上运行随机算法。重复算法必须具有随机性,这对所有都有利P / p ö 升ý 吨(Ñ )ñ Θ (吨(Ñ )⋅ Ñ )ñ Θ (Ñ )2 Ñ乙PPBPPBPPP/ pø升ÿP/polyP/polyt (n )t(n)t(n)ñnnΘ (吨(Ñ )⋅ Ñ )Θ(t(n)⋅n)\Theta(t(n)\cdot n)ñnnΘ (n )Θ(n)\Theta(n)2ñ2n2^n可能的输入]。确定性算法不统一-对于不同的输入大小,其行为可能有所不同。因此,阿德勒曼(Adleman)的论点表明-如果不关心均匀性-随机化只能以输入大小呈线性的因数加速算法。 据我们所知,随机化可以加速计算的一些具体示例是什么? 一个例子是多项式身份测试。这里的输入是一个n大小的算术电路,用于计算一个字段上的m变量多项式,任务是找出该多项式是否相等为零。随机算法可以在随机点上评估多项式,而我们所知的最佳确定性算法(可能是现有的最好的)可以在许多点上评估多项式。 另一个例子是最小生成树,其中Karger-Klein-Tarjan的最佳随机算法是线性时间(错误概率呈指数小!),而Chazelle的最佳确定性算法在时间(是Ackermann逆函数,因此随机化加速确实很小)。有趣的是,Pettie和Ramachandran证明,如果最小生成树存在非统一的确定性线性时间算法,那么也存在统一的确定性线性时间算法。αø (米α (米,Ñ ))O(mα(m,n))O(m\alpha(m,n))αα\alpha 还有哪些其他示例?您知道哪些示例的随机化加速率较高,但这可能仅仅是因为我们尚未找到足够有效的确定性算法?