표면 부호(Surface Code)의 구조와 오류 정정 원리
표면 부호는 2차원 격자 위에 물리적 큐비트를 배치하고 인접한 큐비트 간의 안정자(stabilizer) 측정을 통해 양자 오류를 감지·정정하는 위상학적 양자 오류 정정 부호다. 낮은 오류 임계값(~1%)과 국소적 연산만으로 구현 가능하다는 장점 덕분에 현재 가장 유력한 내결함성 양자컴퓨팅 후보로 꼽힌다.
개념 소개
양자계산에서 오류 정정은 피할 수 없는 과제다. 고전 비트와 달리 큐비트는 측정만으로도 상태가 무너지기 때문에, 단순 복사 전략이 통하지 않는다. 이를 해결하기 위해 등장한 것이 양자 오류 정정 부호(Quantum Error-Correcting Code, QECC) 이며, 그중 표면 부호(Surface Code)는 실험적 구현 가능성이 가장 높은 방식으로 주목받고 있다.
표면 부호의 핵심 아이디어는 위상학적 보호(topological protection) 다. 정보를 단일 큐비트에 저장하는 대신, 2차원 격자 전체에 걸쳐 비국소적으로 분산시킴으로써 국소적 오류 하나가 논리적 정보를 훼손하지 못하도록 한다.
핵심 원리
격자 구조
표면 부호는 격자(코드 거리 )로 구성된다. 격자 위의 큐비트는 두 종류로 나뉜다.
- 데이터 큐비트(data qubit): 격자 꼭짓점(vertex)에 위치하며 실제 양자 정보를 담는다.
- 보조 큐비트(ancilla qubit): 면(plaquette) 중심 또는 꼭짓점 중심에 위치하며 안정자 측정에 사용된다.
즉, 코드 거리 의 표면 부호는 수천 개의 물리 큐비트로 단 1개의 논리 큐비트를 보호한다.
안정자(Stabilizer)
표면 부호는 안정자 형식론(stabilizer formalism) 을 기반으로 한다. 두 종류의 안정자가 정의된다.
X-안정자(꼭짓점 연산자): $$ A_v = \prod_{e \in \partial v} X_e $$
Z-안정자(면 연산자): $$ B_p = \prod_{e \in \partial p} Z_e $$
오류가 없는 논리 상태 는 모든 안정자의 고유 상태다.
오류 증후군(Error Syndrome)
큐비트에 비트 반전() 오류가 발생하면 인접한 Z-안정자의 측정값이 로 바뀐다. 위상 반전() 오류는 인접한 X-안정자를 침범한다. 이 측정 결과 패턴을 증후군(syndrome) 이라 하며, 오류의 위치를 역추적하는 데 사용된다.
[Z₁][d][Z₂]
d d
[Z₃][d][Z₄]
각 [Z]는 면 안정자, d는 데이터 큐비트를 나타낸다. 오류는 증후군 쌍을 잇는 최소 가중치 완전 매칭(Minimum Weight Perfect Matching, MWPM) 알고리즘으로 정정된다.
논리 연산자
코드 공간 내에서 논리 큐비트에 작용하는 연산자는 격자를 가로지르는 비수축적 경로(non-contractible path) 로 정의된다.
- : 격자 왼쪽 경계에서 오른쪽 경계까지 X 연산자를 잇는 체인
- : 격자 위쪽 경계에서 아래쪽 경계까지 Z 연산자를 잇는 체인
이 반교환 관계가 논리 큐비트의 연산 구조를 보장한다.
오류 임계값
표면 부호의 물리 오류율 임계값은 약 다. 물리 큐비트의 오류율이 이 임계값 이하이면, 코드 거리 를 늘릴수록 논리 오류율이 지수적으로 감소한다.
예시·응용
Python으로 작은 표면 부호 시뮬레이션 (개념 스케치)
import numpy as np
d = 3 # 코드 거리
n_data = d**2 # 데이터 큐비트 수 (단순화 모델)
# 각 큐비트 상태: 0=정상, 1=X오류, 2=Z오류
state = np.zeros(n_data, dtype=int)
# 임의 오류 주입 (오류율 0.5%)
rng = np.random.default_rng(42)
errors = rng.random(n_data) < 0.005
state[errors] = 1 # X 오류
# 증후군 계산 (Z 안정자 예시, 2×2 면)
def z_syndrome(state, d):
syndromes = []
for row in range(d - 1):
for col in range(d - 1):
# 면의 네 꼭짓점 큐비트 인덱스
idx = [row*d+col, row*d+col+1,
(row+1)*d+col, (row+1)*d+col+1]
# X 오류 개수의 홀짝성
parity = sum(state[i] == 1 for i in idx) % 2
syndromes.append(parity)
return syndromes
print("Z 안정자 증후군:", z_syndrome(state, d))
실제 구현 현황
Google은 2023년 표면 부호를 사용해 코드 거리를 에서 로 늘렸을 때 논리 오류율이 감소함을 실험으로 확인했다. IBM 역시 플래그 큐비트(flag qubit) 기법을 결합한 표면 부호 변형을 적극 연구 중이다. 현재는 수백~수천 개의 물리 큐비트로 단일 내결함성 논리 큐비트를 구현하는 단계에 있다.
정리
표면 부호는 2차원 격자 위에서 X·Z 안정자 측정을 반복함으로써 오류 증후군을 추출하고, MWPM 알고리즘으로 오류를 정정하는 구조다. 코드 거리 가 클수록 더 많은 오류를 감내할 수 있으며, 약 1%의 높은 오류 임계값과 국소적 2큐비트 게이트만으로 구현 가능하다는 특성이 실용적 내결함성 양자컴퓨팅의 핵심 후보로 만들어 준다.
연습문제
Q1.코드 거리 $d=5$인 표면 부호에서 데이터 큐비트의 수와 보조 큐비트의 수를 각각 구하라.
힌트 보기
데이터 큐비트는 격자 꼭짓점에, 보조 큐비트는 면·꼭짓점 중심에 대응된다. 전체 물리 큐비트 수 공식 $2d^2-1$을 참고하라.
해설 보기
데이터 큐비트 수는 $d^2 = 25$개, 보조 큐비트 수는 $d^2-1 = 24$개이며 합산 $2d^2-1=49$개다. Z-안정자와 X-안정자가 각 12개씩 (경계 처리에 따라 미세 조정 가능) 존재한다.
Q2.표면 부호에서 X 오류 하나가 발생했을 때 어떤 종류의 안정자 측정값이 $-1$로 바뀌는지 설명하고, 그 이유를 안정자 연산자의 반교환 관계로 서술하라.
해설 보기
X 오류가 발생한 데이터 큐비트에 인접한 Z-안정자($B_p = \prod Z_e$)의 측정값이 $-1$로 바뀐다. 이는 $\{X, Z\} = 0$, 즉 $XZ = -ZX$의 반교환 관계 때문이다. 해당 데이터 큐비트를 포함하는 면 연산자 $B_p$는 X 오류 연산자와 반교환하므로, 오류 후 상태에 $B_p$를 작용하면 고유값이 $+1$에서 $-1$로 반전된다.
Q3.논리 오류율 공식 $p_L \propto (p/p_{th})^{\lfloor(d+1)/2\rfloor}$에 따르면, 코드 거리를 $d=3$에서 $d=5$로 늘릴 때 물리 오류율이 $p=0.1\%$이고 임계값 $p_{th}=1\%$인 경우 논리 오류율의 지수 감소 배수는 얼마인가?
힌트 보기
$d=3$일 때 지수는 $\lfloor 4/2 \rfloor = 2$, $d=5$일 때는 $\lfloor 6/2 \rfloor = 3$이다.
해설 보기
$d=3$: $p_L \propto (0.001/0.01)^2 = 0.1^2 = 0.01$. $d=5$: $p_L \propto (0.001/0.01)^3 = 0.1^3 = 0.001$. 따라서 코드 거리를 $d=3$에서 $d=5$로 늘리면 논리 오류율이 추가로 10배 감소한다. 이는 표면 부호의 지수적 억제 특성을 잘 보여 준다.