判断两多项式之积是否等于另一多项式

问题描述:判断p(x),q(x)之积是否等于r(x),p,q,r分别为m,n,l 阶多项式

Random_polynomial(p(x),q(x),r(x),m,n,l)

输入:随机选取X[1:k]

输出:p(x)*q(x)是否等于r(x)

1          K =max{m+n,l}

2          For k=1 to K do

3              X[k] = random(real)    //no repeat

4          For k=1 to K do

5              If(p(X[k])* q(X[k])!= r(X[k])) then

6                  Return false

7          Return true

获得正确解的概率:

         若p(x)*q(x)与r(x)阶数相同成立,则对任意的k成立,输出正确解;若不成立,除非找到p(x)*q(x)-r(x)=0的k个根,否则等式一定不成立。

设实数集合大小为S,则找到k个根的概率为max{m+n,l}/S,因此一定为错误解的概率为max{m+n,l}/S。

时间复杂度:O(max{m+n,l})

综上所述,若算法返回false则一定位正确解;若放回true,则正确解的概率为1-max{m+n,l}/S。

由于算法并不能总获得问题的正确解,显然该随机算法为蒙特卡洛算法。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值