양자 논리 게이트

섬네일|right|upright=2 |이름(약어 포함), 회로 형태 및 해당 유니터리 행렬별 일반적인 양자 논리 게이트

양자 컴퓨팅과 특히 양자 회로 계산 모델에서 **양자 논리 게이트**(, 또는 간단히 **양자 게이트**(quantum gate))는 소수의 큐비트에서 작동하는 기본 양자 회로이다. 양자 논리 게이트는 기존 디지털 회로의 논리 회로와 마찬가지로 양자 회로의 구성 요소이다.

많은 고전 논리 게이트와 달리 양자 논리 게이트는 가역적이다. 가역 게이트만 사용하여 고전적인 컴퓨팅을 수행할 수 있다. 예를 들어, 가역적인 토폴리 게이트는 종종 보조 비트를 사용해야 하는 비용으로 모든 불 함수를 구현할 수 있다. 토폴리 게이트는 직접적인 양자 등가를 가지며, 이는 양자 회로가 고전 회로가 수행하는 모든 작업을 수행할 수 있음을 보여준다.

양자 게이트는 유니터리 작용소이며, 일부 정규 직교 기저와 관련하여 유니터리 행렬로 설명된다. 일반적으로 계산 기저가 사용되는데, 이는 다른 것과 비교하지 않는 한, d-레벨 양자 시스템(예: 큐비트, 양자 레지스터 또는 큐트리트 및 큐디트)의 경우 정규 직교 기저 벡터 공간 벡터는  또는 이진법 표기법을 사용한다.

## 역사
양자 게이트의 현재 표기법은 1986년 리처드 파인만이 도입한 표기법을 기반으로 Adriano Barenco, 찰스 H. 베넷, 리처드 클리브, 데이비드 P. 디빈첸조, 노먼 마르골루스, 피터 쇼어, Tycho Sleator, 존 A. 스몰린, Harald Weinfurter를 포함한 양자정보과학의 많은 창시자들에 의해 개발되었다.

## 표현
[섬네일|upright=1|[양자 얽힘이 없고 전역 위상이 없는 단일 큐비트 상태는 **[[블로흐 구면]]**의 표면의 점으로 나타낼 수 있으며, |\psi\rangle = \cos\left(\theta /2\right)|0 \rangle + e^{i\varphi}\sin\left(\theta /2\right) |1\rangle으로 쓸 수 있다.블로흐 구면의  축에 대한 회전은 회전 연산자 게이트로 나타낸다.]]
양자 논리 게이트는 유니터리 행렬로 표현된다. n 큐비트(양자 레지스터)에서 작동하는 게이트는 2^n \times 2^n 유니터리 행렬로 표현되며, 행렬 곱셈의 군 연산을 가진 모든 게이트들의 집합은 유니터리 군 U(2n)이다. 게이트가 작동하는 양자 상태는 2^n 복소수 차원의 단위 벡터이며, 복소 유클리드 노름(2-노름)을 갖는다. 기저 벡터(때때로 고유 상태라고도 함)는 큐비트의 상태가 측정될 경우 가능한 결과이며, 양자 상태는 이러한 결과들의 선형 결합이다. 가장 일반적인 양자 게이트는 일반적인 고전 논리 게이트가 하나 또는 두 개의 비트에서 작동하는 것과 마찬가지로 하나 또는 두 개의 큐비트의 벡터 공간에서 작동한다.

양자 논리 게이트는 연속 대칭군에 속하지만, 실제 컴퓨터 하드웨어는 부정확하므로 정밀도가 제한적이다. 게이트 적용은 일반적으로 오류를 발생시키고, 양자 상태의 충실도는 시간이 지남에 따라 감소한다. 양자 오류 정정을 사용하면 사용 가능한 게이트가 유한 집합으로 더욱 제한된다. 이 문서의 뒷부분에서는 이상적인 양자 게이트의 속성에 초점을 맞추므로 이를 무시한다.

양자 상태는 일반적으로 브라-켓 표기법으로 알려진 표기법에서 "켓"으로 표현된다.

단일 큐비트의 벡터 표현은 다음과 같다.
:|a\rangle = v_0 | 0 \rangle + v_1 | 1 \rangle  \rightarrow \begin{bmatrix} v_0 \\ v_1 \end{bmatrix} .

여기서 v_0 및 v_1은 큐비트의 복소 확률 진폭이다. 이 값들은 큐비트의 상태를 측정할 때 0 또는 1을 측정할 확률을 결정한다. 자세한 내용은 아래 측정을 참조한다.

값 0은 켓 으로 표현되며, 값 1은 켓 로 표현된다.

텐서곱(또는 크로네커 곱)은 양자 상태를 결합하는 데 사용된다. 큐비트 레지스터의 결합된 상태는 구성 큐비트의 텐서곱이다. 텐서곱은 기호 로 표시된다.

두 큐비트의 벡터 표현은 다음과 같다.
:| \psi \rangle = v_{00} | 00 \rangle + v_{01} | 0 1 \rangle  + v_{10} | 1 0 \rangle + v_{11} | 1 1 \rangle \rightarrow \begin{bmatrix} v_{00} \\ v_{01} \\ v_{10} \\ v_{11} \end{bmatrix}.

특정 양자 상태에 대한 게이트의 작용은 게이트를 나타내는 행렬 U에 의해 상태를 나타내는 벡터 |\psi_1\rangle를 곱하여 찾는다. 결과는 새로운 양자 상태 이다.

:U|\psi_1\rangle = |\psi_2\rangle.

### 시간 전개 연산자와의 관계
슈뢰딩거 방정식은 관측되지 않는 양자 시스템이 시간이 지남에 따라 어떻게 전개되는지를 설명하며, i\hbar\frac{d}{dt}|\Psi\rangle = \hat{H}|\Psi\rangle이다. 시스템이 안정적인 환경에 있어 일정한 해밀토니언을 가질 때, 이 방정식의 해는 U(t) = e^{-i\hat{H}t/\hbar}이다. 시간 t가 항상 동일한 경우 단순화를 위해 생략할 수 있으며, 양자 상태가 전개하는 방식은 위 섹션과 마찬가지로 U|\psi_1\rangle = |\psi_2\rangle로 설명할 수 있다.

즉, 양자 게이트는 관측되지 않는 양자 시스템이 특정 시간 동안 어떻게 전개되는지를 나타내거나, 동등하게, 게이트는 특정 시간 동안 양자 상태에서 작동하는 유니터리 시간 변화 연산자 U이다.

## 주목할 만한 예시

셀 수 없이 무한한 수의 게이트가 존재한다. 그 중 일부는 다양한 저자에 의해 이름이 붙여졌다. 다음은 문헌에서 가장 자주 사용되는 몇 가지이다.

### 항등 게이트
항등 게이트는 일반적으로 I로 쓰여지는 단위 행렬이며, 단일 큐비트에 대해 다음과 같이 정의된다.

: I = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} ,

여기서 I는 기저 독립적이며 양자 상태를 수정하지 않는다. 항등 게이트는 다양한 게이트 연산의 결과를 수학적으로 설명하거나 다중 큐비트 회로를 논의할 때 가장 유용하다.

