단일 및 다중 큐비트 Pauli 측정 연산
작업 Q#하면서 Pauli 측정이 일반적인 측정 형식임을 알 수 있습니다. Pauli 측정은 다른 베이스의 측정값과 서로 다른 큐비트 간의 패리티를 포함하도록 계산 기준 측정을 일반화합니다. 이러한 경우 X, Y, Z 또는 $Z\otimes Z\otimes$\otimes, X X, X Y$ 등과 같은 $연산자인 Pauli 연산자 측정을 논의하는 것이 일반적입니다.
Pauli 연산자를 기준으로 측정을 논의하는 것은 양자 오류 수정 하위 필드에서 일반적입니다.
Q# 가이드는 비슷한 규칙을 따릅니다. 이 문서에서는 측정의 대체 보기에 대해 설명합니다.
팁
Q#에서 다중 큐비트 Pauli 연산자는 일반적으로 Pauli[]
형식의 배열로 표시됩니다.
예를 들어 $X \otimes Z \otimes Y$를 나타내려면 [PauliX, PauliZ, PauliY]
배열을 사용할 수 있습니다.
Pauli 측정을 고려하는 방식을 자세히 살펴보기 전에 양자 컴퓨터 내에서 단일 큐비트 측정이 양자 상태에 어떤 영향을 주는지 알아보면 도움이 됩니다. $n$ 큐비트 양자 상태를 가정하고 한 개의 큐비트를 측정하면 상태가 포함될 수 있는 $2^n$ 가능성 중 절반이 바로 배제됩니다. 즉, 측정은 양자 상태를 두 개의 반 공간 중 하나로 프로젝션합니다. 이러한 직관을 반영하기 위해 측정에 대해 생각하는 방식을 일반화할 수 있습니다.
이러한 하위 공간을 간결하게 식별하려면 설명하기 위한 언어가 필요합니다. 두 개의 하위 공간을 설명하는 한 가지 방법은 $\pm 1$이 되는 규칙에서 사용하는, 두 개의 고유한 고유 값만 있는 행렬을 통해 지정하는 것입니다. 이렇게 하위 공간을 설명하는 간단한 예제는 $Z$를 살펴보세요.
$$\begin{align} Z &=\begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}. \end{align} $$
Pauli-$Z$ 행렬의 대각선 요소를 읽으면 $Z$에는 두 개의 고유 벡터 $\ket{0}$ 및 $\ket{1}$이 있고 해당 고유 값은 $\pm 1$임을 알 수 있습니다.
따라서 큐비트의 측정값이 (상태에 $\ket{0}$해당) 발생하는 Zero
경우 큐비트의 상태는 Z$ 연산자의 +1$ 고유 상태$인 $것으로 알려져 있습니다.
마찬가지로 결과가 있으면 One
큐비트의 $상태가 -1$ 고유 상태인 $것으로 알려져 있습니다$.
이 프로세스는 Pauli 측정 언어로 "Pauli $Z$ 측정"이라고 하며 계산 기저 측정을 수행하는 것과 완전히 동일합니다.
$Z$의 유니터리 변환인 $2\times 2$ 행렬도 이 조건을 충족합니다. 즉, $A=U^\dagger Z U$ 행렬도 사용할 수 있습니다. 여기서 $U$는 다른 모든 유니터리 행렬로, $\pm 1$ 고유 벡터에서 측정의 두 가지 결과를 정의하는 행렬을 제공합니다. Pauli 측정의 표기법은 $X,Y,Z$ 측정을 큐비트에서 정보를 얻기 위해 수행하는 것과 동일한 측정으로 식별하여 이 유니터리 등가를 참조합니다. 이러한 측정은 편의를 위해 아래에 제공됩니다.
Pauli 측정 | 유니터리 변환 |
---|---|
$Z$ | $\boldone$ |
$X$ | $H$ |
$예$ | $HS^{\dagger}$ |
즉, 이 언어를 사용하면 "$Y$" 측정은 $HS^\dagger$를 적용한 다음, 계산 기저를 측정하는 것과 동일합니다. 여기서 S
는 "위상 게이트"라고도 하는 기본 양자 연산이며 유니터리 행렬로 시뮬레이션할 수 있습니다.
$$\begin{align} S =\begin{bmatrix} 1 & 0 \\ 0 & i \end{bmatrix}. \end{align} $$
또한 $HS^\dagger$를 양자 상태 벡터에 적용한 다음, $Z$를 측정하는 것과 동일하며 다음 연산은 Measure([PauliY], [q])
와 같습니다.
operation MeasureY(qubit : Qubit) : Result {
mutable result = Zero;
within {
Adjoint S(q);
H(q);
} apply {
set result = M(q);
}
return result;
}
올바른 상태는 계산 기저로 다시 변환하여 양자 상태 벡터에 $SH$를 적용하는 방식으로 확인할 수 있습니다. 위의 코드 조각에서 계산 기저로 다시 변환은 within … apply
블록을 사용하여 자동으로 처리됩니다.
Q#에서는 상태와의 상호 작용을 통해 추출되는 기존 정보인 결과는 Result
값 $j \in \{\texttt{Zero}, \texttt{One}\}$으로 지정되며, 결과가 측정된 Pauli 연산자의 $(-1)^j$ 고유 공간에 있는지 여부를 나타냅니다.
다중 큐비트 측정
다중 큐비트 Pauli 연산자의 측정은 다음과 같이 유사하게 정의됩니다.
$$ Z\otimes Z =\begin{bmatrix}1 &0 &0&0\\ 0&-1&0&0\\ 0&0&-1&0\\ 0&0&0&1\end{bmatrix}. $$
따라서 두 Pauli-$Z$ 연산자의 텐서곱은 o$+1$ 및 $-1$ 고유 값으로 구성된 두 공간으로 이루어진 행렬을 만듭니다. 단일 큐비트와 마찬가지로 둘 다 반 공간을 구성합니다. 즉, 액세스 가능한 벡터 공간의 절반은 $+1$ 고유 공간에 속하고 나머지 절반은 $-1$ 고유 공간에 속합니다. 일반적으로 Pauli-$Z$ 연산자의 텐서곱과 항등식도 이 규칙을 따른다는 텐서곱 정의를 통해 쉽게 확인할 수 있습니다. 예를 들면 다음과 같습니다.
$$\begin{\begin{align} Z \otimes\boldone=\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & -1 & 0 \\ 0 & 0 & 0 & -1 \end{bmatrix}. \end{align} $$
앞에서 설명한 대로 이러한 행렬의 모든 유니터리 변환도 $\pm 1$ 고유 값으로 레이블이 지정된 두 개의 반 공간을 설명합니다. 예를 들어 $Z=HXH$인 항등식의 $X\otimes X = H\otimes H(Z\otimes Z)H\otimes H$입니다. 1 큐비트 사례와 마찬가지로 모든 2 큐비트 Pauli 측정은 $4\times 4$ 유니터리 행렬 $U$에 대해 $U^\dagger (Z\otimes\id) U$로 쓸 수 있습니다. 다음 표에는 변환이 열거되어 있습니다.
참고
아래 표에서 $\operatorname{SWAP}$은 내장 연산 SWAP
을 시뮬레이션하는 데 사용되는 행렬$$\begin{align}\operatorname{SWAP}&=\left(\begin{matrix} 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{matrix}\right)\end{align}$$을 나타내는 데 사용됩니다.
Pauli 측정 | 유니터리 변환 |
---|---|
$Z\otimes\boldone$ | $\boldone\otimes \boldone$ |
$X\otimes\boldone$ | $H\otimes\boldone$ |
$Y\otimes\boldone$ | $HS^\dagger\otimes\boldone$ |
$\boldone\otimes Z$ | $\operatorname{SWAP}$ |
$\boldone\otimes X$ | $(H\otimes\boldone)\operatorname{SWAP}$ |
$\boldone\otimes Y$ | $(HS^\dagger\otimes\boldone)\operatorname{SWAP}$ |
$Z\otimes Z$ | $\operatorname{CNOT}_{10}$ |
$X\otimes Z$ | $\operatorname{CNOT}_{10}(H\otimes\boldone)$ |
$Y\otimes Z$ | $\operatorname{CNOT}_{10}(HS^\dagger\otimes\boldone)$ |
$Z\otimes X$ | $\operatorname{CNOT}_{10}(\boldone\otimes H)$ |
$X\otimes X$ | $\operatorname{CNOT}_{10}(H\otimes H)$ |
$Y\otimes X$ | $\operatorname{CNOT}_{10}(HS^\dagger\otimes H)$ |
$Z\otimes Y$ | $\operatorname{CNOT}_{10}(\boldone\otimes HS^\dagger)$ |
$X\otimes Y$ | $\operatorname{CNOT}_{10}(H\otimes HS^\dagger)$ |
$Y\otimes Y$ | $\operatorname{CNOT}_{10}(HS^\dagger\otimes HS^\dagger)$ |
여기에서 CNOT
연산은 다음과 같은 이유로 표시됩니다.
$\boldone$ 행렬을 포함하지 않는 각 Pauli 측정은 위의 추론에 따라 $Z\otimes Z$의 유니터리까지 동일합니다.
$Z\otimes Z$의 고유 값만 각 계산 기저 벡터를 구성하는 큐비트의 패리티에 종속되며, 제어된 NOT 연산은 이 패리티를 계산하고 첫 번째 비트에 저장하는 데 사용됩니다.
첫 번째 비트를 측정한 다음에는 Pauli 연산자 측정과 동일한 결과 반 공간의 항등식을 복구할 수 있습니다.
추가 참고 사항: $Z\otimes Z$ 측정이 순차적으로 $Z\otimes\mathbb{{1}$을 측정한 다음, $\mathbb{1}\otimes Z$를 측정하는 것과 동일하다고 가정할 수 있지만 이 가정은 거짓이 됩니다. 그 이유는 $Z\otimes Z$ 측정이 양자 상태를 이러한 연산자의 $+1$ 또는 $-1$ 고유 상태로 프로젝션하기 때문입니다. $Z\otimes\mathbb{1}$와 $\mathbb{1}\otimes Z$를 차례로 측정하면 양자 상태 벡터를 먼저 $Z\otimes\mathbb{{1}$ 공간의 처음 반에 프로젝션한 다음, $\mathbb{{1}\otimes Z$의 반에 프로젝션합니다. 4개의 계산 기저 벡터가 있으므로 두 측정을 수행하면 상태가 1/4 공간으로 줄어들기 때문에 단일 계산 기저 벡터로 축소됩니다.
큐비트 간의 상관 관계
$X\otimes X$ 또는 $Z\otimes Z$와 같은 Pauli 행렬의 텐서곱 측정을 확인하는 또 다른 방법은 이러한 측정을 통해 두 큐비트 간 상관관계에 저장된 정보를 확인하는 것입니다. $X\otimes\id$을 측정하면 첫 번째 큐비트에 로컬로 저장된 정보를 확인할 수 있습니다. 양자 컴퓨팅에서는 두 측정 형식이 동일하게 중요하지만 전자는 양자 컴퓨팅의 강력한 기능을 보여 줍니다. 양자 컴퓨팅에서는 확인하려는 정보가 단일 큐비트에 저장되지 않고 동시에 모든 큐비트에 로컬이 아닌 방식으로 저장되므로 공동 측정(예: $Z\otimes Z$)을 통해 확인하는 경우에만 이 정보가 매니페스트가 됨을 보여 줍니다.
예를 들어 오류 수정에서 보호하려는 상태에 대해 아무것도 배우지 않고 발생한 오류를 알아보려는 경우가 많습니다. 비트 플립 코드 샘플은 $Z \otimes Z \otimes\id$ 및 $\id\otimes Z \otimes Z$ 같은 측정값을 사용하여 무엇을 할 수 있는지 보여 줍니다.
$X\otimes Y \otimes Z \otimes\boldone$ 같은 임의 Pauli 연산자도 측정할 수 있습니다. Pauli 연산자의 이러한 모든 텐서곱에는 두 개의 고유 값 $\pm 1$만 있으며 두 고유 공간은 전체 벡터 공간의 반 공간을 구성합니다. 따라서 위에 명시된 요구 사항과 일치합니다.
Q#에서 측정이 $(-1)^j$ 기호의 고유 공간에 결과를 생성하는 경우 이러한 측정은 $j$를 반환합니다.
이러한 연산자 측정에서 연산을 $Z$ 및 $\id$의 텐서곱으로 표현하는 데 필요한 $U$ 게이트 대각화를 설명하려면 제어된 NOT 게이트 및 기저 변환의 긴 체인이 필요하기 때문에 Q#의 기본 제공 기능으로 Pauli 측정을 포함하면 유용합니다.
이렇게 미리 정의된 측정 중 하나를 수행하도록 지정할 수 있으면 계산 기저 측정에서 필요한 정보를 제공하도록 기저를 변환하는 방법을 걱정하지 않아도 됩니다.
Q#에서는 필요한 모든 기저 변환을 자동으로 처리합니다.
자세한 내용은 Measure
및 MeasurePaulis
작업을 참조하세요.
비 복제 정리
양자 정보는 매우 효과적입니다. 이를 통해 가장 잘 알려진 클래식 알고리즘보다 기하급수적으로 더 빠르게 인자 숫자와 같은 놀라운 작업을 수행하거나, 정확하게 시뮬레이션하기 위해 기하급수적 비용이 필요한 상관 관계가 있는 전자 시스템을 효율적으로 시뮬레이션할 수 있습니다. 그러나 양자 컴퓨팅의 기능에는 제한이 있습니다. 이러한 제한은 ‘비 복제 정리’를 통해 지정됩니다.
비 복제 정리라는 이름은 적절하게 지정되었으며, 양자 컴퓨터에 의한 일반 양자 상태의 복제를 허용하지 않습니다. 정리의 증명은 매우 간단합니다. 복제되지 않는 정리에 대한 전체 증명은 이 문서에 대해 너무 기술적이지만 추가 보조 큐비트가 없는 경우의 증거는 범위 내에 있습니다.
이러한 양자 컴퓨터에서 복제 작업은 유니터리 행렬로 설명해야 합니다. 복제할 양자 상태가 손상되기 때문에 양자 측정이 허용되지 않습니다. 복제 연산을 시뮬레이션하기 위해 사용되는 유니터리 행렬은 $\ket{\psi}$ 상태에 대해 $$ U \ket{\psi}\ket{{0}=\ket{\psi}\ket{\psi}$$ 속성이 있어야 합니다. 행렬 곱셈의 선형 속성은 두 번째 양자 상태 $\ket{\phi}$에 대해 다음을 의미합니다.
$$\begin{\begin{align} U \left[ \frac{{1}{\sqrt{{2}}\left(\ket{\phi}+\ket{\psi}\right) \right] \ket{{0}&=\frac{{1}{\sqrt{2}} U\ket{\phi}\ket{0} + \frac{{1}{\sqrt{2}} U\ket{\psi}\ket{0}\\&=\frac{{1}{\sqrt{{2}}\left( \ket{\phi}\ket{\phi} + \ket{\psi}\ket{\psi}\right) \\&\ne\left( \frac{{1}{\sqrt{{2}}\left(\ket{\phi}+\ket{\psi}\right) \right) \otimes\left( \frac{1}{\sqrt{{2}}\left(\ket{\phi}+\ket{\psi}\right) \right). \end{align} $$
이는 비 복제 정리의 배경이 되는 기본 직관을 제공합니다. 즉, 알 수 없는 양자 상태를 복사하는 디바이스는 복사하는 일부 상태에서 오류를 유도해야 합니다. 보조 큐비트의 추가 및 측정을 통해 복제기가 입력 상태에서 선형으로 작동한다는 주요 가정을 위반할 수 있으며, 이러한 상호 작용은 측정 통계를 통해 시스템에 대한 정보를 누출하고 이러한 경우 정확한 복제를 방지하기도 합니다.
양자 상태를 적은 비용으로 복제할 수 있는 경우 양자 상태에서 배울 수 있는 마법과 같은 기능이 제공되기 때문에 비 복제 정리는 양자 컴퓨팅을 정성적으로 이해하는 데 중요합니다. 실제로 하이젠베르크의 뛰어난 불확실성 원칙을 위반할 수 있습니다. 또는 최적의 복제기를 사용하여 복잡한 양자 분포에서 단일 샘플을 가져오고 단 하나의 샘플에서 해당 분포에 대해 알아볼 수 있는 모든 사항을 배울 수 있습니다. 이것은 동전을 뒤집어 무엇이 나왔는지 확인한 다음, 친구에게 결과에 대해 이야기했는데 친구가 "이 동전은 $p=0.512643\ldots$!"의 베르누울리 분포가 분명해라고 답하는 상황과 유사합니다. 이 답은 감각적이지 못합니다. 한 비트 정보(나온 결과)가 상당한 사전 정보 없이 배포를 인코딩하는 데 필요한 수많은 정보를 제공할 수는 없기 때문입니다. 마찬가지로 $p$를 모르면 동전의 앙상블을 준비할 수 없기 때문에 사전 정보가 없으면 양자 상태를 완벽하게 복제할 수 없습니다.
양자 컴퓨팅에서는 정보가 무료가 아닙니다. 측정된 각 큐비트는 단일 정보를 제공하고, 비 복제 정리는 시스템에 대해 얻은 정보와 시스템에서 호출된 방해 요인 간의 기본적인 균형을 방지하기 위해 악용할 수 있는 백도어가 없음을 보여 줍니다.