양자 회로 다이어그램 규칙

경우에 따라 양자 알고리즘은 동일한 서면 행렬 표현보다 회로 다이어그램에서 이해하기 쉽습니다. 이 문서에서는 양자 회로 다이어그램 및 해당 규칙을 읽는 방법을 설명합니다.

자세한 내용은 양자 회로 다이어그램을 시각화하는 방법을 참조하세요.

양자 회로 다이어그램 읽기

양자 회로에서 시간은 왼쪽에서 오른쪽으로 흐릅니다. 양자 게이트는 큐비트에 처음 적용되는 게이트가 가장 왼쪽에 가도록 시간 순서대로 정렬됩니다.

다음 양자 회로 다이어그램을 예로 들어 보세요.

두 개의 레지스터, 1개의 하다마드 게이트, 1개의 제어된 게이트 및 1개의 측정값이 있는 양자 회로의 다이어그램.

  1. 큐비트 레지스터: 큐비트 레지스터는 수평선으로 표시되고 각 줄은 큐비트를 나타냅니다. 위쪽 줄은 0으로 레이블이 지정된 큐비트 레지스터이고, 두 번째 줄은 큐비트 레지스터 레이블이 1인 큐비트 레지스터입니다.
  2. 양자 게이트: 양자 연산은 양자 게이트로 표시됩니다. 양자 게이트라는 용어는 전통적 논리 게이트에 비유한 것입니다. 하나 이상의 큐비트 레지스터에서 작동하는 게이트는 상자로 표시됩니다. 이 예제에서 기호는 Hadamard 연산을 나타냅니다.
  3. 제어 게이트: 제어 게이트는 둘 이상의 큐비트에서 작동합니다. 이 예제에서 기호는 CNOT 게이트를 나타냅니다. 검은색 원은 컨트롤 큐비트를 나타내고 원 내의 십자가는 target 큐비트를 나타냅니다.
  4. 측정 작업: 측정기 기호는 측정 작업을 나타냅니다. 측정 작업은 큐비트 레지스터를 입력으로 사용하고 클래식 정보를 출력합니다.

양자 게이트 적용

시간이 왼쪽에서 오른쪽으로 흐르기 때문에 가장 왼쪽 게이트가 먼저 적용됩니다. 예를 들어 다음 양자 회로의 동작은 유니터리 행렬 $CBA$입니다.

양자 회로에서 왼쪽에서 오른쪽으로 적용되는 양자 게이트의 다이어그램.

참고

행렬 곱셈은 반대 규칙을 따릅니다. 가장 오른쪽의 행렬이 먼저 적용됩니다. 그러나 양자 회로 다이어그램에서는 가장 왼쪽의 게이트가 먼저 적용됩니다. 이러한 차이는 때때로 혼동을 일으킬 수 있으므로 선형 대수 표기법과 양자 회로 다이어그램 간의 커다란 차이점을 확인하는 것이 중요합니다.

양자 회로의 입력 및 출력

양자 회로 다이어그램에서 양자 게이트로 들어오는 전선은 양자 게이트에 입력되는 큐비트를 나타내고 양자 게이트를 종료하는 전선은 양자 게이트에서 출력되는 큐비트를 나타냅니다.

양자 게이트의 입력 수는 양자 게이트의 출력 수와 같습니다. 양자 연산은 유니터리이므로 되돌릴 수 있기 때문입니다. 양자 게이트에 입력보다 더 많은 출력이 있는 경우 되돌릴 수 없으므로 유니터리가 아니므로 모순입니다.

이와 같은 이유로 회로 다이어그램에 그려진 모든 상자는 입력되는 와이어 수가 출력되는 와이어 수와 정확히 일치해야 합니다.

다중 큐비트 작업

다중 큐비트 회로 다이어그램은 단일 비트 회로 다이어그램과 유사한 규칙을 따릅니다. 예를 들어 2큐비트 단위 연산 $B$를 (H S\otimes X)$로 정의할 $수 있으므로 동등한 양자 회로는 다음과 같습니다.