### 파울리 게이트 (X,Y,Z)

파울리 게이트 (X,Y,Z)는 세 개의 파울리 행렬 (\sigma_x,\sigma_y,\sigma_z)이며 단일 큐비트에서 작동한다. 파울리 X, Y, Z는 각각 블로흐 구면의 x, y, z 축 주위를 \pi 라디안만큼 회전하는 것과 같다.

파울리-X 게이트는 블로흐 구면에서 z축을 구분하는 표준 기저 에 대해 고전 컴퓨터의 NOT 게이트와 동등한 양자 게이트이다. 이는 |0\rangle를 |1\rangle로, |1\rangle를 |0\rangle로 매핑하기 때문에 비트-플립이라고도 한다. 유사하게, 파울리-Y는 |0\rangle를 i|1\rangle로, |1\rangle를 로 매핑한다. 파울리 Z는 기저 상태 |0\rangle를 변경하지 않고 |1\rangle를 로 매핑한다. 이러한 특성 때문에 파울리 Z는 위상-플립이라고도 한다.

이러한 행렬들은 일반적으로 다음과 같이 표현된다.
: X = \sigma_x =\operatorname{NOT} = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} ,
: Y = \sigma_y = \begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix}, 
: Z = \sigma_z = \begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}.

파울리 행렬은 거듭 행렬이며, 이는 파울리 행렬의 제곱이 단위 행렬임을 의미한다.

:I^2 = X^2 = Y^2 = Z^2 = -iXYZ = I

파울리 행렬은 또한 반교환한다. 예를 들어 ZX=iY=-XZ이다.

파울리 행렬 \sigma_j의 행렬 지수 함수는 종종 e^{-i\sigma_j\theta/2}로 쓰여지는 회전 연산자이다.

### 제어 게이트

upright=0.6|섬네일|제어-U 게이트의 회로 표현
제어 게이트는 2개 이상의 큐비트에서 작동하며, 하나 이상의 큐비트가 특정 연산에 대한 제어 역할을 한다. 예를 들어, 제어 NOT 게이트(또는 CNOT 또는 CX)는 2개의 큐비트에서 작동하며, 첫 번째 큐비트가 일 때만 두 번째 큐비트에 NOT 연산을 수행하고, 그렇지 않으면 변경하지 않는다. 기저    에 대해 에르미트 유니터리 행렬로 표현된다.

: \mbox{CNOT} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix} . 

CNOT(또는 제어 파울리-X) 게이트는 기저 상태 |a,b\rangle \mapsto |a,a \oplus b\rangle를 매핑하는 게이트로 설명할 수 있으며, 여기서 \oplus는 배타적 논리합이다.

CNOT는 파울리 기저로 다음과 같이 표현할 수 있다.

: \mbox{CNOT} = e^{i\frac{\pi}{4}(I-Z_1)(I-X_2)}=e^{-i\frac{\pi}{4}(I-Z_1)(I-X_2)}. 

헤르미트 유니터리 연산자로서 CNOT는 다음 속성을 가지며,  e^{i\theta U}=(\cos \theta)I+(i\sin \theta) U 이고  U =e^{i\frac{\pi}{2}(I-U)}=e^{-i\frac{\pi}{2}(I-U)}이다. 그리고 이는 거듭 행렬이다.

더 일반적으로, U가 행렬 표현이 다음과 같은 단일 큐비트에서 작동하는 게이트인 경우
: U =  \begin{bmatrix} u_{00} & u_{01} \\ u_{10} & u_{11} \end{bmatrix} , 
제어-U 게이트는 두 큐비트에서 작동하는 게이트이며, 첫 번째 큐비트가 제어 역할을 한다. 이 게이트는 기저 상태를 다음과 같이 매핑한다.
: | 0 0 \rangle \mapsto | 0 0 \rangle 
: | 0 1 \rangle \mapsto | 0 1 \rangle 
: | 1 0 \rangle \mapsto | 1 \rangle \otimes U |0 \rangle = | 1 \rangle \otimes (u_{00} |0 \rangle + u_{10} |1 \rangle) 
: | 1 1 \rangle \mapsto | 1 \rangle \otimes U |1 \rangle = | 1 \rangle \otimes (u_{01} |0 \rangle + u_{11} |1 \rangle) 

제어 U를 나타내는 행렬은 다음과 같다.

: \mbox{C}U = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & u_{00} & u_{01} \\  0 & 0 & u_{10} & u_{11} \end{bmatrix}.
U가 파울리 연산자 X, Y, Z 중 하나인 경우, 각각 "제어-X", "제어-Y" 또는 "제어-Z"라는 용어가 사용되기도 한다. 때로는 이를 CX, CY 및 CZ로 줄여서 부르기도 한다.

일반적으로, 단일 큐비트 유니터리 게이트는  U = e^{iH} 로 표현될 수 있으며, 여기서 H는 에르미트 행렬이고, 그러면 제어 U는  \mbox{C}U = e^{i\frac{1}{2}(I-Z_1)H_2} 이다.

제어는 임의의 수의 큐비트를 가진 게이트로 확장될 수 있으며 프로그래밍 언어의 함수로도 확장될 수 있다. 함수는 중첩 상태에 따라 조건화될 수 있다.

#### 고전적 제어

