What is QFT?
computational basis set {∣ 0 ⟩ |0\rangle ∣ 0 ⟩ , ∣ 1 ⟩ |1\rangle ∣ 1 ⟩ , ... , ∣ N − 1 ⟩ |N-1\rangle ∣ N − 1 ⟩ } 을 conjugate basis set {∣ 0 ~ ⟩ |\tilde{0}\rangle ∣ 0 ~ ⟩ , ∣ 1 ~ ⟩ |\tilde{1}\rangle ∣ 1 ~ ⟩ , ... , ∣ N − 1 ~ ⟩ |\widetilde{N-1}\rangle ∣ N − 1 ⟩ } 으로 보내는 변환 U Q F T U_{QFT} U Q F T .
기존 베이시스와 푸리에 변환 이후 basis 의 차이. 아랫쪽 fourier basis 의 경우, 위상을 가진 것처럼 평면을 회전하는 것을 확인할 수 있다.
computational basis 의 coefficient 를 x j x_{j} x j , conjugate basis 의 coefficient 를 y k y_{k} y k 라 할때
y k = 1 N ∑ j = 0 N − 1 e x p ( i 2 π j k N ) x j y_{k}=\frac{1}{\sqrt{N}}\sum \limits_{j=0}^{N-1}exp(i\frac{2\pi jk}{N})x_{j} y k = N 1 j = 0 ∑ N − 1 e x p ( i N 2 π j k ) x j
Discrete Fourier Transform 과 식의 모양은 같다.
basis 로 표현한 수식은 아래와 같다.
∣ b ~ ⟩ = 1 N ∑ a = 0 N − 1 e x p ( i 2 π a b N ) ∣ a ⟩ |\tilde{b}\rangle = \frac{1}{\sqrt{N}}\sum \limits_{a=0}^{N-1} exp(i\frac{2\pi ab}{N})|a\rangle ∣ b ~ ⟩ = N 1 a = 0 ∑ N − 1 e x p ( i N 2 π a b ) ∣ a ⟩
이때 ∣ a ⟩ = ∣ a 1 a 2 . . . a n ⟩ = 2 n − 1 y 1 + 2 n − 2 y 2 + . . . + 2 0 y n |a\rangle = |a_{1}a_{2}...a_{n}\rangle = 2^{n-1}y_{1}+2^{n-2}y_{2}+...+2^{0}y_{n} ∣ a ⟩ = ∣ a 1 a 2 . . . a n ⟩ = 2 n − 1 y 1 + 2 n − 2 y 2 + . . . + 2 0 y n 이고, y = ∑ k = 1 n y k 2 n − k y=\sum\limits_{k=1}^{n}y_{k} 2^{n-k} y = k = 1 ∑ n y k 2 n − k 이므로
∣ b ~ ⟩ = 1 N ∑ a = 0 N − 1 e ( i 2 π a b N ) ∣ a ⟩ |\tilde{b}\rangle = \frac{1}{\sqrt{N}}\sum \limits_{a=0}^{N-1} e^{(i\frac{2\pi ab}{N})}|a\rangle ∣ b ~ ⟩ = N 1 a = 0 ∑ N − 1 e ( i N 2 π a b ) ∣ a ⟩
= 1 N ∑ a = 0 N − 1 ∏ k = 1 n e ( i 2 π b a k a k ) ∣ a ⟩ =\frac{1}{\sqrt{N}}\sum \limits_{a=0}^{N-1}\prod\limits_{k=1}^{n} e^{(i\frac{2\pi ba_{k}}{a^{k}})}|a\rangle = N 1 a = 0 ∑ N − 1 k = 1 ∏ n e ( i a k 2 π b a k ) ∣ a ⟩
= 1 N ( ∣ 0 ⟩ + e 2 π i b / 2 1 ∣ 1 ⟩ ) ⊗ ( ∣ 0 ⟩ + e 2 π i b / 2 2 ∣ 1 ⟩ ) ⊗ . . . ⊗ ( ∣ 0 ⟩ + e 2 π i b / 2 n ∣ 1 ⟩ ) =\frac{1}{\sqrt{N}}(|0\rangle+e^{2\pi i b/2^{1}}|1\rangle)\otimes(|0\rangle+e^{2\pi i b/2^{2}}|1\rangle)\otimes...\otimes(|0\rangle+e^{2\pi i b/2^{n}}|1\rangle) = N 1 ( ∣ 0 ⟩ + e 2 π i b / 2 1 ∣ 1 ⟩ ) ⊗ ( ∣ 0 ⟩ + e 2 π i b / 2 2 ∣ 1 ⟩ ) ⊗ . . . ⊗ ( ∣ 0 ⟩ + e 2 π i b / 2 n ∣ 1 ⟩ )
QFT를 적용하기 전인 ∣ a ⟩ = ∣ a 1 ⟩ ∣ a 2 ⟩ . . . ∣ a n ⟩ |a\rangle=|a_{1}\rangle |a_{2}\rangle ... |a_{n}\rangle ∣ a ⟩ = ∣ a 1 ⟩ ∣ a 2 ⟩ . . . ∣ a n ⟩ 과 비교했을때 각 qubit이 어떻게 변화했는지 확인할 수 있다.
이때 ∣ b ~ ⟩ |\tilde{b}\rangle ∣ b ~ ⟩ 의 terms 중에
∣ 00...0 ⟩ |00...0\rangle ∣ 0 0 . . . 0 ⟩ , e 2 π i b / 2 n ∣ 00...01 ⟩ e^{2\pi i b/2^{n}}|00...01\rangle e 2 π i b / 2 n ∣ 0 0 . . . 0 1 ⟩ , e 2 π i b / 2 n − 1 ∣ 00...10 ⟩ e^{2\pi i b/2^{n-1}}|00...10\rangle e 2 π i b / 2 n − 1 ∣ 0 0 . . . 1 0 ⟩ , ... 과
e 2 π i b ( 1 2 + 1 2 2 + . . . + 1 2 n ) ∣ 11...11 ⟩ e^{2\pi i b(\frac{1}{2}+\frac{1}{2^2}+...+\frac{1}{2^n})}|11...11\rangle e 2 π i b ( 2 1 + 2 2 1 + . . . + 2 n 1 ) ∣ 1 1 . . . 1 1 ⟩ 는 Quantum Phase Estimation (QPE)에 사용된다.
Example
For N=2, {∣ 0 ⟩ , ∣ 1 ⟩ |0\rangle,|1\rangle ∣ 0 ⟩ , ∣ 1 ⟩ } → \rightarrow → {∣ 0 ~ ⟩ , ∣ 1 ~ ⟩ |\tilde{0}\rangle,|\tilde{1}\rangle ∣ 0 ~ ⟩ , ∣ 1 ~ ⟩ }.
∣ 0 ~ ⟩ |\tilde{0}\rangle ∣ 0 ~ ⟩ = 1 2 ( 1 ∗ ∣ 0 ⟩ + 1 ∗ ∣ 1 ⟩ ) = ∣ + ⟩ \frac{1}{\sqrt{2}}(1*|0\rangle+1*|1\rangle)=|+\rangle 2 1 ( 1 ∗ ∣ 0 ⟩ + 1 ∗ ∣ 1 ⟩ ) = ∣ + ⟩
∣ 1 ~ ⟩ |\tilde{1}\rangle ∣ 1 ~ ⟩ = 1 2 ( 1 ∗ ∣ 0 ⟩ − 1 ∗ ∣ 1 ⟩ ) = ∣ − ⟩ \frac{1}{\sqrt{2}}(1*|0\rangle-1*|1\rangle)=|-\rangle 2 1 ( 1 ∗ ∣ 0 ⟩ − 1 ∗ ∣ 1 ⟩ ) = ∣ − ⟩
QFT performes a transform on the basis state.
In general, for N = 2 n N=2^{n} N = 2 n ,
∣ b ~ ⟩ = 1 2 n ( ∣ 0 ⟩ + e x p ( i π b ) ∣ 1 ⟩ ) ⊗ ( ∣ 0 ⟩ + e x p ( i π 2 b ) ∣ 1 ⟩ ) ⊗ . . . |\tilde{b}\rangle = \frac{1}{\sqrt{2^{n}}}(|0\rangle+exp(i\pi b)|1\rangle)\otimes(|0\rangle+exp(i\frac{\pi}{2} b)|1\rangle)\otimes... ∣ b ~ ⟩ = 2 n 1 ( ∣ 0 ⟩ + e x p ( i π b ) ∣ 1 ⟩ ) ⊗ ( ∣ 0 ⟩ + e x p ( i 2 π b ) ∣ 1 ⟩ ) ⊗ . . .
⊗ ( ∣ 0 ⟩ + e x p ( i π 2 n − 1 b ) ∣ 1 ⟩ ) \otimes(|0\rangle+exp(i\frac{\pi}{2^{n-1}} b)|1\rangle) ⊗ ( ∣ 0 ⟩ + e x p ( i 2 n − 1 π b ) ∣ 1 ⟩ )
오퍼레이터 U Q F T U_{QFT} U Q F T 로 표현하면 다음과 같다.
U Q F T = 1 N ∑ a = 0 N − 1 ∑ b = 0 N − 1 exp ( i 2 π a b N ) ∣ a ⟩ ⟨ b ∣ U_{QFT} = \frac{1}{\sqrt{N}}\sum\limits_{a=0}^{N-1}\sum\limits_{b=0}^{N-1} \exp{(i\frac{2\pi ab}{N})}|a\rangle \langle b| U Q F T = N 1 a = 0 ∑ N − 1 b = 0 ∑ N − 1 exp ( i N 2 π a b ) ∣ a ⟩ ⟨ b ∣
∣ b ~ ⟩ = U Q F T ∣ b ⟩ |\tilde{b}\rangle = U_{QFT}|b\rangle ∣ b ~ ⟩ = U Q F T ∣ b ⟩
Application : Period Finding
f ( x ) f(x) f ( x ) = a x a^{x} a x mod N 이라는 함수를 정의할 때, f ( x ) f(x) f ( x ) 는 주기함수임.
이때 f ( x ) = 1 f(x)=1 f ( x ) = 1 이 되는 값 x = r x=r x = r 을 가정해 보자.
그럼 a r − 1 a^{r}-1 a r − 1 mod N = 0 임을 알 수 있고, 만약 r 이 짝수라면 a r − 1 a^{r}-1 a r − 1 = ( a r / 2 + 1 ) ( a r / 2 − 1 ) (a^{r/2}+1)(a^{r/2}-1) ( a r / 2 + 1 ) ( a r / 2 − 1 ) 로 표현할 수 있으므로 소인수 분해를 쉽게 할 수 있다.
그럼 r을 어떻게 찾느냐? 고전적인 컴퓨터로는 N = 2 n N=2^{n} N = 2 n 이라 할때 지수적인 시간이 필요함. 그러나 QFT 를 이용한 양자알고리즘을 이용하면 f ( x ) f(x) f ( x ) 의 주기 r을 다항시간 내에 구할 수 있음(shor algorithm).
소인수 분해를 하려면 greate common divisor 를 찾는 과정도 필요한데, 오일러 알고리즘에 따르면 gcd 를 찾는것은 O ( n ) O(n) O ( n ) 이므로, 양자알고리즘과 클래식 알고리즘을 혼용하면 다항시간내에 소인수 분해가 가능하다.
reference
qiskit QFT documentation
qiskit 유튜브 강의