다음을 통해 공유


다중 비트 관련 작업

이 문서에서는 단일 큐비트 상태에서 다중 큐비트 상태를 빌드하는 데 사용되는 규칙을 검토하고, 유니버설 다중 큐비트 양자 컴퓨터를 형성하기 위해 게이트 세트에 포함해야 하는 게이트 작업을 설명합니다. 이러한 도구는 코드에서 일반적으로 사용되는 게이트 집합을 Q# 이해하는 데 필요합니다. 또한 얽힘 또는 간섭과 같은 양자 효과가 기존 컴퓨팅보다 양자 컴퓨팅을 더 강력하게 렌더링하는 이유에 대한 직관을 얻는 것도 중요합니다.

단일 큐비트 및 다중 큐비트 게이트

양자 컴퓨팅의 진정한 힘은 큐비트 수를 늘리면 분명해집니다. 단일 큐비트는 지정된 시간에 둘 이상의 상태에 있을 수 있는 기능과 같은 몇 가지 직관적인 기능을 가지고 있습니다. 그러나 양자 컴퓨터에 있는 모든 것이 단일 큐비트 게이트라면 계산기와 확실히 클래식 슈퍼컴퓨터가 계산 능력을 저하시킬 것입니다.

양자 상태 벡터의 벡터 공간 차원이 큐비트 수에 따라 기하급수적으로 증가하기 때문에 양자 컴퓨팅 성능이 부분적으로 발생합니다. 즉, 단일 큐비트를 간단하게 모델링할 수 있지만 50큐비트 양자 계산을 시뮬레이션하면 기존 슈퍼컴퓨터의 한계를 뛰어넘을 수 있습니다. 계산 크기를 한 큐비트 만 더 늘리면 상태를 저장하는 데 필요한 메모리가 두 배로 늘어나고 계산 시간이 약 두 배가 됩니다 . 이렇게 계산 성능이 빠르게 두 배가 되기 때문에 오늘, 내일, 그 이후에도 비교적 적은 수의 큐비트를 포함하는 양자 컴퓨터가 몇 가지 계산 작업에서 가장 강력한 슈퍼컴퓨터를 훨씬 뛰어넘을 수 있습니다.

2큐비트 상태

두 개의 개별 큐비트가 있는 경우, 하나는 상태에 있고 다른 하나는 상태에 $\psi=\begin{bmatrix}\\\alpha\beta\\\end{bmatrix}$\gamma$\phi=\begin{bmatrix}\delta\end{bmatrix}$ 있는 경우, 해당 2큐비트 상태는 다음과 같이 정의된 벡터의 텐서 제품(또는 Kronecker 제품)에 의해 제공됩니다.

$$\psi\otimes\phi=\begin{bmatrix}\alpha\\\beta\end{bmatrix}\otimes\begin{bmatrix}\gamma\\\delta\end{bmatrix}=\begin{bmatrix}\alpha\begin{bmatrix}\gamma\\\delta\end{bmatrix}\\\beta\begin{bmatrix}\gamma\\\delta\end{bmatrix}\end{bmatrix}=\begin{bmatrix}\alpha\gamma\\\alpha\delta\\\beta\gamma\\\beta\delta\end{bmatrix}. $$

따라서 두 개의 단일 큐비트 상태 $\psi$ 와 $\phi$각 차원 2가 지정된 경우 해당 2 큐비트 상태는\phi$ $\psi\otimes4차원입니다. 벡터