[섬네일|upright=0.8|'''예시:''' 큐비트 <math>\phi</math>가 [#측정|측정되고, 이 측정 결과는 불리언 값이며, 이는 고전 컴퓨터에 의해 소비된다. 만약 \phi가 1로 측정되면, 고전 컴퓨터는 양자 컴퓨터에게 \psi에 U 게이트를 적용하도록 지시한다.회로도에서 단일 선은 큐비트이고, 이중 선은 비트이다.]] 게이트는 고전 논리에 의해서도 제어될 수 있다. 양자 컴퓨터는 고전 컴퓨터에 의해 제어되며, 어떤 큐비트에 어떤 게이트를 실행할지에 대한 지시를 고전 컴퓨터로부터 받는 코프로세서처럼 작동한다. 고전적 제어는 양자 컴퓨터에 대한 명령어 시퀀스에 게이트를 포함하거나 생략하는 것을 의미한다.

### 위상 편이 게이트
위상 편이는 기저 상태를 |0\rangle \mapsto |0\rangle 및 |1\rangle \mapsto e^{i\varphi}|1\rangle로 매핑하는 단일 큐비트 게이트 패밀리이다. 이 게이트를 적용한 후에도 |0\rangle 또는 |1\rangle을 측정할 확률은 변하지 않지만, 양자 상태의 위상을 변경한다. 이는 블로흐 구면에서 수평 원(일정한 위도의 선)을 그리거나 z축을 \varphi 라디안만큼 회전하는 것과 동일하다. 위상 편이 게이트는 다음 행렬로 표현된다.

:P(\varphi) = \begin{bmatrix} 1 & 0 \\ 0 & e^{i \varphi} \end{bmatrix}

여기서 \varphi는 의 주기를 갖는 위상 편이이다. 몇 가지 일반적인 예로는 \varphi = \frac{\pi}{4}인 T 게이트(역사적으로는 \pi /8 게이트로 알려져 있음), \varphi= \frac{\pi}{2}인 위상 게이트(S 게이트라고도 하며, S는 SWAP 게이트에도 사용되지만) 및 \varphi = \pi인 파울리-Z 게이트가 있다.

위상 편이 게이트는 다음과 같이 서로 관련되어 있다.

: Z = \begin{bmatrix} 1 & 0 \\ 0 & e^{i \pi} \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix} = P\left(\pi\right)

: S = \begin{bmatrix} 1 & 0 \\ 0 & e^{i \frac{\pi}{2}} \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & i \end{bmatrix} = P\left(\frac{\pi}{2}\right)=\sqrt{Z}

: T = \begin{bmatrix} 1 & 0 \\ 0 & e^{i \frac{\pi}{4}} \end{bmatrix} =P\left(\frac{\pi}{4}\right) = \sqrt{S} = \sqrt[4]{Z}

위상 게이트 P(\varphi)는 (모든 \varphi = n\pi, n \in \mathbb{Z}인 경우를 제외하고는) 헤르미트가 아니다. 이 게이트들은 그들의 헤르미트 켤레와 다르다: P^\dagger(\varphi)=P(-\varphi). 두 헤르미트 수반 (또는 켤레 전치) 게이트 S^\dagger와 T^\dagger는 때때로 명령어 세트에 포함된다.

### 아다마르 게이트
자크 아다마르()와 조세프 월시의 이름을 딴 아다마르 또는 월시-아다마르 게이트는 단일 큐비트에서 작동한다. 이 게이트는 기저 상태를 |0\rangle \mapsto \frac{|0\rangle + |1\rangle}{\sqrt{2}} 및 |1\rangle \mapsto \frac{|0\rangle - |1\rangle}{\sqrt{2}}로 매핑한다(계산 기저 상태가 주어지면 동일한 중첩 상태를 생성한다). 두 상태 (|0\rangle + |1\rangle)/\sqrt{2}와 (|0\rangle - |1\rangle)/\sqrt{2}는 각각 |+\rangle와 |-\rangle로 쓰이기도 한다. 아다마르 게이트는 블로흐 구면에서 (\hat{x}+\hat{z})/\sqrt{2} 축을 중심으로 \pi만큼 회전하며, 따라서 거듭 행렬이다. 이 게이트는 아다마르 행렬로 표현된다.
upright=0.8|섬네일|아다마르 게이트의 회로 표현

: H = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix} .

만약 헤르미트(따라서 H^{\dagger}=H^{-1}=H) 아다마르 게이트가 기저 변환을 수행하는 데 사용되면, \hat{x}와 \hat{z}를 뒤집는다. 예를 들어, HZH=X 및 H\sqrt{X}\;H=\sqrt{Z}=S이다.

### 스왑 게이트

upright=0.6|섬네일|SWAP 게이트의 회로 표현
스왑 게이트는 두 큐비트를 교환한다. 기저 |00\rangle, |01\rangle, |10\rangle, |11\rangle에 대해 다음 행렬로 표현된다.

: \mbox{SWAP} = \begin{bmatrix} 1&0&0&0\\0&0&1&0\\0&1&0&0\\0&0&0&1\end{bmatrix} . 
스왑 게이트는 다음과 같이 합계 형태로 분해할 수 있다.

:\mbox{SWAP}=\frac{I\otimes I +X\otimes X+Y\otimes Y+Z\otimes Z}{2}

### 토폴리 (CCNOT) 게이트

upright=0.6|섬네일|토폴리 게이트의 회로 표현
톰마소 토폴리의 이름을 따서 명명된 토폴리 게이트는 CCNOT 게이트 또는 도이치 게이트 D(\pi/2)라고도 불리며, 고전적 계산에 대해 범용적이지만 양자 계산에 대해서는 그렇지 않은 3비트 게이트이다. 양자 토폴리 게이트는 3개의 큐비트에 대해 정의된 동일한 게이트이다. 입력 큐비트가 |0\rangle 및 인 경우로 제한한다면, 처음 두 비트가 |1\rangle 상태일 때만 세 번째 비트에 파울리-X(또는 NOT)를 적용하고, 그렇지 않으면 아무것도 하지 않는다. 이는 CC-U(제어-제어 유니터리) 게이트의 예이다. 고전적 게이트의 양자 아날로그이므로, 진리표에 의해 완전히 지정된다. 토폴리 게이트는 단일 큐비트 아다마르 게이트와 결합될 때 범용적이다.

토폴리 게이트는 AND (\land) 및 XOR (\oplus) 연산과 관련이 있다. 계산 기저의 상태에서 |a, b, c\rangle \mapsto |a, b, c\oplus (a \land b)\rangle 매핑을 수행하기 때문이다.

토폴리 게이트는 파울리 행렬을 사용하여 다음과 같이 표현할 수 있다.

: \mbox{Toff} = e^{i\frac{\pi}{8}(I-Z_1)(I-Z_2)(I-X_3)}= e^{-i\frac{\pi}{8}(I-Z_1)(I-Z_2)(I-X_3)}. 

## 범용 양자 게이트
upright=1.5|섬네일|CNOT와 <math>\sqrt{\mbox{SWAP}}</math>는 모두 범용 2큐비트 게이트이며 서로 변환될 수 있다.
**범용 양자 게이트** 집합은 양자 컴퓨터에서 가능한 모든 연산을 줄일 수 있는 게이트 집합, 즉 유한 집합의 게이트 유한 시퀀스로 다른 모든 유니터리 연산을 표현할 수 있는 게이트 집합이다. 기술적으로, 가능한 양자 게이트의 수는 셀 수 없이 많고, 유한 집합의 유한 시퀀스 수는 셀 수 있기 때문에, 셀 수 없는 게이트 집합 없이는 불가능하다. 이 문제를 해결하기 위해, 우리는 모든 양자 연산이 이 유한 집합의 게이트 시퀀스로 근사될 수 있도록만 요구한다. 또한, 일정한 수의 큐비트에 대한 유니터리 변환의 경우, 솔로바이-키타예프 정리는 이를 효율적으로 수행할 수 있음을 보장한다. 양자 게이트 집합이 범용적인지 여부를 확인하는 것은 군론 방법을 사용하거나 (근사) 양자 t-설계와의 관계를 통해 수행할 수 있다.

일부 범용 양자 게이트 집합은 다음과 같다.

* 회전 연산자 , , , 위상 편이 게이트  및 CNOT는 일반적으로 범용 양자 게이트 집합을 형성하는 데 사용된다.
* 클리포드 집합 {CNOT, H, S} + T 게이트. 클리포드 집합만으로는 범용 양자 게이트 집합이 아니다. 고츠만–닐 정리에 따라 고전적으로 효율적으로 시뮬레이션될 수 있기 때문이다.
* 토폴리 게이트 + 아다마르 게이트. 토폴리 게이트만으로도 모든 고전적 계산을 포함하는 가역 불 논리 회로에 대한 범용 게이트 집합을 형성한다.

