计算机本身也会出错,例如由于不正确的程序或者计算机硬件的故障而引起的问题,所以使用简单的方法来检验计算的结果是必要的。在有些检验问题中为了追求效率采用随机算法来检验是非常必要的。假定有一个计算多项式是否恒等的算法。一般的给定两个多项式F(x)和G(x),可以将他们都变成规范化形式,形如wKiom1RpeQnw9KZ5AAAkUZ9-Nm4641.jpg

来验证F(x)是否≡G(x),当且仅当规范化形式中所有的系数都相等是才恒等。

F(x)与G(x)的最高阶次数为d,那么随机算法首先在{1,2,3,。。。。100d}中随机选取一个整数r,然后计算F(r)是否=G(r),如果F(x)=G(x)则认为F(x)≡G(x),否则F(x)≠G(x)。

算法复杂性分析:算法从1,2,3,。。。。100d}中随机选取一个整数r,然后计算F(r),G(r)的值需要O(d),明显快于计算二者规范化形式所花费的时间。

但是上述随机化验证方法有产生错误,下面将对随机化算法从概率的角度做一个错误概率的分析和优化。如果F(x)≡G(x)则对于任意的r有 F(r)=G(r),算法不会出错。如果F(x)非≡G(x)并且 F(r)≠G(r),算法不会出错。

如果F(x)非≡G(x)则存在一个r有 F(r)=G(r),算法给出了不正确的结论。我们不经要问为什么会出现这样的错误结论。我们求解多项式的根时发现有的多项式不止一个解。当r是F(r)-G(r)=0的解时,结论失效。F(r)-G(r)的解的个数不会超过最高阶数,即为解的个数<d个。在{1,2,3,。。。。100d}的随机变量个数中算法失效的概率不会超过d/100d=1/100。我们可以提高随机数的范围,对于随机数取值范围在{1,2,3,。。。。1000d}时概率将降低到1/1000。如果在{1,2,3,。。。。100d}中可以采取n次又放回抽取k次实验来提高精度。k的个数≤d。重复k次算法失效的概率将降到1/100^k.