2큐비트 단위 연산의 회로 다이어그램.

또한 $B$는 회로를 사용하는 컨텍스트에 따라 두 개의 1큐비트 레지스터보다는 단일 2큐비트 레지스터에 대한 작업으로 볼 수 있습니다.

아마도 이러한 추상 회로 다이어그램의 가장 유용한 속성은 기본 게이트 수준까지 컴파일하지 않고도 복잡한 양자 알고리즘을 높은 수준에서 설명할 수 있다는 점일 것입니다. 즉, 알고리즘 내의 각 서브루틴이 작동하는 방식에 대한 모든 세부 정보를 이해하지 않고도 대규모 양자 알고리즘의 데이터 흐름에 대한 직관을 얻을 수 있습니다.

제어된 게이트

양자 제어 게이트는 제어 큐비트가 특정 상태에 있는 경우 큐비트에 단일 큐비트 게이트 target 를 적용하는 2큐비트 게이트입니다.

예를 들어 단일 큐비트의 값이 G 연산의 $$ 애플리케이션을 제어하는 양자 제어 게이트$\Lambda(G)$를 고려합니다. 제어 게이트 $\Lambda(G)$ 는 제품 상태 입력의 다음 예제를 확인하여 이해할 수 있습니다.

$\Lambda(G) (\alpha\ket{{0} + \beta\ket{1}) \ket{\psi}=\alpha\ket{{0}\ket{\psi} + \beta\ket{{1} G\ket{\psi}$

즉, 제어된 게이트는 제어 큐비트의 값이 1인 경우에만 $\psi$$$를 포함하는 레지스터에 $G$를 적용합니다. 일반적으로 이러한 제어된 작업은 회로 다이어그램에서 다음 기호로 설명됩니다.

제어된 게이트의 회로 다이어그램.

여기서 검은색 원은 게이트가 제어되는 양자 비트를 나타내며, 세로 와이어는 제어 큐비트의 값이 $1$인 경우 적용되는 유니터리를 나타냅니다.

G=X$ 및 $G=Z$인 특수한 경우 $다음 표기법은 제어된 게이트 버전을 설명하는 데 사용됩니다(제어된 X 게이트는 CNOT 게이트임).

제어된 게이트의 특수 사례에 대한 회로 다이어그램.

Q#은 제어된 연산 버전을 자동으로 생성하는 메서드를 제공하므로 프로그래머가 해당 연산을 직접 코딩할 필요가 없습니다. 관련 예시는 아래와 같습니다.

operation PrepareSuperposition(qubit : Qubit) : Unit
is Ctl { // Auto-generate the controlled specialization of the operation
    H(qubit);
}

고전적으로 제어되는 게이트

측정 후에 양자 게이트를 적용할 수도 있습니다. 여기서 측정 결과는 클래식 제어 비트 역할을 합니다.

다음 기호는 클래식 제어 게이트를 나타냅니다. 여기서 $G$ 는 값 $1$이 되는 클래식 컨트롤 비트에 조건부로 적용됩니다.

제어된 연산을 나타내는 회로 다이어그램.

측정 연산자

측정 작업은 큐비트 레지스터를 사용하고, 측정하고, 결과를 클래식 정보로 출력합니다.

측정 연산은 미터 기호로 표시되고 항상 큐비트 레지스터를 입력(실선으로 표시)으로 취하며, 클래식 정보(이중선으로 표시)를 출력합니다. 특히 측정 작업의 기호는 다음과 같습니다.

측정 작업을 나타내는 기호입니다.

에서 Q#연산자는 Measure 측정 작업을 구현합니다.

예: 유니터리 변환

유니터리 변환 $\text{ CNOT}_{01}(H\otimes 1)$을 생각해 보겠습니다. 이 게이트 시퀀스는 최대로 얽힌 2큐비트 상태를 만들기 때문에 양자 컴퓨팅에 근본적으로 중요한 사항입니다.

$\mathrm{CNOT}_{01}(H\otimes 1)\left=\ket{00}\frac{1}{\sqrt{2}}({00}\ket{ + ), \ket{11}\right$

복잡도가 이와 같거나 그 이상인 연산은 양자 알고리즘과 양자 오류 수정에서 아주 흔합니다.

최대로 얽힌 양자 상태를 준비하기 위한 회로 다이어그램은 다음과 같습니다.

최대 얽힌 2큐비트 상태에 대한 회로 다이어그램

Hadamard 게이트 뒤의 기호는 CNOT 게이트를 나타내며, 검은색 원은 컨트롤 큐비트를 나타내고 원 안의 십자가는 큐비트를 나타냅니다 target . 이 양자 회로는 두 개의 큐비트(또는 한 개의 큐비트로 구성된 두 개의 레지스터)에서 작동하는 것으로 표시됩니다.

예: 텔레포트 회로 다이어그램

양자 텔레포트는 회로 구성 요소를 보여 주는 최고의 양자 알고리즘 중 하나입니다.

양자 텔레포트는 한 큐비트에서 다른 큐비트로 양자 상태를 전송할 수 있도록 하는 프로토콜로, 발신자와 수신자 간의 공유 얽힌 상태와 양자 간의 클래식 통신을 지원합니다.

학습을 위해 발신자를 Alice라고 하고, 수신기를 Bob이라고 하며, 텔레포트할 큐비트를 메시지 큐비트라고 합니다. Alice와 Bob은 각각 하나의 큐비트를 보유하고 Alice에는 메시지 큐비트인 추가 큐비트가 있습니다.

다음 회로 다이어그램은 텔레포트 프로토콜을 보여 줍니다.

텔레포트 프로토콜의 양자 회로 다이어그램.

텔레포트 프로토콜의 단계를 세분화해 보겠습니다.

  1. 레이블이 0인 큐비트 레지스터는 메시지 큐비트이고, 1로 레이블이 지정된 큐비트 레지스터는 Alice의 큐비트이고, 2로 레이블이 지정된 큐비트 레지스터는 Bob의 큐비트입니다. 메시지 큐비트는 알 수 없는 상태이고 Alice와 Bob의 큐비트는 상태에 있습니다 $\ket{0}$ .
  2. Hadamard 게이트 $H$ 는 Alice의 큐비트에 적용됩니다. 큐비트가 상태에 있으므로 $\ket{0}$ 결과 상태는 ({0}\ket{ + \ket{1})$입니다$\frac{1}{\sqrt{{2}}.
  3. CNOT 게이트는 Alice와 Bob의 큐비트에 적용됩니다. Alice의 큐비트는 컨트롤 큐비트이고 Bob의 큐비트는 큐비트입니다 target . 결과 상태는 (\ket{00} + \ket{{11})$입니다$\frac{{1}{\sqrt{2}}. 이제 Alice와 Bob은 얽힌 상태를 공유합니다.
  4. CNOT 게이트는 메시지 큐비트와 Alice의 큐비트에 적용됩니다. Alice의 큐비트도 Bob의 큐비트와 얽히기 때문에 결과 상태는 3큐비트 얽힌 상태입니다.
  5. Hadamard 게이트 $H$ 가 메시지 큐비트에 적용됩니다.
  6. Alice는 두 큐비트를 측정하고 측정 결과를 Bob에게 전달합니다. 이는 회로에 반영되지 않습니다. 측정 결과는 00, 01, 10 또는 1 값을 사용할 수 있는 두 개의 클래식 비트입니다.
  7. 결과 비트 값 $1$에 따라 두 개의 클래식 제어 Pauli 게이트가 Bob의 큐비트에 적용됩니다. 결과 상태는 원래 메시지 큐비트 상태입니다.

다음 단계