### 도이치 게이트
범용 양자 게이트의 단일 게이트 집합은 물리학자 데이비드 도이치의 이름을 딴 매개변수화된 3큐비트 도이치 게이트 D(\theta)를 사용하여 공식화할 수도 있다. 이는 CC-U, 즉 제어-제어-유니터리 게이트의 일반적인 경우이며, 다음과 같이 정의된다.

: |a, b, c\rangle \mapsto \begin{cases}
 i \cos(\theta) |a, b , c\rangle + \sin(\theta) |a, b, 1 - c\rangle & \text{for}\ a = b = 1, \\
 |a, b, c\rangle & \text{otherwise}.
\end{cases}

불행히도, 작동하는 도이치 게이트는 프로토콜의 부족으로 인해 도달하기 어려웠다. 중성 원자의 쌍극자-쌍극자 상호 작용을 통해 도이치 게이트를 구현하려는 몇 가지 제안이 있다.

가역 고전 컴퓨팅을 위한 범용 논리 게이트인 토폴리 게이트는 도이치 게이트 D(\pi/2)로 환원될 수 있으며, 따라서 모든 가역 고전 논리 연산이 범용 양자 컴퓨터에서 수행될 수 있음을 보여준다.

또한 범용성에 충분한 단일 2큐비트 게이트도 존재한다. 1996년 Adriano Barenco는 도이치 게이트가 단일 2큐비트 게이트(바렌코 게이트)만을 사용하여 분해될 수 있음을 보여주었지만, 이는 실험적으로 구현하기 어렵다. 이 기능은 양자 회로에만 독점적인 것으로, 가역적이면서도 범용적인 고전적인 2비트 게이트는 없다. 범용 2큐비트 게이트는 빠르고 저전력 마이크로프로세서에서 고전적인 가역 회로를 개선하는 데 구현될 수 있다.

## 회로 구성
### 직렬 연결 게이트
섬네일|right|upright=2|직렬로 연결된 두 게이트 Y와 X. 와이어에 나타나는 순서는 함께 곱할 때 역전된다. A와 B 두 게이트가 모두 n 큐비트에서 작동한다고 가정해 보자. B가 직렬 회로에서 A 뒤에 놓이면, 두 게이트의 효과는 단일 게이트 C로 설명될 수 있다.

: C = B \cdot A

여기서 \cdot는 행렬 곱셈이다. 결과 게이트 C는 A와 B와 동일한 차원을 갖는다. 게이트가 회로도에 나타나는 순서는 함께 곱할 때 역전된다.

예를 들어, 단일 큐비트에서 작동하는 파울리 X 게이트를 파울리 Y 게이트 뒤에 놓는 것은 단일 결합 게이트 C로 설명할 수 있다.

: C = X \cdot Y = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} \cdot \begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix} = \begin{bmatrix} i & 0 \\ 0 & -i \end{bmatrix} = iZ

곱셈 기호 (\cdot)는 종종 생략된다.

#### 양자 게이트의 지수
유니터리 행렬의 모든 실수 지수도 유니터리 행렬이며, 모든 양자 게이트는 유니터리 행렬이다.

양의 정수 지수는 직렬 연결된 게이트의 시퀀스와 동일하며 (예: ), 실수 지수는 직렬 회로의 일반화이다. 예를 들어, X^\pi와 \sqrt{X}=X^{1/2}는 모두 유효한 양자 게이트이다.

어떤 유니터리 행렬 U에 대해서도 U^0=I이다. 단위 행렬 (I)은 NOP처럼 동작하며 양자 회로에서 빈 와이어로 표현되거나 아예 표시되지 않을 수 있다.

모든 게이트는 유니터리 행렬이므로 U^\dagger U = UU^\dagger = I이고 이다. 여기서 \dagger는 켤레 전치를 나타낸다. 이는 헤르미트 수반이라고도 불린다.

이는 게이트의 음수 지수가 양수 지수화된 게이트의 유니터리 역변환임을 의미한다: . 예를 들어, 위상 편이 게이트의 일부 음수 지수는 T^{-1}=T^{\dagger}이고 이다.

에르미트 행렬 H^\dagger=H의 경우, 유니터리성 때문에 HH^\dagger=I이므로 모든 헤르미트 게이트에 대해 H^2 = I이다. 이는 거듭 행렬이다. 헤르미트 게이트의 예로는 파울리 게이트, 아다마르, CNOT, SWAP 및 토폴리가 있다. 각 헤르미트 유니터리 행렬 H는 특정 속성을 가지는데, e^{i\theta H}=(\cos \theta)I+(i\sin \theta) H이고 H=e^{i\frac{\pi}{2}(I-H)}=e^{-i\frac{\pi}{2}(I-H)}이다.

게이트의 지수는 시간 전개 연산자가 양자 상태에 적용되는 시간의 지속 시간의 배수이다. 예를 들어, 스핀 큐비트 양자 컴퓨터에서 \sqrt{\mathrm{SWAP}} 게이트는 전체 교환 상호 작용 시간의 절반 동안 두 스핀 전자에 대한 교환 상호 작용을 통해 구현될 수 있다.

### 병렬 게이트
섬네일|upright=1.8|right|두 게이트 <math>Y</math>와 <math>X</math>가 병렬로 연결되면 <math>Y \otimes X</math> 게이트와 동일하다.
두 양자 게이트의 텐서곱(또는 크로네커 곱)은 두 게이트가 병렬로 연결된 것과 동일한 게이트이다.

그림에서와 같이 파울리-Y 게이트를 파울리-X 게이트와 병렬로 결합하면 다음과 같이 쓸 수 있다.

: C = Y \otimes X = \begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix} \otimes \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} = \begin{bmatrix} 0 \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} & -i \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} \\ i \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} & 0 \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix}\end{bmatrix} = \begin{bmatrix} 0 & 0 & 0 & -i \\ 0 & 0 & -i & 0 \\ 0 & i & 0 & 0 \\ i & 0 & 0 & 0 \end{bmatrix}

파울리-X와 파울리-Y 게이트는 모두 단일 큐비트에서 작동한다. 결과 게이트 C는 두 큐비트에서 작동한다.

때때로 텐서곱 기호는 생략되고, 대신 연산자에 인덱스가 사용된다.

#### 아다마르 변환

게이트 H_2 = H \otimes H는 2개의 큐비트에 병렬로 적용되는 아다마르 게이트 이다. 이는 다음과 같이 쓸 수 있다.

:H_2 = H \otimes H = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix} \otimes \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix} = \frac{1}{2} \begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & -1 & 1 & -1 \\ 1 & 1 & -1 & -1 \\ 1 & -1 & -1 & 1 \end{bmatrix}

이 "두 큐비트 병렬 아다마르 게이트"는 예를 들어 두 큐비트 영 벡터 에 적용될 때, 네 가지 가능한 결과 중 어느 하나에서 관측될 동일한 확률을 갖는 양자 상태를 생성한다;    및 . 이 연산을 다음과 같이 쓸 수 있다.

