密码学|概率论 5.3.3 蒙特卡罗算法

admin 2022年12月19日13:06:04评论22 views字数 1078阅读3分35秒阅读模式
5.3.3
蒙特卡罗算法
在实际运用中,有许多算法的输出并不能保证正确。例如。3.4一节描述的Miller–Rabin算法,该算法用于检查给定的大数是否为素数。在实践中,我们多次运行算法以获得 “可能” 正确的输出。在应用这些所谓的蒙特卡洛或概率算法时,重要的是能够计算结果的可信度,即输出正确结果的概率。在本节中,我们将描述如何使用贝叶斯公式进行此类计算。
计算的基础场景由一个大的(可能是无限的)整数集和一个有趣的属性  组成。例如, 可以是所有整数的集合,或者  可能是介于 和  之间的所有整数的集合。属性  可以是复数属性
现在假设我们正在寻找一个不具有属性  的数字。使用 Miller–Rabin 检验,我们可能会寻找 和  之间的非复数整数,即质数。一般来说,假设我们在  中给定一个整数 ,并且我们想知道  是否具有属性 。通常我们大概知道  中有多少整数具有属性 ,例如,我们可能知道99%的元素具有属性  而其他1%的元素没有属性 。然而,比较难确定一个给定的  是否具有属性 。因此,我们选择了一个较快的算法,但它并不一定是正确的。
属性  的蒙特卡罗算法将数  和一个随机数  作为输入(详见Miller–Rabin 检验算法),并根据以下规则返回 Yes 或 No 作为输出:
  1. 如果算法返回 ,那么  必定具有属性 ,记为 

  2. 如果  具有属性 ,那么算法返回  的概率至少为 ,记为 

现在假设我们对整数  运行算法  次,每次都选择一个新的随机数 。如果第一次尝试就返回 ,那么我们知道  具有属性 。但是假设所有  次尝试都返回答案 。有多大的可能  不具有属性 ?记为 
实际上我们希望,当  较大时,这个概率与  接近。由此我们定义两个事件

于是我们考虑条件概率 ,即当算法返回  次  的情况下,整数  不具有属性  的概率,我们可以通过贝叶斯公式(5.21)进行计算

我们根据素数分布设定 
然后我们考虑 ,如果  不具有属性 ,那么根据我们的蒙特卡罗算法性质1(),算法会返回 。从而有 
最后,我们考虑 ,因为运行的  次算法都是相互独立的,于是
把这些值代入贝叶斯公式,我们发现,如果算法返回  次 ,那么  不具备性质  的可能性为

注意到,如果  较大,那么下界就会趋向于 
例如,如果运行 100 次算法均返回 ,那么  不具有性质  的概率至少为

因此,我们基本可以得出结论, 不具有属性 
END


       

原文始发于微信公众号(山石网科安全技术研究院):密码学|概率论 5.3.3 蒙特卡罗算法

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年12月19日13:06:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   密码学|概率论 5.3.3 蒙特卡罗算法http://cn-sec.com/archives/1463555.html

发表评论

匿名网友 填写信息