[Quantum for Developers] 양자 게이트

Overview

지난 글에서 양자의 특징을 배웠으니 이제 그걸가지고 유의미한 결과를 만들어내려면 기존 컴퓨터에서 사용하던 논리게이트와 유사한 양자게이트를 사용할 줄 알아야 합니다.

[Quantum for Developers] Quantum의 특징

그래서 이번 글에서는 대표적인 양자게이트를 소개하도록 하겠습니다.

[참고문헌]
SNUON_컴퓨터과학이 여는 세계_12.2 양자현상을 수학으로 표현하기_이광근
Wiki : Quantum logic gate
IBM Q Experience : Introduction to Quantum Circuits

Quantum Bit

게이트에 대해서 말하기 전에, 퀀텀비트 줄여서 Qubit라고 부르는 비트에 대해서 짚고 넘어가도록 하겠습니다.

Notation

기존의 bit는 0과 1로 표기할 수 있지만 Qubit의 표기는 약간 다릅니다.

앞전 포스팅에서 언급했던 중첩때문에 Qubit의 상태는 0이다 1이다로 표현할 수 없습니다.

image

그래서 추상적인 벡터와 선형 범함수를 표현하는 데 사용하는 ket-vector를 표준 표기법으로 사용합니다.

확률진폭이 일때, 0인 상태 :
확률진폭이 일때, 1인 상태 :

bar()와 꺽쇠()기호를 사용하여 표기합니다.

그래서 하나의 Qubit 상태는 다음과 같이 표현될 수 있습니다.

행렬로 나타내면 다음과 같이 표현될 수 있습니다.

마찬가지로 두개의 Qubit(A,B)의 상태도 다음과 같이 나타낼 수 있습니다.

Probability Amplitude

위에서 확률진폭이라는 단어가 등장했죠? 여기에 대해서 잠시 짚고 넘어가겠습니다.

양자역학에서의 확률진폭은 제곱이 확률 밀도인 복소수 스칼라 물리량입니다.
다시 말해서 확률진폭^2=확률 입니다.

이 확률진폭은 복소수(제곱했을때 -1이 되는 수)의 형태로 나타납니다.

Why
왜 확률은 확률진폭의 제곱인지, 확률진폭은 복소수의 형태로 나타나는지는 양자가 파동성을 갖고 있기 때문이라고 합니다. »잘모름«

다시 Qubit 하나를 봅시다.

확률진폭 $\alpha$ 는 다음과 같이 나타낼 수 있습니다.

이때 $i$는 복소수입니다.

그래서 0이 나타날 확률은 $\alpha$의 제곱이 될거고 다음과 같이 표현될 수 있습니다.

또한 확률이기 때문에 $\alpha$와 $\beta$의 합은 1입니다.


이것만 보면 잘 이해가 안되니 예를 들어서 보겠습니다.

하나의 Qubit의 상태가 다음과 같다고 할 때 :

$r_{0}$과 $r_{1}$을 다음과 같이 정의 :

그러면 0이 나타날 확률은 $r_{0}$의 제곱이고, 1이 나타날 확률도 $r_{1}$의 제곱입니다.


이렇게 되면 1이 나올 확률(82%)이 훨씬 크니 1이 자주 보이겠죠?

또한 확률의 합도 1!

정리하면)

  • 확률진폭^2=확률
  • 확률진폭은 복소수
  • 확률의 합은 1

Quantum gate

지금부터 대표적인 양자게이트 몇가지를 소개해드리도록 하겠습니다.

Hadamard (H) gate

Qubit의 초기상태에서 0과 1의 상태를 동시에 가질 수 있도록, 중첩을 시켜주는 gate입니다.

양자게이트 :
image

행렬식 :

Single Qubit에 적용 (초기상태를 0이라 가정) :

각 확률이 균등하게 분배된 것을 확인할 수 있습니다. (50% 50%)

image

이 게이트의 또다른 특징은 두번 곱했을때 다시 원상태로 돌아온다는 것입니다.
위의 식에서부터 이어서 계산해보면 다음과 같습니다.

다시 원상태로 돌아온 것을 확인할 수 있습니다.

Pauli gate

파울리 X,Y,Z게이트는 Qubit를 X축 Y축 Z축으로 회전시키는 게이트 입니다.

Pauli-X gate

고전 컴퓨터에서의 Not Gate역할을 하는 게이트입니다.

양자게이트 :
image

행렬식 :

Single Qubit에 적용 (초기상태를 0이라 가정) :

image

Pauli-Y gate

Qubit을 Y방향으로 회전하게 하는 게이트입니다.

양자게이트 :
image

행렬식 :

Single Qubit에 적용 (초기상태를 0이라 가정) :

image

Pauli-Z gate

Qubit을 Z방향으로 회전하게 하는 게이트입니다.
$\vert0\rangle$일때는 Z게이트를 취했을때 변화가 없지만 $\vert1\rangle$일때는 $-\vert1\rangle$로 변환하게 합니다.
그래서 phase shift gate라고도 합니다.

양자게이트 :
image

행렬식 :

Single Qubit에 적용 (초기상태를 0이라 가정) :

image

Swap gate

이 게이트는 두 Qubit의 상태를 swap하는 게이트 입니다.

주의) 여기서부터 행렬 표기가 헷갈릴 수 있습니다.
그림으로 나오는 Qubit상태는 (2번째Qubit)(1번째Qubit)이렇게 역방향으로 표기되어있고,
행렬식 계산의 Qubit상태는 정방향으로 표기되어있습니다.

즉, 행렬식에서의 01은 그림에서의 10과 같습니다.

양자게이트 :
image

행렬식 :

2개 Qubit에 적용 (하나의 Qubit은 중첩상태-H) :
이 때의 Qubit들의 상태는 다음과 같이 나타낼 수 있습니다.

SWAP게이트를 적용하면 :

image

CNOT gate

두 Qubit의 Entanglement(얽힘)현상을 볼 수 있는 게이트입니다.

양자게이트 :
image

행렬식 :

2개 Qubit에 적용 (하나의 Qubit은 중첩상태-H) :
이 때의 Qubit들의 상태는 다음과 같이 나타낼 수 있습니다.

CNOT게이트를 적용하면 :

image

0번 Qubit이 0이되면 1번 Qubit은 0으로, 1이면 1이되는 것을 확인할 수 있습니다.
즉, 첫번째 Qubit의 상태가 두번째 Qubit의 상태에 영향을 주는 얽힘상태를 관찰할 수 있습니다.

TOFFOLI(CCNOT) gate

toffoli 게이트는 3개의 Qubit에서 작동합니다.
2개의 큐비트의 상태가 하나의 큐비트의 상태에 영향을 주는 게이트입니다.

양자게이트 :
image

행렬식 :
image

CCNOT게이트를 적용하면 :
image

첫번째 두번째 Qubit이 1이되면 110이 나와야되는데 마지막 Qubit에 Not연산이 취해져서 111이 나온 것을 확인할 수 있습니다.

이 외에도 몇가지 양자게이트가 더 있는데 추후에 포스팅을 진행하면서 추가하도록 하겠습니다.


댓글남기기