:H_2 |00\rangle = \frac{1}{2} \begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & -1 & 1 & -1 \\ 1 & 1 & -1 & -1 \\ 1 & -1 & -1 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 \end{bmatrix} = \frac{1}{2} \begin{bmatrix} 1 \\ 1 \\ 1 \\ 1 \end{bmatrix} = \frac{1}{2} |00\rangle + \frac{1}{2} |01\rangle +\frac{1}{2} |10\rangle +\frac{1}{2} |11\rangle = \frac{|00\rangle + |01\rangle + |10\rangle + |11\rangle}{2}

[섬네일|right|upright=2|'''예시:''' 3-[큐비트 양자 레지스터 에 대한 아다마르 변환.]]
여기서 각 측정 가능한 상태의 진폭은 이다. 모든 상태를 관측할 확률은 측정 가능한 상태 진폭의 절댓값의 제곱이며, 위 예시에서는 개별 네 가지 경우 중 어느 하나를 관측할 확률이 4분의 1임을 의미한다. 자세한 내용은 측정을 참조한다.

H_2는 두 큐비트에 대한 아다마르 변환을 수행한다. 유사하게 게이트 \underbrace{ H \otimes H \otimes \dots \otimes H }_{n\text{ times}} = \bigotimes_{i=0}^{n-1} H = H^{\otimes n} = H_n는 n 큐비트의 양자 레지스터에 대한 아다마르 변환을 수행한다.

모든 큐비트가 로 초기화된 n개의 큐비트 레지스터에 적용될 때, 아다마르 변환은 양자 레지스터를 2^n개의 가능한 상태 중 어느 하나로 측정될 동일한 확률을 가진 중첩 상태로 만든다.

:\bigotimes_{i=0}^{n-1}(H|0\rangle) = \frac{1}{\sqrt{2^n}} \begin{bmatrix} 1 \\ 1 \\ \vdots \\ 1 \end{bmatrix} = \frac{1}{\sqrt{2^n}} \Big( |0\rangle + |1\rangle + \dots + |2^n-1\rangle \Big)= \frac{1}{\sqrt{2^n}}\sum_{i=0}^{2^{n}-1}|i\rangle

이 상태는 균일한 중첩 상태이며, 예를 들어 진폭 증폭 및 위상 추정과 같은 일부 탐색 알고리즘의 첫 번째 단계로 생성된다.

이 상태를 측정하면 |0\rangle에서  사이의 난수가 생성된다. 숫자가 얼마나 무작위적인지는 논리 게이트의 양자 충실도에 달려 있다. 측정되지 않으면, 가능한 각 상태에 대해 동일한 확률 진폭 \frac{1}{\sqrt{2^n}}을 가진 양자 상태이다.

아다마르 변환은 n 큐비트 레지스터 |\psi\rangle에 작용하며, |\psi\rangle = \bigotimes_{i=0}^{n-1} |\psi_i\rangle는 다음과 같다.
:\bigotimes_{i=0}^{n-1}H|\psi\rangle = \bigotimes_{i=0}^{n-1}\frac{|0\rangle + (-1)^{\psi_i}|1\rangle}{\sqrt{2}} = \frac{1}{\sqrt{2^n}}\bigotimes_{i=0}^{n-1}\Big(|0\rangle + (-1)^{\psi_i}|1\rangle\Big) = H|\psi_0\rangle \otimes H|\psi_1\rangle \otimes \cdots \otimes H|\psi_{n-1}\rangle

#### 얽힌 상태에 대한 적용
두 개 이상의 큐비트를 단일 양자 상태로 간주할 경우, 이 결합된 상태는 구성 큐비트의 텐서곱과 같다. 구성 하위 시스템의 텐서곱으로 표현될 수 있는 모든 상태를 분리 가능한 상태라고 한다. 반면에 얽힌 상태는 텐서 분해될 수 없는 상태, 즉 얽힌 상태는 구성 큐비트 상태의 텐서곱으로 표현될 수 없는 상태이다. 얽힌 상태를 구성하는 큐비트에 게이트를 적용할 때는 특별한 주의를 기울여야 한다.

N개의 얽힌 큐비트 집합이 있고, 그 집합에서 M H는 1개의 큐비트에서만 작동하지만, |\psi\rangle는 2개의 큐비트에 걸쳐 있는 얽힌 양자 상태이다. 이 예시에서 |\psi\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}이다.]]
예를 들어, 아다마르 게이트 는 단일 큐비트에서 작동하지만, 얽힌 벨 상태 }}를 구성하는 두 큐비트 중 첫 번째 큐비트에 이를 입력하면 그 연산을 쉽게 쓸 수 없다. 두 큐비트에 걸쳐 있는 양자 상태에 작동할 수 있도록 아다마르 게이트 H를 항등 게이트 I로 확장해야 한다.

:K = H \otimes I = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix} \otimes \begin{bmatrix} 1 & 0 \\ 0 & 1\end{bmatrix} = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 0 & 1 & 0 \\ 0 & 1 & 0 & 1 \\ 1 & 0 & -1 & 0 \\ 0 & 1 & 0 & -1\end{bmatrix}

게이트 K는 이제 얽힌 상태이든 아니든 어떤 두 큐비트 상태에도 적용될 수 있다. 게이트 K는 두 번째 큐비트를 건드리지 않고 첫 번째 큐비트에 아다마르 변환을 적용한다. 이 예시의 벨 상태에 적용하면 다음과 같이 쓸 수 있다.

:K \frac{|00\rangle + |11\rangle}{\sqrt{2}} = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 0 & 1 & 0 \\ 0 & 1 & 0 & 1 \\ 1 & 0 & -1 & 0 \\ 0 & 1 & 0 & -1\end{bmatrix} \frac{1}{\sqrt{2}} \begin{bmatrix}1 \\ 0 \\ 0 \\ 1\end{bmatrix} = \frac{1}{2} \begin{bmatrix} 1 \\ 1 \\ 1 \\ -1 \end{bmatrix} = \frac{|00\rangle + |01\rangle + |10\rangle - |11\rangle}{2}

#### 계산 복잡도와 텐서곱
고전적인 기계를 사용할 경우, 두 n \times n 행렬을 곱하는 시간 복잡도는 최소 이다. q 큐비트에서 작동하는 게이트의 크기가 2^q \times 2^q이므로, 일반적인 얽힌 상태에서 작동하는 양자 회로의 한 단계를 (게이트를 곱하여) 시뮬레이션하는 시간은 이다. 이러한 이유로 고전 컴퓨터를 사용하여 큰 얽힌 양자 시스템을 시뮬레이션하는 것은 다루기 어렵다고 여겨진다. 그러나 클리포드 게이트와 같은 게이트의 부분 집합 또는 고전적인 불 함수만 구현하는 회로의 사소한 경우(예: X, CNOT, 토폴리의 조합)는 고전 컴퓨터에서 효율적으로 시뮬레이션될 수 있다.

n개의 큐비트를 가진 양자 레지스터의 상태 벡터는 2^n개의 복소수 엔트리이다. 부동소수점 값의 목록으로 확률 진폭을 저장하는 것은 큰 n에 대해 실용적이지 않다.

