양자 푸리에 변환(QFT)

버들비·2021년 6월 8일
0

양자컴퓨터

목록 보기
2/4
post-custom-banner

What is QFT?

computational basis set {0|0\rangle, 1|1\rangle, ... , N1|N-1\rangle} 을 conjugate basis set {0~|\tilde{0}\rangle, 1~|\tilde{1}\rangle, ... , N1~|\widetilde{N-1}\rangle} 으로 보내는 변환 UQFTU_{QFT}.

compuational basis

fourier basis

기존 베이시스와 푸리에 변환 이후 basis 의 차이. 아랫쪽 fourier basis 의 경우, 위상을 가진 것처럼 평면을 회전하는 것을 확인할 수 있다.

Formula

computational basis 의 coefficient 를 xjx_{j}, conjugate basis 의 coefficient 를 yky_{k} 라 할때

yk=1Nj=0N1exp(i2πjkN)xjy_{k}=\frac{1}{\sqrt{N}}\sum \limits_{j=0}^{N-1}exp(i\frac{2\pi jk}{N})x_{j}
N=2nN=2^{n}

Discrete Fourier Transform 과 식의 모양은 같다.

basis 로 표현한 수식은 아래와 같다.

b~=1Na=0N1exp(i2πabN)a|\tilde{b}\rangle = \frac{1}{\sqrt{N}}\sum \limits_{a=0}^{N-1} exp(i\frac{2\pi ab}{N})|a\rangle

이때 a=a1a2...an=2n1y1+2n2y2+...+20yn|a\rangle = |a_{1}a_{2}...a_{n}\rangle = 2^{n-1}y_{1}+2^{n-2}y_{2}+...+2^{0}y_{n} 이고, y=k=1nyk2nky=\sum\limits_{k=1}^{n}y_{k} 2^{n-k} 이므로

b~=1Na=0N1e(i2πabN)a|\tilde{b}\rangle = \frac{1}{\sqrt{N}}\sum \limits_{a=0}^{N-1} e^{(i\frac{2\pi ab}{N})}|a\rangle
=1Na=0N1k=1ne(i2πbakak)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
=1N(0+e2πib/211)(0+e2πib/221)...(0+e2πib/2n1)=\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)

QFT를 적용하기 전인 a=a1a2...an|a\rangle=|a_{1}\rangle |a_{2}\rangle ... |a_{n}\rangle과 비교했을때 각 qubit이 어떻게 변화했는지 확인할 수 있다.

이때 b~|\tilde{b}\rangle 의 terms 중에

00...0|00...0\rangle, e2πib/2n00...01e^{2\pi i b/2^{n}}|00...01\rangle, e2πib/2n100...10e^{2\pi i b/2^{n-1}}|00...10\rangle, ... 과
e2πib(12+122+...+12n)11...11e^{2\pi i b(\frac{1}{2}+\frac{1}{2^2}+...+\frac{1}{2^n})}|11...11\rangle 는 Quantum Phase Estimation (QPE)에 사용된다.

Example

For N=2, {0,1|0\rangle,|1\rangle} \rightarrow {0~,1~|\tilde{0}\rangle,|\tilde{1}\rangle}.

0~|\tilde{0}\rangle = 12(10+11)=+\frac{1}{\sqrt{2}}(1*|0\rangle+1*|1\rangle)=|+\rangle

1~|\tilde{1}\rangle = 12(1011)=\frac{1}{\sqrt{2}}(1*|0\rangle-1*|1\rangle)=|-\rangle

QFT performes a transform on the basis state.

In general, for N=2nN=2^{n},

b~=12n(0+exp(iπb)1)(0+exp(iπ2b)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...
(0+exp(iπ2n1b)1)\otimes(|0\rangle+exp(i\frac{\pi}{2^{n-1}} b)|1\rangle)

오퍼레이터 UQFTU_{QFT}로 표현하면 다음과 같다.

UQFT=1Na=0N1b=0N1exp(i2πabN)abU_{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|
b~=UQFTb|\tilde{b}\rangle = U_{QFT}|b\rangle

Application : Period Finding

f(x)f(x) = axa^{x} mod N 이라는 함수를 정의할 때, f(x)f(x)는 주기함수임.
이때 f(x)=1f(x)=1 이 되는 값 x=rx=r 을 가정해 보자.
그럼 ar1a^{r}-1 mod N = 0 임을 알 수 있고, 만약 r 이 짝수라면 ar1a^{r}-1 = (ar/2+1)(ar/21)(a^{r/2}+1)(a^{r/2}-1) 로 표현할 수 있으므로 소인수 분해를 쉽게 할 수 있다.

그럼 r을 어떻게 찾느냐? 고전적인 컴퓨터로는 N=2nN=2^{n} 이라 할때 지수적인 시간이 필요함. 그러나 QFT 를 이용한 양자알고리즘을 이용하면 f(x)f(x)의 주기 r을 다항시간 내에 구할 수 있음(shor algorithm).

소인수 분해를 하려면 greate common divisor 를 찾는 과정도 필요한데, 오일러 알고리즘에 따르면 gcd 를 찾는것은 O(n)O(n)이므로, 양자알고리즘과 클래식 알고리즘을 혼용하면 다항시간내에 소인수 분해가 가능하다.

reference
qiskit QFT documentation
qiskit 유튜브 강의

post-custom-banner

0개의 댓글