1.概率算法定义
概率算法是属于随机算法,使用随机过程的结果,某些NP问题不可能在多项式时间内求解,但是当允许一定量的错误概率时,就可以在多项式时间内求得一个较大概率正确的解。
随机算法 1.允许算法进行随机移动2将机器内部抛硬币视作一种辅助输入。
2.有关P问题与NP问题的一些想法
P问题指的是能够在多项式的时间里得到解决的问题,NP问题指的是能够在多项式的时间里验证一个解是否正确的问题。典型的NP问题如求最长路问题,哈密顿回路问题。
在千禧年七大难题中排在首位。如下是千禧年七大难题:
1 P=NP?
2 霍奇猜想
3 庞加莱猜想
4 黎曼假设
5 杨-米尔斯规范场存在性和质量缺口假设
6 NS方程解的存在性与光滑性
7贝赫和斯维讷通-戴尔猜想
3.概念图灵机
M是一种非确定图灵机,它的每一非确定性步,称作抛硬币步,并且有两个合法的下次动作。按照下述方式吧概率赋给M对输入w的每一个计算分支b定义分支b的概率为Pr[b]=2-k。k是在分支b出现的抛掷硬币步的步数,定义M接收w的概率为Pr[M accept w]= ∑Pr[b]。M拒绝w的概率Pr[M reject w]=1- Pr[M accept w]。
对于0<=sigma<1/2,if
1)w ∈A蕴涵Pr[M接收w]>=1-sigma
2) w ∉ A蕴涵Pr[M拒绝w]>=1-sigm
则称M以错误概率sigma识别语言A。错误概率的上界可以与输入长度n相关。eg,错误概率sigma=2-n表示指数地小的错误概率。
定义BPP是多项式时间的概念图灵机以错误概率1/3识别的语言。
引理设sigma是一个固定的常数,且0<sigma<1/2.又设M1是一台错误概率为sigma的概率图灵机,则对于任意的多项式poly(n),存在与M1等价的错误概率为2poly(n)的多项式时间概率图灵机M2。
4.素数性
素数是大于1且不能被1和自身以外的任何正整数除尽的整数,合数是大于1的非素数。因子是比某个数小并且能整除某个数的正整数。
中国剩余定理Zpq和Zp*Zq之间存在一一对应。每一个数r∈Zpq对应有序对(a,b),a∈Zp,b∈Zq.使得
r≡a(mod p), r≡b(mod q)
费马小定理if p is prime,and a ∈Zp,则ap-1≡(mod p)
通过费马定理可知,当设一个数p设,如果p设是一个素数则它一定满足费马小定理,如果p设是一个合数则不一定满足费马小定理,可设置一种测试一个数是否是素数的方法,叫做费马测试。
伪素数如果一个数能够通过所有小于它且与它互素的数的费马测试
如果一个数测试所有小于它的数且与它互素的数的费马测试将是指数时间,引进概率算法,假设一个断言如果一个数不能通过一个费马测试,则它至少不能通过全部费马测试的一般.对算法做几个随机选择的测试。如果有一个测试没通过,则这个数一定是合数。如果测试都通过,则这个数很可能是伪素数。给出算法如下:
PSEUDOPRIME=“对输入p:
1)在Zp中随机选取a1,…,ak.
2)对于每一个i,计算aip-1mod p。
3)如果所用计算出来的值都等于1,则接受;否则拒绝。“
从上可知,如果p是伪素数,则他能通过全部测试,p不是伪素数,它通过k个随机选择的测试概率不大于2-k.
为了把这个伪素数性算法转换成素数性算法,我们给出更加复杂的测试,以避免卡米切尔数(对于合数n,如果对于所有正整数b,b和n互素,都有同余式b(n-1)≡ 1 (mod n)成立,则合数n为Carmichael数)问题。
PRIME=”对输入p:
1) if p 是偶数,则如果p=2,则接受;否则拒绝。
2) Zp中随机地选取a1,…,ak。
3) 对i=1,…,k;
4) 计算aip-1,并且如果不等于1,则拒绝。
5) 令p-1=st,其中s是奇数,t=2h是2的幂。
6) 计算序列ais*2^0,ais*2^1,…, ais*2^h-1mod p。
7) 如果该序列中的某个数不等于1,则找到不等于1的最后一个数,如果这个数不等于-1,则拒绝
8) 通过全部测试,故接受。
引理 if p 是一个奇素数,则Pr[PRIME接受p]=1。
引理 if p是一个奇合数,则Pr[RRIME accept p]<=2-k
定理 PRIME ∈ BPP (单侧错误)
定义 RP:多项式时间概率图灵机识别的语言类,在语言中的输入,以不少于1/2的概率被接受;不在语言中的输入以概率1被拒绝。