### 게이트의 유니터리 역변환
섬네일|right|upright=0.6|'''예시:''' 아다마르-CNOT 곱의 유니터리 역변환. 세 개의 게이트  <math>I</math>, <math>\mathrm{CNOT}</math>는 그 자체의 유니터리 역변환이다. 모든 양자 논리 게이트는 가역적이므로, 여러 게이트의 어떤 조합도 가역적이다. 유니터리 행렬의 모든 곱셈과 텐서곱(즉, 직렬 및 병렬 조합) 또한 유니터리 행렬이다. 이는 게이트만 포함하는 모든 알고리즘과 함수에 대한 역변환을 구성할 수 있음을 의미한다.

초기화, 측정, I/O 및 자발적인 양자 결어긋남은 양자 컴퓨터에서 부작용이다. 그러나 게이트는 순수 함수이며 전단사이다.

만약 U가 유니터리 행렬이라면, U^\dagger U = UU^\dagger = I이고 이다. 대거(\dagger)는 켤레 전치를 나타낸다. 이는 헤르미트 수반이라고도 불린다.

함수 F가 m개의 게이트 곱인 경우,  함수 F^\dagger의 유니터리 역변환은 다음과 같이 구성될 수 있다.

(UV)^\dagger = V^\dagger U^\dagger이므로, 반복 적용 후 다음과 같다.

:F^\dagger = \left(\prod_{i=1}^{m} A_i\right)^\dagger = \prod_{i=m}^{1} A^\dagger_{i} = A_m^\dagger \cdot \dots \cdot A_2^\dagger \cdot A_1^\dagger

유사하게, 함수 G가 두 게이트 A와 B로 병렬로 구성되어 있다면, G=A\otimes B이고 이다.

자신의 유니터리 역변환인 게이트는 헤르미트 또는 자기 수반 작용소라고 불린다. 아다마르(H) 및 파울리 게이트(I, X, Y, Z)와 같은 일부 기본 게이트는 헤르미트 연산자이지만, 위상 편이(S, T, P, CPhase) 게이트와 같은 다른 게이트는 일반적으로 그렇지 않다.

예를 들어, 덧셈을 위한 알고리즘은 "역으로 실행"될 때 그 유니터리 역변환으로서 뺄셈에 사용될 수 있다. 역 양자 푸리에 변환은 유니터리 역변환이다. 유니터리 역변환은 재계산에도 사용될 수 있다. 마이크로소프트의 Q#, Bernhard Ömer의 QCL, 및 IBM의 Qiskit과 같은 양자 컴퓨터용 프로그래밍 언어에는 함수 역변환이 프로그래밍 개념으로 포함되어 있다.

## 측정

upright=0.6|섬네일|측정의 회로 표현. 오른쪽의 두 선은 고전적 비트를 나타내고, 왼쪽의 단일 선은 큐비트를 나타낸다.
측정(때로는 관측이라고도 함)은 비가역적이며 따라서 양자 게이트가 아니다. 측정된 양자 상태를 단일 값에 할당하기 때문이다. 측정은 양자 상태를 취하여 벡터 길이의 제곱(노름의 2-노름에서)과 동일한 확률로 해당 기저 벡터 중 하나로 투영한다. 이는 보른 규칙으로 알려져 있으며 확률적으로 양자 상태를 측정된 상태를 나타내는 기저 벡터와 동일하게 설정하므로 추계학적 비가역 연산으로 나타난다. 측정 순간에 상태는 측정된 확정적인 단일 값으로 "붕괴"된다고 한다. 측정 시 양자 상태가 왜, 어떻게, 심지어는 붕괴하는지는 측정 문제라고 불린다.

확률 진폭 \phi를 가진 값을 측정할 확률은 이며, 여기서 |\cdot|는 모듈러스이다.

양자 상태가 벡터 로 표현되는 단일 큐비트를 측정하면 확률 로 |0\rangle이, 확률 |b|^2로 이 나타난다.

예를 들어, 양자 상태가 \frac{|0\rangle -i|1\rangle }{\sqrt{2}} = \frac{1}{\sqrt{2}}\begin{bmatrix} 1 \\ -i \end{bmatrix}인 큐비트를 측정하면 |0\rangle 또는  중 하나가 동일한 확률로 나타난다.

upright=0.8|섬네일|단일 큐비트에 대해, 우리는 <math>\mathbb C^2</math>에 단위원구가 있고 양자 상태는 <math>a|0\rangle + b|1\rangle</math>이며 을 만족한다. 상태는  또는 <math>|a|^2 = \cos^2 \theta</math> 및 로 다시 쓸 수 있다.<br>참고: <math>|a|^2</math>는 <math>|0\rangle</math>을 측정할 확률이고 <math>|b|^2</math>는 을 측정할 확률이다.
개의 큐비트에 걸쳐 있는 양자 상태 |\Psi\rangle는 2^n 복소수 차원의 벡터로 쓸 수 있다. . 이는 개의 큐비트의 텐서곱이 2^n차원 벡터이기 때문이다. 이 방식으로, 개의 큐비트를 가진 양자 레지스터는 2^n개의 서로 다른 상태로 측정될 수 있으며, 이는 개의 고전적인 비트 레지스터가 2^n개의 서로 다른 상태를 가질 수 있는 것과 유사하다. 고전 컴퓨터의 비트와 달리, 양자 상태는 여러 측정 가능한 값에서 동시에 0이 아닌 확률 진폭을 가질 수 있다. 이를 중첩이라고 한다.

모든 결과에 대한 모든 확률의 합은 항상 과 같아야 한다. 다른 말로 하면, \mathbb C^{2^n}로 일반화된 피타고라스 정리는 개의 큐비트를 가진 모든 양자 상태 |\Psi\rangle가 1 = \sum_{x=0}^{2^n-1}|a_x|^2를 만족해야 한다는 것을 의미하며, 여기서 a_x는 측정 가능한 상태 의 확률 진폭이다. 이에 대한 기하학적 해석은 개의 큐비트를 가진 양자 상태 |\Psi\rangle의 가능한 상태 공간은 \mathbb C^{2^n}의 단위구 표면이며, 이에 적용되는 유니터리 변환(즉, 양자 논리 게이트)은 구면에서의 회전이다. 게이트가 수행하는 회전은 U(2<sup>n</sup>) 대칭군을 형성한다. 측정은 이 복소수 구면의 표면의 점들을 공간을 확장하는 (그리고 결과를 라벨링하는) 기저 벡터로 확률적으로 투영하는 것이다.

대부분의 경우 공간은 특정  복소 공간보다는 힐베르트 공간 \mathcal{H}로 표현된다. 차원의 수(기저 벡터에 의해 정의되며, 따라서 측정 가능한 결과의 수도 정의됨)는 종종 피연산자에 의해 암시되며, 예를 들어 문제를 해결하는 데 필요한 상태 공간이다. 그로버 알고리즘에서 그로버는 이 일반적인 기저 벡터 집합을 "데이터베이스"라고 명명했다.

양자 상태를 측정할 기저 벡터의 선택은 측정 결과에 영향을 미칠 것이다. 자세한 내용은 기저 변환 및 폰 노이만 엔트로피를 참조한다. 이 문서에서는 항상 계산 기저를 사용하는데, 이는 -큐비트 양자 레지스터의 2^n개 기저 벡터를  또는 이진 표현 으로 라벨링했음을 의미한다.

