이제 스태빌라이저 코드를 일반적인 형태로 정의하겠습니다.
또한 상태를 인코딩하는 방법과 이 코드들을 사용하여 오류를 감지하고 수정하는 방법을 포함해 기본적인 성질과 동작 방식도 다룹니다.
스태빌라이저 코드의 정의
n-Qubit 스태빌라이저 코드는 n-Qubit 파울리 연산의 목록 P1,…,Pr로 명세됩니다.
이 연산들은 이 맥락에서 *스태빌라이저 생성원(stabilizer generators)*이라고 불리며, 다음 세 가지 조건을 만족해야 합니다.
-
스태빌라이저 생성원들은 모두 서로 *교환(commute)*합니다.
PjPk=PkPj(for all j,k∈{1,…,r})
-
스태빌라이저 생성원들은 *최소 생성 집합(minimal generating set)*을 이룹니다.
Pk∈/⟨P1,…,Pk−1,Pk+1,…,Pr⟩(for all k∈{1,…,r})
-
모든 스태빌라이저 생성원에 의해 고정되는 양자 상태 벡터가 적어도 하나 존재합니다.
−I⊗n∈/⟨P1,…,Pr⟩
(모든 스태빌라이저 생성원에 의해 고정되는 양자 상태 벡터 ∣ψ⟩가 존재한다는 것, 즉 P1∣ψ⟩=⋯=Pr∣ψ⟩=∣ψ⟩가 −I⊗n∈/⟨P1,…,Pr⟩와 동치라는 사실이 자명하지는 않지만, 실제로 그러하며 그 이유는 이 수업에서 조금 후에 살펴봅니다.)
이러한 목록 P1,…,Pr이 있다고 가정할 때, 이 스태빌라이저 생성원들에 의해 정의되는 *코드 공간(code space)*은 이 r개의 스태빌라이저 생성원 모두에 의해 고정되는 모든 n-Qubit 양자 상태 벡터를 포함하는 부분 공간 C입니다.
C={∣ψ⟩:P1∣ψ⟩=⋯=Pr∣ψ⟩=∣ψ⟩}
이 부분 공간에 속하는 양자 상태 벡터가 바로 양자 상태의 *유효 인코딩(valid encodings)*으로 볼 수 있는 것들입니다.
실제 인코딩 과정은 나중에 다루겠습니다.
마지막으로, 스태빌라이저 생성원 P1,…,Pr에 의해 정의되는 코드의 *스태빌라이저(stabilizer)*는 이 연산들에 의해 생성되는 집합입니다:
⟨P1,…,Pr⟩.
스태빌라이저 코드를 이해하는 자연스러운 방법은 스태빌라이저 생성원들을 관측량(observable)으로 보고, 이 관측량들에 대한 측정 결과를 집합적으로 오류 증후군(error syndrome)으로 해석하는 것입니다.
유효 인코딩은 고유값으로서의 측정 결과가 모두 +1임이 보장되는 n-Qubit 양자 상태 벡터입니다.
적어도 하나의 −1 측정 결과가 포함된 다른 증후군은 오류가 감지되었음을 나타냅니다.
몇 가지 예를 곧 살펴보겠지만, 먼저 스태빌라이저 생성원의 세 조건에 대해 간략히 언급하겠습니다.
첫 번째 조건은 스태빌라이저 생성원을 관측량으로 해석하는 관점에서 자연스러운 것으로, 측정을 수행하는 순서가 중요하지 않음을 의미합니다. 관측량들이 교환하므로 측정들도 교환합니다.
이는 스태빌라이저 코드가 작동하는 방식에 중요한 특정 대수적 제약을 자연스럽게 부과합니다.
두 번째 조건은 스태빌라이저 생성원들이 최소 생성 집합을 이루어야 함을 요구합니다. 즉, 그 중 어느 하나를 제거하면 더 작은 스태빌라이저가 됩니다.
엄밀히 말하면 이 조건은 운용적(operational) 의미에서 스태빌라이저 코드가 동작하는 방식에 반드시 필요한 것은 아닙니다. 다음 수업에서 보겠지만, 이 조건을 실제로 만족하지 않는 코드에 대한 스태빌라이저 생성원 집합을 생각하는 것이 의미 있을 때도 있습니다.
그러나 스태빌라이저 코드를 분석하고 그 성질을 설명하기 위해서는 이 조건을 전제합니다.
요약하면, 이 조건은 오류 증후군을 얻기 위해 측정하는 각 관측량이 가능한 오류에 관한 정보를 추가로 제공하며, 다른 스태빌라이저 생성원 측정에서 추론할 수 있는 중복적인 결과를 낳지 않음을 보장합니다.
세 번째 조건은 모든 스태빌라이저 생성원에 의해 고정되는 영이 아닌 벡터가 적어도 하나 있어야 함을 요구하며, 이는 −I⊗n이 스태빌라이저에 포함되지 않는 것과 동치입니다.
이 조건이 필요한 이유는 서로 교환하는 n-Qubit 파울리 연산들의 최소 생성 집합을 선택하더라도, 그 연산 모두에 의해 고정되는 영이 아닌 벡터가 하나도 없는 경우가 실제로 가능하기 때문입니다.
유효 인코딩이 없는 "코드"는 관심 대상이 아니므로, 이 가능성을 정의의 일부로서 이 조건을 요구함으로써 배제합니다.
다음은 작은 n 값에 대한 스태빌라이저 코드의 몇 가지 예시입니다.
n이 훨씬 더 커질 수 있는 예시를 포함한 더 많은 예시는 다음 수업에서 살펴보겠습니다.
3-비트 반복 코드
3-비트 반복 코드는 스태빌라이저 코드의 예시로, 스태빌라이저 생성원은
Z⊗Z⊗I와 I⊗Z⊗Z입니다.
이 두 스태빌라이저 생성원이 요구 조건들을 만족하는지 쉽게 확인할 수 있습니다.
첫째, 두 스태빌라이저 생성원 Z⊗Z⊗I와 I⊗Z⊗Z는 서로 교환합니다.
(Z⊗Z⊗I)(I⊗Z⊗Z)=Z⊗I⊗Z=(I⊗Z⊗Z)(Z⊗Z⊗I)
둘째, 최소 생성 집합을 이룹니다(이 경우 다소 자명합니다).
Z⊗Z⊗I∈/⟨I⊗Z⊗Z⟩I⊗Z⊗Z∈/⟨Z⊗Z⊗I⟩={I⊗I⊗I,I⊗Z⊗Z}={I⊗I⊗I,Z⊗Z⊗I}
셋째, ∣000⟩과 ∣111⟩, 그리고 이 벡터들의 임의의 선형 결합이 Z⊗Z⊗I와 I⊗Z⊗Z 모두에 의해 고정된다는 것을 이미 알고 있습니다.
또한 정의에서 동치 조건을 사용하여 이를 확인할 수도 있습니다.
−I⊗I⊗I∈/⟨Z⊗Z⊗I,I⊗Z⊗Z⟩={I⊗I⊗I,Z⊗Z⊗I,Z⊗I⊗Z,I⊗Z⊗Z}
이러한 조건들은 더 복잡한 스태빌라이저 코드에서는 확인 하기가 훨씬 어려울 수 있습니다.
수정된 3-비트 반복 코드
이전 수업에서 비트-플립 오류 대신 위상-플립(phase-flip) 오류를 보호하도록 3-비트 반복 코드를 수정하는 것이 가능하다는 것을 보았습니다.
스태빌라이저 코드로서 이 새로운 코드는 쉽게 기술할 수 있습니다:
스태빌라이저 생성원은 X⊗X⊗I와 I⊗X⊗X입니다.
이 경우 스태빌라이저 생성원은 Z⊗Z 관측량이 아닌 X⊗X 관측량을 나타내므로, 표준 기저가 아닌 플러스/마이너스 기저에서의 홀짝성 검사(parity check)에 해당합니다.
스태빌라이저 생성원에 대한 세 가지 요구 조건은 일반적인 3-비트 반복 코드와 유사한 방식으로 쉽게 확인됩니다.
9-Qubit Shor 코드
다음은 9-Qubit Shor 코드로, 이것도 스태빌라이저 코드이며 스태빌라이저 생성원으로 표현됩니다.
Z⊗Z⊗I⊗I⊗I⊗I⊗I⊗I⊗II⊗Z⊗Z⊗I⊗I⊗I⊗I⊗I⊗II⊗I⊗I⊗Z⊗Z⊗I⊗I⊗I⊗II⊗I⊗I⊗I⊗Z⊗Z⊗I⊗I⊗II⊗I⊗I⊗I⊗I⊗I⊗Z⊗Z⊗II⊗I⊗I⊗I⊗I⊗I⊗I⊗Z⊗ZX⊗X⊗X⊗X⊗X⊗X⊗I⊗I⊗II⊗I⊗I⊗X⊗X⊗X⊗X⊗X⊗X
이 경우 세 Qubit씩 이루어진 세 블록 각각에 대한 3-비트 반복 코드의 복사본 세 개가 기본적으로 포함되어 있으며,
마지막 두 스태빌라이저 생성원은 이 코드에서 위상 플립을 감지하는 Circuit과 유사한 형태를 취합니다.
마지막 두 스태빌라이저 생성원을 다른 방식으로 생각하면, 위상 플립용 3-비트 반복 코드와 동일한 형태를 가지되 X 대신 X⊗X⊗X로 대체된 것으로 볼 수 있습니다. 이는 X⊗X⊗X가 3-비트 반복 코드를 사용하여 인코딩된 논리적 Qubit에 대한 X 연산에 해당한다는 사실과 일치합니다.
다른 예시로 넘어가기 전에, 스태빌라이저 코드를 스태빌라이저 생성원 목록으로 기술할 때 텐서 곱 기호를 종종 생략한다는 점을 언급해야 합니다. 이는 패턴을 더 쉽게 읽고 파악할 수 있도록 해주기 때문입니다.
예를 들어, 9-Qubit Shor 코드의 위와 동일한 스태빌라이저 생성원은 텐서 곱 기호를 명시적으로 쓰지 않으면 다음과 같이 나타납니다.
ZIIIIIXIZZIIIIXIIZIIIIXIIIZIIIXXIIZZIIXXIIIZIIXXIIIIZIIXIIIIZZIXIIIIIZIX
7-Qubit Steane 코드
다음은 7-Qubit Steane 코드로 알려진 또 다른 스태빌라이저 코드의 예시입니다.
이 코드는 몇 가지 놀라운 특성을 가지고 있으며, 강좌의 남은 수업들에서 주기적으로 다시 다루겠습니다.
ZZZXXXZZIXXIZIZXIXZIIXIIIZZIXXIZIIXIIIZIIX
지금은 이것이 유효한 스태빌라이저 코드임을 간단히 확인해보겠습니다.
처음 세 스태빌라이저 생성원은 Z가 자기 자신과 교환하고 항등 연산은 모든 것과 교환하므로 서로 명백히 교환하며, 마지막 세 스태빌라이저 생성원도 마찬가지입니다.
Z-스태빌라이저 생성원(처음 세 개 중 하나)과 X-스태빌라이저 생성원(마지막 세 개 중 하나)을 취했을 때 두 생성원이 교환함을 확인하는 것이 남아 있으며, 9가지 가능한 쌍을 통해 이를 확인할 수 있습니다.
이 모든 경우에서 X와 Z 파울리 행렬은 항상 같은 위치에서 짝수 번 겹치므로, X⊗X와 Z⊗Z가 교환하는 것처럼 두 생성원은 교환합니다.
이것이 최소 생성 집합이고 비자명한 코드 공간을 정의한다는 사실도 여러분이 직접 생각해볼 주제로 남겨두겠습니다.
7-Qubit Steane 코드는 단일 Qubit을 인코딩하고 하나의 Qubit에 대한 임의의 오류 수정이 가능하다는 점에서 9-Qubit Shor 코드와 유사하지만, 9개가 아닌 7개의 Qubit만 필요합니다.
5-Qubit 코드
하나의 Qubit을 인코딩하고 하나의 Qubit에 대한 임의의 오류를 보호하는 데 필요한 최소 Qubit 수는 7개가 아닙니다. 다음은 단 5개의 Qubit만으로 이를 수행하는 스태빌라이저 코드입니다.
XIXZZXIXZZXIXZZXIXZZ
이 코드는 일반적으로 5-Qubit 코드라고 불립니다.
이것은 임의의 단일 Qubit 오류 수정이 가능한 양자 오류 수정 코드에서 가장 적은 Qubit 수입니다.
1차원 스태빌라이저 코드