秀爾演演算法是一個於 1994 年發現的，以數學家彼得秀爾命名，針對整數分解題目的的量子演演算法（在量子計算機上面運作的演演算法）。不正式地說，它解決的題目是：給定一個整數 N，找出它的質因數。在一個量子計算機上面，要分解整數 N，秀爾演演算法的運作需要多項式時間（時間是 log N 的某個多項式這麼長，log N 在這裡的意義是輸入的檔案長度）。準確來說，該演演算法花費 O log N3 的時間，展示出質因數分解問題可以使用量子計算機以多項式時間解出，因此在複雜度類 BQP 裡面。這比傳統上已知的最快的因數分解演演算法普通數域篩選法所花費的次指數時間 大約 O e19 log Nfrac 13loglog Nfrac 23 還要快了一個指數。 秀爾演演算法非常重要，它意味著：假如有可用的量子計算機，我們可以破解基於公開金鑰加密的演算法（比如 RSA 加密演演算法）。RSA 演演算法的基礎在於假設了我們不能有效率的分解一個已知的整數。就目前所知，這假設對傳統（即非量子）的電腦為真；沒有已知的傳統演演算法可以在多項式時間內解決這個問題。但秀爾演演算法展示了因數分解問題在量子計算機上可以很有效率的解決，所以一個足夠大的量子計算機可以破解 RSA。這對於建立量子計算機和研究新的量子計算機演演算法是一個強大的動力。 2001 年，IBM 的一個小組展示了秀爾演演算法的例項，使用 NMR 實驗的量子計算機及 7 個量子位元，將 15 分解成 35。 不過，對於 IBM 的實驗是否是量子計算的真實展示，有一些疑慮出現，因為沒有發現纏結現象。IBM 的實驗之後，也有其他的團隊以光學量子位元實驗秀爾演演算法，並強調可觀察到其纏結現象。 程式 試著解決的問題是：給定一個合成數 N，找到整數 p 在 1 和 N 之間且不包含 1 和 N，並且 N 整除於 p。 秀爾演演算法包含兩個部份： 一個以傳統電腦運作的簡化演演算法，將因數分解簡化成搜尋階問題。 一個量子演演算法，解決搜尋階問題。 傳統部份 選擇任意數字 a N 計算 gcd（ a N ）。這裡可以使用輾轉相除法來計算。 若 gcd a N 1，則我們有了一個 N 非平凡的因數，因此這部份結束了。 否則，利用下面的週期尋找子程式（Periodfinding subroutine，下面會列出）來找出下面這個函式的週期 r ： f x ax mbox mod N 換句話說，找出 a 在 mathbb Z_N 裡面的階 r，或者最小的正整數 r 令 f xr f x。 若 r 是奇數，回到第一步。 若 a r 2 1 mod N 回到第一步。 gcd a r 21 N 與 gcd a r 21 N 至少有一個是 N 非平凡的因數。分解完成。 量子部份：週期尋找子程式（Periodfinding subroutine） 這個演演算法使用的量子線路是為了在給定一個固定常數 N 以及一個任意常數 a 之下，找出 f x ax mod N 所設定的。給定 N 找出 Q 2 q 且合乎 N2 le Q 2N2（這同時表示 Qr N）。輸入和輸出量子位元暫存器需要儲存從 0 到 Q 1 所有值的疊加態，因此分別需要 q 個量子位元。這裡使用看起來比所需的數量還要更多一倍的量子位元，保證了即使週期 r 的大小逼近 N 2，也至少有 N 個不同的 x 會產生相同的 f x 。 程式如下： 將暫存器初始化成 Q12 sum_x0Q1 leftxrightrangle left0rightrangle x 從 0 到 Q 1。所以這一個初始態是 Q 個狀態的疊加。 建立量子函式版本的 f x，並且應用於上面的疊加態，得到 Q12 sum_x leftxrightrangle leftf xrightrangle 這裡仍舊是 Q 個狀態的疊加。 對輸入暫存器進行量子傅立葉變換。這個變換（操作於二的冪次 Q 2q 個疊加態上面） 使用一個 Q 次單位根例如 omega e2 pi i Q 將任意給定態 leftxrightrangle 的振幅平均分佈在所有 Q 個 leftyrightrangle 態上。另一個方法是對於每個不同的 x ： U_QFT leftxrightrangle Q12 sum_y omegax y leftyrightrangle。 由此得到最終狀態： Q1 sum_x sum_y omegax y leftyrightrangle leftf xrightrangle 這是一個遠多過 Q 個狀態的疊加態，但是遠低過 Q 2 個。雖然在和中有 Q 2 項，但只要 x_0 和 x 的值相同，態 leftyrightrangle leftf x_0rightrangle 就可被提出來。令 omega e2 pi i Q 為 Qth 的一個單位根， r 為 f 的週期， x 0 為一個產生相同 f x 的 x 的集裡面的最小元素（我們已經有 x 0 r ），以及 b 在 0 到 lfloor Qx_01rrfloor 之間使得 x_0 rb Q。那麼 omegary 則是復平面的一個單位向量（omega 是一個單位根， r 和 y 是整數），而 Q1leftyrightrangle leftf x_0rightrangle 在最終狀態下的係數則為 sum_x f xf x_0 omegax y sum_b omegax_0 r b y omegax_0y sum_b omegar b y。這一求和的每一項代表一個獲得相同結果的不同路徑，而量子干涉發生。在單位向量 omegaryb 幾乎與復平面指向同一方向（要求 omegary 指向正實數軸）時，干涉將是相長的。 進行測量。我們由輸入暫存器取得結果 y，由輸出暫存器取得 f x_0。而既然 f 是週期，對某對 y 和 f x_0 進行測量的機率則由 left Q1 sum_x f xf x_0 omegax y right2 Q2 left sum_b omegax_0 r b y right2 給出。分析顯示這個機率越高，單位向量 omegary 就越接近正實數軸，或者 frac ryQ 越接近一個整數。除非 r 是 2 的乘方，否則它不會是 Q 的因子。 對 frac yQ 進行連分數展開來計算其近似值，並生成滿足下列兩個條件的 frac cr： A rN B frac yQ frac cr frac 12Q 藉著滿足這一些條件， r 有很高的機率會是我們要找的週期 r 。 檢查 f x f x r Leftrightarrow ar equiv 1 pmod N。如果成功了，我們就完成了。 否則，以接近 y 左右的數值作為 r 的候選，或者說多取幾個 r 如果任何候選成功了，我們就完成了。 否則，回到第一步驟（也就是全部重新做一次）。 演演算法的解釋 此演演算法包含兩個部份。演演算法的第一部份是將因數分解問題轉成尋找一個函式的週期，而且這部份可以用傳統方式實作。第二部份則是使用量子傅立葉變換來搜尋這個函式的週期，而且這一部份是量子加速這整個演演算法的理由。 I 從週期得到因數 小於 N 且互質於 N 的整陣列成一個有限大，且對乘法同餘 N 的群。在步驟 3 之後，我們有一個屬於這個群的整數 a。既然這個群是有限的，a 必有一個有限大的階 r 也就是最小的正整數令 ar equiv 1 mbox mod N 因此可知，N 是 a r 1 的因數。先假設我們有能力獲得 r，而且 r 是偶數。則 ar 1 ar2 1 ar2 1 equiv 0 mbox mod N Rightarrow N ar2 1 ar2 1 r 是令 a r 1 最小的正整數，所以（a r 2 1）必定不能整除於 N。若（a r 2 1）也不整除於 N 的話，則 N 必定與（a r 2 1）或者（a r 2 1）有一個非顯然的公因數。 證明：為了簡化，我們分別用 u 和 v 表示（a r 2 1）和（a r 2 1）。N uv，故 kN uv（k 是某個整數）。假設 gcd v N 1：則必定存在某個整數 m 和 n 令 mv nN 1 這是最大公因數的一個性質。兩邊同乘以 u，我們得到 mkN nuN u 所以 N u，從而產生矛盾（前文提到（a r 2 1）必定不能整除於 N）。故假設不成立，即 gcd v N 1。用類似的方法，可以得知若（a r 2 1）不能整除於 N gcd u N 1。故得證 u 和 v 不同時與 N 互質。 這給予我們一個 N 的因數分解。若 N 是兩個質數的乘積，則這是唯一可能的分解。 II 找尋週期 秀爾的週期尋找演演算法非常倚賴量子計算機同時處於許多狀態的能力。物理學家稱呼這個特性為狀態的「疊加」。在計算函式 f 的週期時，我們會同時估計這個函式的所有點。 不過，量子物理不允許我們直接取得這些資訊。測量會令觀測結果塌陷到其中一個可能的結果，並摧毀所有其他可能。如果不是因為不可複製原理，我們可以先測量 f x 而非測量 x，再製造幾個結果態的複製（將會是多個有著同樣的 f x 的態的疊加）。對這些態上的 x 的測量將會給出能給出相同 f x 的不同的 x，由此推匯出週期來。因為我們不能複製完全相同的量子狀態，這個方法行不通。因此在這裡我們需要小心的轉變疊加態，使其成為可以以高機率回傳正確答案的狀態。這可使用量子傅立葉變換來達成。 因此秀爾在這裡必須解決三個「實作」的問題，而且速度必須夠快，也就是可這些問題可以用量子閘個數為 log N 的多項式來實作。 製造狀態的疊加。 這可以藉著對所有輸入的量子位元使用哈達瑪閘（Hadamard gate）來達成。另一個方法是使用量子傅立葉變換（如下述）。 以量子變換實作函式 f。 要達成這件事情，秀爾使用了反覆平方以完成模的取冪變換。值得注意的是，這一個步驟比起量子傅立葉變換還難以實作，需要更多輔助的量子位元以及明顯更多的閘來完成。 進行量子傅立葉變換。 利用受控旋轉閘（controlled rotation gate）和哈達瑪閘，秀爾設計了一個量子傅立葉變換的線路，只使用了 q q12 O log Q2 個閘（Q 2q）。 在這一些變換之後，測量會給出週期 r 的近似值。為簡明起見，假設存在 y 令 yrQ 是整數，則測量到 y 的機率是 1（理論上）。要推匯出這個，我們首先注意到對任何整數 b， e2 pi i b yrQ 1。因此 Qr 的平方能告訴我們測量 y 的機率，因為 b 大致上取 Qr 個值，因此機率為 1r2。有 r 個 y 使得 yrQ 為整數，f x_0 也有 r 種可能，所以機率總和為 1。 Note 另一種解釋秀爾演演算法的方式是將之視為是喬裝過後的量子相位估計演演算法。 參見 泡利矩陣 量子退火 參考資料 延伸閱讀 Phillip Kaye Raymond Laflamme Michele Mosca An introduction to quantum computing Oxford University Press 2007 ISBN 019857049X Explanation for the man in the street by approved by Peter Shor Shor wrote Great article Scott Thats the best job of explaining quantum computing to the man on the street that Ive seen Scott Aaronson suggests the following 12 references as further reading out of the 10105000 quantum algorithm tutorials that are already on the web Revised version of the original paper by Peter Shor 28 pages LaTeX This is an expanded version of a paper that appeared in the Proceedings of the 35th Annual Symposium on Foundations of Computer Science Santa Fe NM Nov 2022 1994 Minor revisions made January 1996 Quantum Computing and Shors Algorithm Matthew Hayward 20050217 imsaedu LaTeX2HTML version of the original 2750 line LaTeX document also available as a 61 page PDF or postscript document Quantum Computation and Shors Factoring Algorithm Ronald de Wolf CWI and University of Amsterdam January 12 1999 9 page postscript document Shors Factoring Algorithm Notes from Lecture 9 of Berkeley CS 2942 dated 4 Oct 2004 7 page postscript document Chapter 6 Quantum Computation 91 page postscript document Caltech Preskill PH229 Quantum computation a tutorial by Samuel L Braunstein The Quantum States of Shors Algorithm by Neal Young Last modified Tue May 21 114738 1996 A nowcircular reference via the Wikipedia copy of this article clearly Aaronsons link originally reached the 20 Feb 2007 version III Breaking RSA Encryption with a Quantum Computer Shors Factoring Algorithm LECTURE NOTES ON QUANTUM COMPUTATION Cornell University Physics 481681 CS 483 Spring 2006 by N David Mermin Last revised 20060328 30 page PDF document arXiv quantph0303175 Shors Algorithm for Factoring Large Integers C Lavor LRU Manssur R Portugal Submitted on 29 Mar 2003 This work is a tutorial on Shors factoring algorithm by means of a worked out example Some basic concepts of Quantum Mechanics and quantum circuits are reviewed It is intended for nonspecialists which have basic knowledge on undergraduate Linear Algebra 25 pages 14 figures introductory review arXiv quantph0010034 Shors Quantum Factoring Algorithm Samuel J Lomonaco Jr Submitted on 9 Oct 2000 This paper is a written version of a one hour lecture given on Peter Shors quantum factoring algorithm 22 pages Chapter 20 Quantum Computation from Computational Complexity A Modern Approach Draft of a book Dated January 2007 Comments welcome Sanjeev Arora and Boaz Barak Princeton University Category 量子演演算法 Category 整數分解演算法 Category 量子資訊 Category 包含證明的條目 Category 後量子密碼學