양자역학에서 기저 벡터는 정규 직교 기저를 구성한다.

대안적인 측정 기저 사용의 예는 BB84 암호에서 찾을 수 있다.

### 얽힌 상태에 대한 측정의 효과
[섬네일|right|upright=1.3|[#아다마르|아다마르-CNOT 게이트. |00\rangle를 입력하면 벨 상태가 생성된다.]]

두 양자 상태(즉, 큐비트 또는 양자 레지스터)가 얽혀 있는 경우(결합된 상태가 텐서곱으로 표현될 수 없음을 의미함), 한 레지스터의 측정은 다른 레지스터의 상태를 부분적으로 또는 전체적으로 붕괴시킴으로써 그 상태에 영향을 미치거나 드러낸다. 이 효과는 계산에 사용될 수 있으며, 많은 알고리즘에서 활용된다.

아다마르-CNOT 조합은 영 상태에 다음과 같이 작용한다.
:\operatorname{CNOT}(H \otimes I)|00\rangle
= \left(
    \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix}
    \left(
        \frac{1}{\sqrt{2}}
        \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix}
        \otimes
        \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}
    \right)
  \right)
  \begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 \end{bmatrix}
= \frac{1}{\sqrt{2}} \begin{bmatrix} 1 \\ 0 \\ 0 \\ 1 \end{bmatrix}
= \frac{|00\rangle + |11\rangle}{\sqrt{2}}

[upright=0.8|섬네일|본문의 벨 상태는 <math>|\Psi\rangle = a|00\rangle + b|01\rangle + c|10\rangle + d|11\rangle</math>이며, 여기서 <math>a = d = \frac{1}{\sqrt{2}}</math>이고 이다. 따라서 그림과 같이 [기저 벡터 |00\rangle과 에 의해 확장되는 평면으로 설명될 수 있다. 2큐비트 시스템의 가능한 상태 공간을 나타내는 단위구 ( 내)는 평면과 교차하며 |\Psi\rangle는 단위구의 표면에 놓여 있다. 이므로 이 상태를 |00\rangle 또는 로 측정할 확률이 동일하며, b=c=0이므로 |01\rangle 또는 로 측정할 확률은 0이다.]]
이 결과 상태는 벨 상태  = \frac{1}{\sqrt{2}}\begin{bmatrix} 1 \\ 0 \\ 0 \\ 1\end{bmatrix}}}이다. 이 상태는 두 큐비트의 텐서곱으로 설명될 수 없다. 다음 방정식에 대한 해는 없다.

:\begin{bmatrix} x \\ y \end{bmatrix} \otimes \begin{bmatrix} w \\ z \end{bmatrix} = \begin{bmatrix} xw \\ xz \\ yw \\ yz \end{bmatrix} = \frac{1}{\sqrt{2}}\begin{bmatrix} 1 \\ 0 \\ 0 \\ 1 \end{bmatrix},

왜냐하면 예를 들어 는 와 의 경우에 모두 0이 아니어야 하고 0이어야 하기 때문이다.

양자 상태는 두 큐비트에 걸쳐 있다. 이를 얽힘이라고 한다. 이 벨 상태를 구성하는 두 큐비트 중 하나를 측정하면 다른 큐비트가 논리적으로 동일한 값을 가져야 하며, 둘 다 동일해야 한다. 즉, |00\rangle 상태로 발견되거나 |11\rangle 상태로 발견될 것이다. 예를 들어, 한 큐비트가 로 측정되면, 다른 큐비트도 이어야 한다. 왜냐하면 그들의 결합된 상태가 이 되었기 때문이다. 한 큐비트의 측정은 두 큐비트에 걸쳐 있는 전체 양자 상태를 붕괴시킨다.

그린버거-혼-자일링거 상태는 세 개 이상의 큐비트에 걸쳐 있는 유사한 얽힌 양자 상태이다.

이러한 종류의 값 할당은 어떤 거리에서도 즉시 발생하며, 2018년 현재 QUESS에 의해 최대 1200km 거리에서도 실험적으로 확인되었다. 이 현상이 빛의 속도로 큐비트 사이의 거리를 통과하는 데 걸리는 시간과 반대로 즉시 일어나는 것처럼 보이는 것을 EPR 역설이라고 하며, 이를 해결하는 방법은 물리학의 미해결 문제이다. 원래는 국소적 실재론이라는 가정을 포기함으로써 해결되었지만, 다른 해석들도 나타났다. 자세한 내용은 벨 테스트 실험을 참조한다. 비통신 정리는 이 현상이 고전 정보의 초광속 통신에 사용될 수 없음을 증명한다.

### 쌍으로 얽힌 큐비트가 있는 레지스터에 대한 측정
섬네일|upright=1.8|right|<math>2^n</math> 상태의 중첩 상태이고 레지스터 B와 쌍으로 얽혀 있는 레지스터 A에 대한 유니터리 변환 F의 효과. 여기서 은 3이다(각 레지스터는 3개의 큐비트를 가짐).
모두 로 초기화된 개의 큐비트를 가진 양자 레지스터 A를 가져와 병렬 아다마르 게이트 를 통과시킨다. 그러면 레지스터 A는 \frac{1}{\sqrt{2^n}} \sum_{k=0}^{2^{n}-1} |k\rangle 상태가 되며, 측정 시 |0\rangle부터 까지의 2^n개 가능한 상태 중 어느 하나로 나타날 동일한 확률을 갖는다. 두 번째 레지스터 B도 개의 큐비트를 |0\rangle으로 초기화하고, 레지스터 A의 큐비트와 쌍으로 CNOT를 수행하여 각 에 대해 큐비트 A_{p}와 B_{p}가 상태 }}를 형성하도록 한다.

이제 레지스터 A의 큐비트를 측정하면 레지스터 B도 A와 동일한 값을 포함하는 것으로 밝혀질 것이다. 그러나 대신 양자 논리 게이트 를 A에 적용한 후 측정하면, 가 성립하며, 여기서 F^\dagger는 의 유니터리 역변환이다.

게이트의 유니터리 역변환이 작동하는 방식 때문에, 이다. 예를 들어, F(x)=x+3 \pmod{2^n}이라고 하면, 이다.

평등은 측정 순서(레지스터 A 또는 B)에 관계없이 유지된다. 단, 가 완전히 실행되었다고 가정한다. 측정은 심지어 큐비트별로 무작위적이고 동시에 수행될 수도 있다. 하나의 큐비트 측정 할당이 다른 얽힌 큐비트로부터 가능한 값 공간을 제한하기 때문이다.

동등성은 유지되지만, 가능한 결과들을 측정할 확률은 를 적용한 결과로 변경될 수 있으며, 이는 양자 탐색 알고리즘의 의도일 수 있다.

얽힘을 통한 값 공유 효과는 쇼어 알고리즘, 양자 위상 추정 및 양자 개수 알고리즘에 사용된다. 양자 푸리에 변환을 사용하여 일부 문제의 해답 상태의 확률 진폭을 증폭하는 것은 "푸리에 피싱"으로 알려진 일반적인 방법이다.

