(양자 컴퓨터로) f(x)=ax mod N 이라는 주기함수에 대해, 함수의 주기 r을 구한다.
(고전 컴퓨터로) 주기 r이 홀수라면 1번 절차로 돌아간다.
r이 짝수라면 great common devisor(최대공약수), gcd(ar/2−1,N) 와 gcd(ar/2+1,N) 를 계산한다. 이때 gcd가 1이거나 N이면 1번 절차로 돌아간다.
아닌 경우, gcd가 N의 인수이다.
1번 절차의 소인수 판별과 3번 절차에서 gcd 를 구하는 계산은 고전 컴퓨터 알고리즘에서도 다항시간내에 계산이 가능하다.
하지만 2번 절차의 경우 2n 형태로 증가하는 숫자에 대해 고전 알고리즘을 사용하면 exponential 한 계산복잡도를 가진다.
양자 컴퓨터의 경우 2n이어도 다항시간 복잡도를 가진다.
Mathematical Formulae
Euler ϕ function
ϕ(N) : N과 서로소(coprime)인 1부터 N 까지의 정수의 갯수. ϕ(15) 에 해당하는 정수는 1, 2, 4, 7, 8, 11, 13, 14 로 ϕ(15)=8이다.
Operator U
주기함수에 대해, 다음 스텝으로 보내는 오퍼레이터를 U라고 하자.
예를 들어 a=7, N=15 인 경우, 7x mod 15 는 1, 7, 4, 13, 1, ... 이런 주기성을 가진다.
이 경우 U∣1⟩=∣7⟩, U2∣1⟩=∣4⟩... 가 된다.
일반화 해서 표현하면 다음과 같다.
U∣y⟩=∣aymodN⟩
U를 통해 주기성을 가지는 state들을 superposition 하면 eigenvalue 가 1인 U의 eigenstate ∣u0⟩ 가 된다.
∣u0⟩=r1k=0∑r−1∣axmodN⟩
이때 다음과 같이 us를 정의하면, eigenvalue 가 er(2πis) 가 된다.
∣us⟩=r1k=0∑r−1e(−r2πisk)∣axmodN⟩
0≤s≤r−1 이고, 만약 r이 짝수라면, eix의 주기성때문에 s=0∑r−1r1∣us⟩=∣1⟩ 이 된다.
Quantum Circuit
N=15, n=4, a=13 인 경우 소인수 분해를 위한 양자회로는 다음과 같다.
where fa,N=ax (mod N)
second register ∣w⟩를 target state 라고 하자.
step 0
∣0⟩∣0⟩
step 1
[H⊗n∣0⟩⊗n∣0⟩]∣0⟩⊗n
=41[∣0⟩+∣1⟩+...+∣15⟩]∣0⟩
step 2
since 0⊕z=z, 41[∣0⟩∣0⊕130(mod15)⟩+∣1⟩∣0⊕131(mod15)⟩+...+∣15⟩∣0⊕1315(mod15)⟩]
=41[∣0⟩∣1⟩+∣1⟩∣13⟩+∣2⟩∣4⟩+∣3⟩∣7⟩ +∣4⟩∣1⟩+∣5⟩∣13⟩+∣6⟩∣4⟩+∣7⟩∣7⟩ +∣8⟩∣1⟩+∣9⟩∣13⟩+∣10⟩∣4⟩+∣11⟩∣7⟩ +∣12⟩∣1⟩+∣13⟩∣13⟩+∣14⟩∣4⟩+∣15⟩∣7⟩
step 3
after measuring w register, if ∣7⟩ is measured : 21[∣3⟩+∣7⟩+∣11⟩+∣15⟩]∣7⟩
step 4
apply inverse QFT on the x register QFT†∣x~⟩=∣x⟩=N1y=0∑N−1e−N2πixy∣y⟩
invers QFT on step 3 is 81[4∣0⟩+4i∣4⟩−4∣8⟩−4i∣12⟩]
step 5
measuring the ∣x⟩ register get ∣0⟩ or ∣4⟩ or ∣8⟩ or ∣12⟩ with equal probability of 41
measured results peak near jrN for some integer j.
If ∣0⟩ is measured: ∣0⟩ is trivial. If we measure ∣0⟩, restart.
∣4⟩: jrN=4→ if j=1, r=4 and r is even. ar/2 (mod N) = 134/2 (mod 15) = 4
4+1=5, gcd(5,15) = 5.
4-1=3, gcd(3,15) = 3.
∣8⟩: jrN=8→ if j=2, r=4 and r is even. same above. If j=1, r=2, ar/2 (mod N) = 132/2 (mod 15) = 13
13+1=14, gcd(14,15) = 1.
13-1=12, gcd(12,15) = 3. 3 is factor of 15. partial solution. restart or re calculate with 15/3 = 5.
∣12⟩: jrN=12→ if j=3, r=4 and r is even. same above.
4개의 결과중 2.5개의 결과가 제대로 작동한다. 일반적으로, 제대로 작동할 확률 최소 1/2 이다.