zoukankan      html  css  js  c++  java
  • Shor 量子算法原理浅析

    学习这个算法时候网上介绍不多,只能硬啃论文;本片文章是对Shor算法原理的一个简单描述,以及它用于解决什么样的问题,其实最关键的部分(关于QFT 量子傅里叶变换的内容)我并不理解,但这并不影响我们以数论的现有知识来学习理解这个算法。


     背景

    众所周知,RSA体制的安全性是建立在大数分解这一难题基础上的,严格说来,也只是涉及到两个大质数相乘所得到的合数。自RSA 诞生伊始,人们对其安全性的理论论证就一直未停止过。由于 RSA 中指数运算保持了输入的乘积结构,这一点令人甚为担忧。

    1994年,AT&T公司研究人员Shor发现了分解两个大质因数相乘合数的量子算法(质数就是素数),对RSA公钥密码体制产生强烈冲击;它不仅给量子计算机研究注入了活力,引发了量子计算和量子计算机研究的热潮。


     原理

             设n1、n2为两个奇质数(大于2的素数),而N = n1·n2,Shor算法概述如下:

    (1)随机取正整数y,要求y<N且与N互素,用量子计算机和相关算法求r = ordN(y),即y是关于N的阶数,r是使得yΞ 1 mod N成立的最小正整数( 也就是说,函数f(t) = yt mod N的最小正周期为r)。

    (2)若r为奇数,则返回(1)重新取y。并重新求r,直到r为偶数为止。

    (3)r为偶数,取  x Ξ  yr/2 mod N。

             故  x2 Ξ  1  mod N

          (x+1)(x-1) Ξ  0  mod N

       于是设 (x+1)(x-1) = t·N = t·n1·n,t为正整数,t不一定为素数,假设可继续分解为t = r·s,r、s为大于等于1的正整数。

              (x+1)(x-1)  =  (r·n1)·(s·n2) 这是等式

       于是上式有两个解:

       1. x1+1 Ξ 0 mod n,x1-1  Ξ 0 mod n2     解为 n1 = gcd(x+1,N) , n2 =  gcd(x-1,N)

       2.    x2+1 Ξ 0 mod n2 ,x2-1  Ξ 0 mod n1    解为 n1 = gcd(x-1,N)  , n2 =  gcd(x+1,N)

        接下来使用辗转相除法分别求出x+1和N的最大公约数、x-1和N的最大公约数分别为n1和n2

        综上,已知N,选取随机数y<N且互素,最重要的一步是求y关于N的阶r,要求r为偶数。进而由r计算出x:  x Ξ  yr/2 mod N 。最后求x+1、x-1和N的最大公约数分别为n1、n2  


     评价

        Shor算法的核心是利用数论的一些定理,将大数因子分解过程转化为求某个函数的周期,由于在量子环境下,可以以极高的效率实现量子傅里叶变换(QFT),从而可以对大数质因子进行分解。


     

    参考 

    1. 量子Shor算法与RSA体制的安全性_曹正军

    2. SHOR量子算法的原理与程序模拟_朱缨

  • 相关阅读:
    poj3181(Dollar Dayz)
    poj3666(Making the Grade)
    poj2392(Space Elevator)
    hdu5288(OO’s Sequence)
    hdu5289(Assignment)
    快学scala
    Spark Checkpointing
    Spark Performance Tuning (性能调优)
    Spark Memory Tuning (内存调优)
    Sparkstreaming and Kafka
  • 原文地址:https://www.cnblogs.com/Higgerw/p/11718301.html
Copyright © 2011-2022 走看看