$$\begin{bmatrix}\alpha_{{00}\alpha\\_{\\\alpha{01}__{{10}\\\alpha{{11}\end{bmatrix}$$

는 두 큐비트의 양자 상태를 나타냅니다.

$$|\alpha_{00}|^2+|\alpha_{01}|^2+|\alpha_{{10}|^2+|\alpha_{{11}|^2=1.$$

일반적으로, $n$개 큐비트의 양자 상태는 이 구성을 사용하는 $2 \cdot 2 \cdot 2 \cdots= 2^n$ 차원의 단위 벡터 $v_1 \otimes v_2 \otimes\cdots\otimes v_n$으로 표현됨을 알 수 있습니다. 단일 큐비트와 마찬가지로 여러 큐비트의 양자 상태 벡터는 시스템의 동작을 설명하는 데 필요한 모든 정보를 보유합니다. 벡터 및 텐서 제품에 대한 자세한 내용은 Quantum Computing의 벡터 및 매트릭스를 참조하세요.

2큐비트 상태의 계산 기준은 1큐비트 기준 상태의 텐서 곱에 의해 형성됩니다. 예를 들어 다음을 수행할 수 있습니다.

$$\begin{\begin{align}00 \equiv\begin{bmatrix}1 \\ 0\begin{bmatrix}\end{bmatrix}\otimes 1 \\ 0 \end{bmatrix}&=\begin{bmatrix}1 \\ 0 0\\ 0\end{bmatrix}\\,\qquad 01 1 \equiv\\\begin{bmatrix}0\begin{bmatrix}\end{bmatrix}\otimes 0 \\ 1 \\ \end{bmatrix}=\begin{bmatrix}0\\ 0 0\end{bmatrix}\\,\\ 10 0 \\\begin{bmatrix}\equiv1 1 \end{bmatrix}\otimes\begin{bmatrix}\\ 0&\end{bmatrix} amp;=\begin{bmatrix}0 0 \\ 1 0, 11 \equiv\begin{bmatrix}0 \\ 1\begin{bmatrix}\end{bmatrix}\otimes 0 \\ 1 \end{bmatrix}\begin{bmatrix}=0 0 \\ 0\\\\ 1 .\end{bmatrix}\qquad \end{bmatrix}\\\\ \end{align} $$

항상 두 개의 단일 큐비트 상태의 텐서 곱을 사용하여 2큐비트 상태를 형성할 수 있지만, 모든 2큐비트 양자 상태는 두 개의 단일 큐비트 상태의 텐서 곱으로 작성될 수 없습니다. 예를 들어, $\psi=\begin{bmatrix}\alpha\\\beta\end{bmatrix}$ 및 $\phi=\begin{bmatrix}\gamma\\\delta\end{bmatrix}$ 상태가 없으므로 해당 텐서 곱은 다음 상태가 됩니다.

$$\psi\otimes\phi=\begin{bmatrix} 1/\sqrt{{2}\\ 0 \\ 0 \\ 1/\sqrt{{2}\end{bmatrix}.$$

단일 큐비트 상태의 텐서 곱으로 작성할 수 없는 2 큐비트 상태를 "얽힌 상태"라고 합니다. 두 개 큐비트가 얽혔다라고 합니다. 느슨하게 말하자면, 양자 상태는 단일 큐비트 상태의 텐서 곱으로 생각할 수 없기 때문에 상태가 보유하는 정보는 큐비트 중 하나에 개별적으로 국한되지 않습니다. 대신 정보는 두 상태 간의 상관 관계에 로컬이 아닌 상태로 저장됩니다. 이러한 비지방성 정보는 기존 컴퓨팅에 비해 양자 컴퓨팅의 주요 특징 중 하나이며 양자 오류 수정을 비롯한 여러 양자 프로토콜에 필수적입니다.

2큐비트 상태 측정

2큐비트 상태를 측정하는 것은 단일 큐비트 측정과 매우 유사합니다. 다음 상태를 측정하면

$$\begin{bmatrix}\alpha_{{00}\alpha\\_{\\\alpha{01}__{{10}\\\alpha{{11}\end{bmatrix}$$

$00$(확률 $|\alpha_{{00}|^2$), $01$(확률 $|\alpha_{01}|^2$), $10$(확률 $|\alpha_{{10}|^2$) 및 $11$(확률 $|\alpha_{11}|^2$)이 생성됩니다. 변수 $\alpha_{00}, \alpha_{{01}, \alpha_{{10},$ 및 $\alpha_{11}$은 이 연결을 분명하게 만들기 위해 의도적으로 지정되었습니다. 측정 후 결과가 00$이$면 2큐비트 시스템의 양자 상태가 축소되어 현재 상태입니다.

$$ 00 \equiv\begin{bmatrix} 1 \\ 0 \\ 0 \\ 0 \end{bmatrix}. $$

2큐비트 양자 상태의 큐비트 하나만 측정할 수도 있습니다. 2큐비트 상태의 큐비트 하나만 측정하는 경우 측정의 영향은 두 큐비트를 측정하는 것과 미묘하게 다릅니다. 이는 전체 상태가 계산 기준 상태로 축소되지 않고 하나의 하위 시스템에만 축소되기 때문입니다. 즉, 2큐비트 상태의 큐비트 하나를 측정하면 관련 하위 시스템만 계산 기준 상태로 축소됩니다.

이를 확인하려면 처음에 따옴표로 설정된 두 큐비트에 Hadamard 변환 $H$ 를 적용하여 형성되는 다음 상태의 첫 번째 큐비트를 측정하는 것이 &좋습니다. 0" 상태:

$$H^{\otimes 2\left}( \begin{bmatrix}1 \\ 0\begin{bmatrix}\end{bmatrix}\otimes 1 \\ 0\right\end{bmatrix} ){1}{2}\begin{bmatrix}\frac{= 1 & 1 & 1 & 1 &\\ 1 amp; -1 && -1 \\ & &-1 amp; -1 & -1 \\ amp&; -1 amp; -1 amp; -&1 amp; \end{bmatrix}\begin{bmatrix}-1 &\\ 0 0 0\\ 0{1}{2}\begin{bmatrix}=\\\frac{\end{bmatrix} 1 1\\\\ 1 }=\begin{cases}\text{\mapsto\end{bmatrix}\\ 결과 0 & \frac{{1}{\sqrt{2}}\begin{bmatrix}1\\ 1\\ 0\\ 0 \end{bmatrix}\\\text{결과 }=1 & \frac{{1}{\sqrt{{2}}\begin{bmatrix}0 0\\\\ 1\\ 1 \end{bmatrix}\\\end{cases}. $$ 두 결과 모두 발생할 확률이 50%입니다. 0$이 첫 번째 큐비트에서 1$로 $교환되는 경우 $측정 전 양자 상태가 변경되지 않는다는 사실에서 직감할 수 있습니다.

첫 번째 또는 두 번째 큐비트를 측정하는 수학적 규칙은 간단합니다. e_k k^{\rmth}$ 계산 기준 벡터가 되고 $S$는 문제의 큐비트가 $해당 값$$$의 값 1$을 차지하도록 모든 $e_k$ 집합이 되도록 합니다.$ $ 예를 들어 첫 번째 큐비트를 $측정하려는 경우 S$는 e_1 10$과 $e_3\equiv\equiv 11$로 구성$됩니다. 마찬가지로, 두 번째 큐비트 $S$에 관심이 있는 경우 e_2 01$ 및 $e_3 \equiv\equiv 11$로 구성$됩니다. 그런 다음 선택한 큐비트를 1$로 측정할 확률은 상태 벡터에 대한 것입니다$.$\psi$

$$ P(\text{outcome}=1)=\sum_{e_k \text{ in the set } S}\psi^\dagger e_k e_k^\dagger\psi. $$

참고 항목

이 문서에서는 little-endian 형식을 사용하여 계산 기준으로 레이블을 지정합니다. little endian 형식에서 가장 중요한 비트가 먼저 표시됩니다. 예를 들어, little-endian 형식의 숫자 4는 비트 001의 문자열로 표현됩니다.

각 큐비트 측정은 0 또는 1만 생성할 $수 있으므로 0$을 측정할 $확률은 단순히 $1-P(\text{결과}=1)$입니다.$$$ 따라서 1$을 측정$할 확률에 대한 수식만 필요합니다.

이러한 측정값이 상태에 대해 갖는 동작은 수학적으로 다음과 같이 표현될 수 있습니다.

$$\psi\mapsto\frac{\sum_{e_k \text{ in the set } S} e_k e_k^\dagger\psi}{\sqrt{P(\text{outcome}=1)}}. $$

신중한 독자는 분모가 0이면 어떤 일이 일어나는지 걱정할 수 있습니다. 이러한 상태는 정의되지 않았지만 확률이 0이므로 이러한 사태에 대해 걱정할 필요가 없습니다.

위에서 지정한 균일한 상태 벡터로 사용하고 첫 번째 큐비트를 측정하는 데 관심이 있는 경우 $\psi$

$$ P(\text{첫 번째 큐비트 측정}=1) = (\psi^\dagger e_1)(e_1^\dagger\psi)+(\psi^\dagger e_3)(e_3^\dagger\psi)=|e_1^\dagger\psi|^2+|e_3^\dagger\psi|^2. $$

이는 결과 $10$ 과 $11$을 측정하기 위해 예상되는 두 확률의 합계에 불과합니다. 이 예제에서는 로 평가됩니다.

$$\frac{{1}{4}\left|\begin{bmatrix}0& 0& 1& 0\end{bmatrix}\begin{bmatrix}1\\ 1\\ 1\\ 1\end{bmatrix}\right|^2+\frac{1}{{4}\left|\begin{bmatrix}0& 0& 0& 1\end{bmatrix}\begin{bmatrix}1\\ 1\\ 1\\ 1\end{bmatrix}\right|^2=\frac{{1}{{2}. $$

이는 우리의 직관과 완벽하게 일치합니다. 마찬가지로, 첫 번째 큐비트 이후의 상태는 1$로 $측정될 수 있습니다.

$$\frac{\frac{e_1}{2}+\frac{e_3}{2}}{\sqrt{\frac{1}{2}}}=\frac{1}{\sqrt{2}}\begin{bmatrix} 0\\ 0\\ 1\\ 1\end{bmatrix}$$

우리의 직관에 따라 다시.

2큐비트 작업

단일 큐비트 경우와 마찬가지로 모든 단일 변환은 큐비트에서 유효한 작업입니다. 일반적으로 $n$개 큐비트의 유니터리 변환은 $2^n \times 2^n$ 크기($2^n$ 크기의 벡터에서 작동하도록)의 $U$ 행렬이며, 이 경우 $U^{-1}= U^\dagger$입니다. 예를 들어, CNOT(제어된 NOT) 게이트는 일반적으로 사용되는 2 큐비트 게이트이며 다음 유니터리 행렬로 표현됩니다.

$$\operatorname{CNOT}=\begin{bmatrix} 1\ 0\ 0\ 0 \\ 0\ 1\ 0\ 0 \\ 0\ 0\ 0\ 1 \\ 0\ 0\ 1\ 0 \end{bmatrix}$$

두 큐비트에 모두 단일 큐비트 게이트를 적용하여 2 큐비트 게이트를 형성할 수도 있습니다. 예를 들어 게이트를 적용하는 경우

$$\begin{bmatrix} a\ b\\ c\ d \end{bmatrix}$$

$$\begin{bmatrix} e\ f\\ g\ h \end{bmatrix}$$

각각 첫 번째 및 두 번째 큐비트에 대해 텐서 제품 $$\begin{bmatrix} 에서 제공하는 2큐비트 단위를 적용하는 것과 같습니다. a\ b\\ c\ d \end{bmatrix}\otimes\begin{bmatrix} e\ f\\ g\ h \end{bmatrix}=\begin{bmatrix} ae\ af\ be\ bf \\ ag\ ah\ bg\ bh \\ ce\ cf\ de\ df \\ cg\ ch\ dg\ dh .\end{bmatrix}$$

따라서 알려진 단일 큐비트 게이트의 텐서 곱을 가져와서 2큐비트 게이트를 형성할 수 있습니다. 2큐비트 게이트의 몇 가지 예로는 H \otimes H$, $X \otimes\mathbf{1}$및 X \otimes Z$가 $있습니다$.

두 개의 단일 큐비트 게이트는 텐서 곱을 사용하여 2 큐비트 게이트를 정의하지만 반대의 경우는 그렇지 않습니다. 모든 2큐비트 게이트를 단일 큐비트 게이트의 텐서 곱으로 쓸 수 있는 것은 아닙니다. 이러한 게이트를 얽는 게이트라고합니다. 얽힘 게이트의 한 가지 예는 CNOT 게이트입니다.

제어된 NOT 게이트에 관련된 직관은 임의 게이트로 일반화될 수 있습니다. 일반적으로 제어 게이트는 특정 큐비트가 1$이 아닌 한 ID 역할을 하는 게이트입니다$. 이 경우 x로 레이블$$이 지정된 큐비트에서 제어되는 제어된 단위를 _x(U)$로 $\Lambda나타냅니다. 예를 들면 $\Lambda_0(U) e_{{1}\otimes{\psi}=e_{1}\otimes U{\psi}$ 및 $\Lambda_0(U) e_{{0}\otimes{\psi}=e_{{0}\otimes{\psi}$입니다. 여기서 $e_0$ 및 $e_1$은 $0$ 및 $1$ 값에 해당하는 단일 큐비트의 계산을 위한 기저 벡터입니다. 예를 들어 다음 제어-$Z$게이트를 고려한 다음 다음으로 표현할 수 있습니다.

$$\Lambda_0(Z)=\begin{bmatrix}1& 0& 0& 0\\0& 1& 0& 0\\0& 0& 1& 0\\0& 0& 0&-1\end{bmatrix}=(\mathbf\mathbf{1}\otimes{ H)\operatorname{CNOT}(\mathbf{1}\otimesH). $$

제어된 유닛을 효율적인 방식으로 구축하는 것은 중요한 과제입니다. 이를 구현하는 가장 간단한 방법은 제어된 버전의 기본 게이트 데이터베이스를 구성하고 원래 단위 작업의 모든 기본 게이트를 제어된 게이트로 교체해야 합니다. 이것은 종종 매우 낭비하고 영리한 통찰력은 종종 동일한 영향을 달성하기 위해 제어 된 버전으로 몇 게이트를 대체하는 데 사용할 수 있습니다. 이러한 이유로 프레임워크는 순진한 제어 방법을 수행하거나 최적화된 손 튜닝된 버전이 알려진 경우 사용자가 단위의 제어된 버전을 정의할 수 있도록 하는 기능을 제공합니다.

클래식 정보를 사용하여 게이트를 제어할 수도 있습니다. 예를 들어, 고전적으로 제어되는 게이트가 아닌 게이트는 일반 게이트일 뿐이지만, 클래식 비트가 $양자 비트가 아닌 1$ 인 경우에만 적용됩니다. 이런 의미에서, 기존 방식으로 제어된 게이트는 게이트가 코드의 한 분기에서만 적용되는 양자 코드의 if 문으로 간주할 수 있습니다.

단일 큐비트 사례처럼 2 큐비트 게이트 세트는 이 세트에서 임의 정밀도까지 게이트의 곱으로 $4\times 4$ 유니터리 행렬의 근사치를 계산할 수 있는 경우 유니버설 게이트입니다. 유니버설 게이트 집합의 한 예로 Hadamard 게이트, T 게이트 및 CNOT 게이트가 있습니다. 이러한 게이트의 곱을 사용하여 두 큐비트의 모든 단위 행렬을 근사화할 수 있습니다.

다큐비트 시스템

2 큐비트 사례에서 살펴본 정확히 동일한 패턴에 따라 더 작은 시스템에서 다중 큐비트 양자 상태를 빌드합니다. 해당 상태는 더 작은 상태의 텐서 곱을 형성하여 빌드됩니다. 예를 들어 양자 컴퓨터에서 비트 문자열 $1011001$ 인코딩하는 것이 좋습니다. 다음으로 인코딩할 수 있습니다.

$$ 1011001 \equiv\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 \end{bmatrix}. $$

양자 게이트는 정확히 동일한 방식으로 작동합니다. 예를 들어 첫 번째 큐비트에 X$ 게이트를 적용$한 다음 두 번째 큐비트와 세 번째 큐비트 사이에 CNOT를 수행하려는 경우 이 변환을 다음과 같이 표현할 수 있습니다.

\begin{\begin{align}&앰프; (X \otimes\operatorname{CNOT}_{{12}\otimes\mathbf{1}\otimes \mathbf{\mathbf{1}\otimes \mathbf \mathbf \mathbf{\otimes{\mathbf{1}\mathbf{1}) \begin{bmatrix} 0 \\ 1 1 \\ \end{bmatrix}\otimes\begin{bmatrix} 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \\ 1 0 \\ \end{bmatrix}\otimes\begin{bmatrix} 1 1 \\ \end{bmatrix}\begin{bmatrix}\otimes0 1 \\ 0 \end{bmatrix}\otimes\begin{bmatrix} 0 \end{bmatrix}\otimes\\\begin{bmatrix} 1 \end{bmatrix}\\&\qquad\qquad\equiv 0011001. \end{align}

많은 큐비트 시스템에서는 양자 컴퓨터의 임시 메모리 역할을 하는 큐비트를 할당하고 할당 취소해야 하는 경우가 많습니다. 이러한 큐비트는 보조라고합니다. 기본적으로 큐비트 상태가 할당 시 e_0$ 초기화된다고 가정할 $수 있습니다. 또한 할당 취소 전에 다시 e_0$ 반환된다고 가정할 $수 있습니다. 이 가정은 보조 큐비트가 할당 취소될 때 다른 큐비트 레지스터와 얽히게 되면 할당 취소 프로세스가 보조 큐비트를 손상하기 때문에 중요합니다. 이러한 이유로 이러한 큐비트는 해제되기 전에 초기 상태로 되돌아간다고 항상 가정합니다.

마지막으로, 두 큐비트 양자 컴퓨터에 대한 범용 양자 컴퓨팅을 달성하기 위해 게이트 집합에 새 게이트를 추가해야 했지만 다중 큐비트 사례에는 새로운 게이트를 도입할 필요가 없습니다. 일반적인 유니터리 변환은 일련의 큐비트 회전 두 개로 분리될 수 있기 때문에 게이트 $H$, $T$ 및 CNOT는 많은 큐비트에서 유니버설 게이트 세트를 형성합니다. 그런 다음, 2큐비트 사례에 대해 개발된 이론을 활용하고 큐비트가 많을 때 여기에서 다시 사용할 수 있습니다.

참고 항목

지금까지 사용된 선형 대수 표기법은 확실히 다중 큐비트 상태를 설명하는 데 사용될 수 있지만 상태의 크기를 늘리면 점점 더 번거로워집니다. 예를 들어 길이 7비트 문자열의 결과 열 벡터는 128$차원이므로 $이전에 설명한 표기법을 사용하여 표현합니다. 대신, 양자 상태의 표현을 간소화하는 심볼 약어인 Dirac 표기법이 사용됩니다. 자세한 내용은 Dirac 표기법을 참조 하세요.