量子計算 [7] -- Shor算法
本文是對Shor算法的原理進行討論,? 至于算法實現(xiàn)應(yīng)該是放在附章里的.

Shor算法是一個在多項式時間內(nèi)進行整數(shù)分解的算法.? 整數(shù)分解就是給出一個整數(shù)N,? 找到兩個整數(shù)相乘后等于N.? 在電子計算機里,? 目前最好的方法依然需要指數(shù)時間對整數(shù)進行分解.? 至于可以快速進行整數(shù)分解對密碼學有什么影響這里也不說了,? 看膩了好吧.

下面將會大量用到模運算和最大公因數(shù)兩個概念,? 簡單復習一下.
在小學學習的除法定義為 a÷b=c...d,? 其中a,b,c,d都為整數(shù),? 并且d<b.? 則模運算定義為 a%b=d[其實應(yīng)該寫為 `a mod b = d`,? 這里用python的模運算符號`%`代替`mod`了].
a與b的最大公因數(shù)(greatest common divisor)定義為同時整除a和b的最大數(shù)字,? 寫為gcd(a,b).? gcd可以使用歐幾里得算法快速求得.? 這里也不詳細敘述......ffffine,? 下面貼出gcd的python代碼

量子計算機并不能直接地對整數(shù)進行分解,? Shor算法是把整數(shù)分解轉(zhuǎn)化為求階問題.

但在使用量子算法求階之前,? 符合某些條件的數(shù)字可以由傳統(tǒng)算法很快地分解.??比如說如果數(shù)字的二進制表示的最小位為0,? 那么這個數(shù)字是偶數(shù),? 2必定是它的因數(shù).? 還有對于整數(shù);
,? 使用傳統(tǒng)算法可以以多項式時間求出因數(shù)p? [具體實現(xiàn)我也不太清楚, 歡迎大佬在評論區(qū)補充].? 經(jīng)過篩選之后,? 剩下的就是Shor算法的討論范圍了.

記需要分解的整數(shù)為N,? 給出一個整數(shù),? 并且滿足
,? 那么
的階r定義為函數(shù)
的最小正周期,? 其中
.
因為r為f(x)的周期,? 則有???
,? 也就是說
可以被N整除.
如果r為偶數(shù),? 有,? 那么
和
都為N的因數(shù).? 其中
?
,? 如果
?
,? 則有
??
,? 這與階r的定義沖突:? r為f(x)的最小正周期.? 如果
?
,??因為
,? 則有
??
.

根據(jù)上面的推論,? Shor算法過程為:
隨機在
中選擇一個數(shù)字a
計算gcd(a,N),? 如果不等于1, 則得到N的一個因數(shù):
使用量子計算機得出a(%N)的階r
如果r為奇數(shù),? 或
,? 則返回第1步
得到
的兩個因數(shù):?
?和

把寫為質(zhì)數(shù)的乘積,? 即
,? 其中
為質(zhì)數(shù),?
.? 記r_i為
的階,? 那么r為r_i的最小公倍數(shù)(least common multiple).? 如果r_i全部都為奇數(shù),? 那么r也為奇數(shù),? 即r/2不存在[應(yīng)該說不是整數(shù)];? 如果r_i全部都為偶數(shù),? 因為
,? 有
.? r_i同時全為奇數(shù)或偶數(shù)的概率為
,? 也就是算法的成功率為
.? 當m=1時,? 算法成功率為0,? 也就是說最開始使用傳統(tǒng)算法把
篩選掉是必須的.

下面來討論Shor算法里的第三步 -- 使用量子計算機得出a(%N)的階r

考慮模乘函數(shù) ,? 并有相應(yīng)的位門
,? 為了滿足可逆條件,? 規(guī)定
.? 對于
,? 有
. [一般來說不考慮y>=N的情況]
觀察下面電路,? 并分析態(tài)的變化,?
:

可以看到這個電路等價于模冪位門?.

構(gòu)造一個態(tài)?,?
,? 其中r為
的階,? 容易證明這個態(tài)是位門
的特征態(tài):?
=
=
=
,? 當k=r時,? 因為
,? 則有
=
,? 即
=
=
.? 從而得到特征值為
.? 因為不知道r,? 所以任何獨立的特征態(tài)都是無法制備的.
把全部特征態(tài)疊加起來,? 得到 =
=
后面的累加由等比數(shù)列和求出,? 得
.? 在k=0時,? 分式未定義,? 對其取極限可以得到分式的值為
?[不取極限, 直接計算累加式也可以得到相同的答案];? 而k≠0時,? 分子為0,? 由此化簡疊加態(tài)為
=
.

由上可得,? 以為疊加特征態(tài),? 對位門
進行相位估計可以測得s/r,? 其中
.? 這Shor算法里的量子電路為

其中Modular Power為模冪位門: ,? 并且
,? ??為向上取整.
因為測量量子位的結(jié)果為整數(shù),? 并且相位估計算法也有可能不會給出最佳近似值,? 所以測量結(jié)果與實際值之間會存在一定誤差.? 設(shè)測量結(jié)果為,? 那么有
,? 對
展開為連分數(shù),? 則在展開式的某一部分截斷可能會得到準確的s/r.? 并且注意到gcd(s,r)有可能不為1,? 也就是說分式s/r有可能不為最簡分式.? 為了提高算法成功率,? 可以對
和
也進行連分數(shù)展開.? 得到r后執(zhí)行Shor算法下面幾步即可以得到N的分解結(jié)果.
定理:? 如果滿足,? 那么s/r是
連分數(shù)的一個漸進值.? 即
,? 因為r<N,? 所以可以取
,? 得到
.

是Shor算法的量子求階電路里,? 模冪位門的實現(xiàn)方法各種各樣,? 有時間復雜度低的方法,? 但使用了很多量子位;? 有使用少量量子位的,? 但時間復雜度很高.
附章將介紹一種只使用極少量子位的Shor算法實現(xiàn).? 因為在電子計算機上模擬量子計算所需的內(nèi)存是隨著量子位數(shù)量增長而指數(shù)增長的.? 使用盡可能少的量子位可以確保電子計算機也可以進行模擬.
在第一版Shor算法里, 模冪位門定義為 |x?|y??-> |x?|(y+a^x)%N?,? 則導致下面的量子位應(yīng)該初始化為|0?而不是|1?.? 這是因為第一版Shor算法并不是使用相位估計方法求階,? 而是直接對模冪函數(shù)進行周期分析.? 雖然兩個版本之間存在差異,? 但絕大部分都是一致的,? 并且都是求得s/r.
封面pid:?66444938
"""你已經(jīng)插入152張圖片了, 目前最多支持插入100張哦~""".? ?口區(qū)