## 논리 함수 합성
[upright=1.5|섬네일|1986년 파인만이 제시한 양자 [전가산기. 이는 토폴리 및 CNOT 게이트로만 구성되어 있다. 그림의 점선 사각형으로 둘러싸인 게이트는 B 출력을 복원하기 위한 재계산이 필요하지 않은 경우 생략할 수 있다.]]
게이트만을 사용하는 함수 및 루틴은 작은 게이트와 마찬가지로 행렬로 설명될 수 있다. q 큐비트에서 작동하는 양자 함수를 나타내는 행렬은  크기를 갖는다. 예를 들어, "큐바이트"(양자 레지스터의 8 큐비트 레지스터)에서 작동하는 함수는 2^8 \times 2^8 = 256 \times 256 요소를 가진 행렬로 표현될 것이다.

양자 컴퓨터에서 기본적으로 사용할 수 없는 게이트 집합에 속하지 않는 유니터리 변환은 사용 가능한 기본 게이트를 회로로 결합하여 합성하거나 근사할 수 있다. 이를 수행하는 한 가지 방법은 유니터리 변환을 인코딩하는 행렬을 사용 가능한 기본 게이트의 텐서곱(즉, 직렬 및 병렬 회로)의 곱으로 인수분해하는 것이다. 군 U(2<sup>q</sup>)는 q 큐비트에서 작동하는 게이트의 대칭군이다. 인수분해는 기본 게이트의 생성 집합에서 U(2q)의 경로를 찾는 연산 문제이다. 솔로바이-키타예프 정리는 충분한 기본 게이트 집합이 주어지면 모든 게이트에 대한 효율적인 근사치가 존재함을 보여준다. 많은 큐비트를 가진 일반적인 경우에 회로 합성에 대한 이러한 직접적인 접근 방식은 다루기 어렵다. 이는 양자 함수를 기본 양자 게이트로 무작위적으로 인수분해할 수 있는 크기에 한계를 둔다. 일반적으로 양자 프로그램은 일반적인 고전 프로그래밍과 유사하게 비교적 작고 간단한 양자 함수를 사용하여 구축된다.

게이트의 유니터리 행렬적 특성 때문에 모든 함수는 가역적이어야 하고 항상 입력에서 출력으로의 전단사 매핑이어야 한다. 항상 함수 F^{-1}가 존재하여 를 만족해야 한다. 역함수가 아닌 함수는 입력 또는 출력, 또는 둘 다에 보조 큐비트를 추가하여 역함수로 만들 수 있다. 함수가 완료된 후 보조 큐비트는 재계산되거나 그대로 남겨둘 수 있다. 계산에 계속 사용되는 큐비트와 얽혀 있을 수 있기 때문에, 재계산되지 않은 보조 큐비트의 양자 상태를 측정하거나 다른 방식으로 붕괴시키는 것(예: 값 재초기화 또는 자발적인 양자 결어긋남에 의해)은 오류를 초래할 수 있다.

논리적으로 비가역적인 연산, 예를 들어 두 개의 n큐비트 레지스터 a와 b의 2^n 모듈러 덧셈, 은 출력에 정보를 추가하여 논리적으로 가역적으로 만들 수 있다. 그렇게 하면 입력이 출력에서 계산될 수 있다(즉, 함수 가 존재한다). 우리 예시에서, 이는 입력 레지스터 중 하나를 출력으로 전달함으로써 이루어질 수 있다. . 그러면 출력은 입력을 계산하는 데 사용될 수 있으며(즉, 출력 a+b와 가 주어지면 입력을 쉽게 찾을 수 있다; a는 주어지고 ), 함수는 전단사로 만들어진다.

모든 불 논리 대수 표현식은 파울리-X, CNOT 및 토폴리 게이트의 조합을 사용하여 유니터리 변환(양자 논리 게이트)으로 인코딩될 수 있다. 이 게이트들은 불 논리 영역에서 기능적으로 완전하다.

Q#, QCL, Qiskit 및 기타 양자 프로그래밍 언어의 라이브러리에는 많은 유니터리 변환이 있다. 문헌에서도 나타난다.

예를 들어, \mathrm{inc}(|x\rangle) = |x + 1 \pmod{2^{x_\text{length}}}\rangle는 x_\text{length}가 양자 레지스터 를 구성하는 큐비트의 수이며, QCL에서 다음과 같이 구현된다.


```verilog
cond qufunct inc(qureg x) { // 레지스터 증가
  int i;
  for i = #x-1 to 0 step -1 {
    CNot(x[i], x[0::i]);     // 제어-NOT을 적용
  }                          // MSB에서 LSB로
}
```


[upright=1.6|섬네일|right|=4</math>}}일 때 생성된 회로. 기호 <math>\oplus</math>, <math>\land</math>, <math>\neg</math>는 각각 [배타적 논리합|XOR, AND, NOT을 나타내며, 계산 기저 상태에 적용될 때 0개 이상의 제어 큐비트를 가진 파울리-X의 불 표현에서 유래한다.]]

QCL에서 감소는 증가를 "취소"함으로써 이루어진다. 접두사 `!`는 대신 함수의 유니터리 역함수를 실행하는 데 사용된다. `!inc(x)`는 `inc(x)`의 역함수이며 대신 연산 }\rangle}}를 수행한다. `cond` 키워드는 함수가 조건적일 수 있음을 의미한다.

이 문서에서 사용된 계산 모델(양자 회로 모델)에서 고전 컴퓨터는 양자 컴퓨터를 위한 게이트 구성을 생성하며, 양자 컴퓨터는 고전 컴퓨터로부터 어떤 기본 게이트를 어떤 큐비트에 적용할지에 대한 지시를 받는 코프로세서처럼 작동한다. 양자 레지스터의 측정은 고전 컴퓨터가 계산에 사용할 수 있는 이진 값을 산출한다. 양자 알고리즘은 종종 고전적 부분과 양자적 부분을 모두 포함한다. 측정되지 않은 I/O(큐비트의 양자 상태를 붕괴시키지 않고 원격 컴퓨터로 전송)는 양자 컴퓨터 네트워크를 생성하는 데 사용될 수 있다. 얽힘 교환은 직접 연결되지 않은 양자 컴퓨터와 함께 분산 알고리즘을 구현하는 데 사용될 수 있다. 몇 가지 양자 논리 게이트만 사용해야 하는 분산 알고리즘의 예로는 초고밀도 부호화, 양자 비잔틴 합의 및 BB84 키 교환 프로토콜이 있다.

## 같이 보기

* 단열 양자 계산
* BQP
* 세포 자동자
* 클라우드 기반 양자 컴퓨팅
* 반사실적 확정성
* 반사실적 양자 계산
* 란다우어의 원리
* 논리 연산
* 원웨이 양자 컴퓨터
* 양자 알고리즘
* 양자 세포 자동자
* 양자 채널
* 양자 유한 자동자
* 양자 논리
* 양자 메모리
* 양자 네트워크
* 양자 제노 효과
* 가역 컴퓨팅
* 유니터리 변환 (양자역학)

## 내용주

## 각주


### 자료
* 
* 
* 

분류:양자정보과학
분류:오스트레일리아의 발명품
분류:논리 게이트