표면 부호(Surface Code)의 구조와 오류 정정 원리
표면 부호는 2차원 격자 위에 물리 큐비트를 배열하고, 인접 큐비트 간의 안정자(stabilizer) 측정을 통해 양자 오류를 검출·정정하는 위상학적 오류 정정 부호다. 낮은 물리적 오류율 임계값(~1%)과 국소 연산만으로 구현 가능한 특성 덕분에 현재 가장 유망한 내결함성 양자컴퓨팅 아키텍처로 꼽힌다.
개념 소개
양자 정보는 환경과의 상호작용(디코히런스)과 불완전한 게이트 연산으로 인해 지속적으로 손상된다. 고전 컴퓨터는 비트를 단순 복제하여 오류를 복구하지만, 양자역학의 복제 불가 정리(no-cloning theorem)는 큐비트의 직접 복사를 금지한다. 이를 우회하기 위해 고안된 것이 **양자 오류 정정 부호(quantum error-correcting code)**이며, 표면 부호(surface code)는 그 중 실용성이 가장 높은 방식이다.
표면 부호는 1997년 Kitaev의 토릭 부호(toric code)에서 출발하여, 경계 조건을 변형한 평면 격자 형태로 발전하였다. 핵심 아이디어는 다수의 물리 큐비트로 하나의 논리 큐비트를 인코딩하고, 큐비트 간 상관관계를 지속적으로 측정하여 오류 징후(syndrome)를 추적하는 것이다.
핵심 원리
격자 구조
거리(distance) 의 표면 부호는 격자 위에 데이터 큐비트(data qubit)를 배치하고, 그 사이사이에 보조 큐비트(ancilla qubit)를 놓아 안정자를 측정한다. 총 물리 큐비트 수는 대략 개이며, 이로써 하나의 논리 큐비트를 표현한다.
격자의 각 면(face)과 꼭짓점(vertex)에는 두 종류의 **안정자(stabilizer)**가 정의된다.
- : 꼭짓점 주변 4개 데이터 큐비트에 연산자를 적용하는 X-안정자 (star operator)
- : 면 경계 4개 데이터 큐비트에 연산자를 적용하는 Z-안정자 (plaquette operator)
모든 와 는 서로 교환(commute)하며, 코드 공간(code space)은 이들의 공통 고유 공간으로 정의된다.
오류 검출: 신드롬 측정
데이터 큐비트에 비트 반전 오류()가 발생하면 인접한 측정값이 로 뒤집힌다. 위상 반전 오류()는 인접한 를 로 만든다. 이처럼 측정 결과의 패턴을 **오류 신드롬(error syndrome)**이라 하며, 데이터 큐비트를 직접 관측하지 않고도 오류 위치를 추정할 수 있다.
오류 체인(error chain)이 격자를 가로지르는 길이가 미만이면 신드롬으로부터 정확히 복구할 수 있다. 거리 가 클수록 정정 가능한 오류 수가 증가하고 논리 오류율은 지수적으로 감소한다.
여기서 는 물리 오류율, 는 임계 오류율이다.
논리 연산자
논리 큐비트의 와 는 격자의 한쪽 경계에서 반대쪽 경계까지 이어지는 Pauli 연산자 체인으로 정의된다.
- : 왼쪽 경계 → 오른쪽 경계를 잇는 체인
- : 위쪽 경계 → 아래쪽 경계를 잇는 체인
이 두 체인은 정확히 한 큐비트에서 교차하므로 가 성립하여 논리 큐비트의 반교환 관계를 만족한다.
디코더
신드롬으로부터 실제 오류 위치를 추론하는 과정을 **디코딩(decoding)**이라 한다. 대표적인 알고리즘은 **최소 가중치 완전 매칭(Minimum Weight Perfect Matching, MWPM)**으로, 신드롬 결함 쌍 사이의 최단 경로를 찾아 오류를 추정한다.
import networkx as nx
def mwpm_decode(syndrome_graph):
"""
syndrome_graph: 결함 꼭짓점을 노드로,
Manhattan 거리를 가중치로 갖는 그래프
"""
# 최소 가중치 완전 매칭
matching = nx.min_weight_matching(syndrome_graph, weight="weight")
corrections = []
for u, v in matching:
# 매칭된 두 결함 사이의 최단 경로를 정정 연산으로 적용
path = nx.shortest_path(syndrome_graph, u, v, weight="weight")
corrections.append(path)
return corrections
예시·응용
**거리-3 표면 부호 (d=3)**는 총 17개의 물리 큐비트(9개 데이터 + 8개 보조)로 구성되며, 임의의 단일 큐비트 오류 1개를 완전히 정정할 수 있다. Google의 Sycamore 프로세서와 IBM의 초전도 큐비트 플랫폼에서 이 구조의 실험적 구현이 보고되었다.
**격자 수술(lattice surgery)**은 표면 부호 패치들을 일시적으로 합치거나 분리하여 논리 게이트를 수행하는 기법으로, CNOT 등의 2큐비트 논리 연산을 내결함성 방식으로 구현한다.
**매직 상태 증류(magic state distillation)**와 결합하면 범용 논리 게이트 집합(Clifford + T)을 완성할 수 있으며, 이것이 실용적 양자컴퓨터 구현의 핵심 경로다.
정리
표면 부호는 2차원 국소 연결성, 높은 오류 임계값, 확장 가능한 구조를 갖춰 현재 기술 수준에서 가장 현실적인 내결함성 아키텍처다. 거리 를 늘릴수록 논리 오류율이 지수적으로 감소하지만, 요구되는 물리 큐비트 수도 으로 증가하기 때문에 물리 큐비트 품질 향상과 디코더 속도 개선이 병행되어야 한다.
연습문제
Q1.거리 $d=5$인 표면 부호에서 물리 큐비트는 최소 몇 개 필요한가? 또한 이 부호가 정정할 수 있는 최대 오류 개수는?
힌트 보기
물리 큐비트 수 공식 $2d^2 - 1$과, 정정 가능한 오류 수 $t = \lfloor(d-1)/2\rfloor$를 적용한다.
해설 보기
물리 큐비트 수는 $2 \times 25 - 1 = 49$개이다. 정정 가능한 최대 오류 개수는 $\lfloor(5-1)/2\rfloor = 2$개이다. 즉 임의의 2큐비트 오류까지 완전히 정정할 수 있다.
Q2.X-안정자 $A_v$와 Z-안정자 $B_f$가 항상 교환(commute)함을 보여라.
힌트 보기
두 연산자가 공유하는 큐비트의 개수를 세어 Pauli 반교환 관계를 적용한다.
해설 보기
$A_v$와 $B_f$가 공유하는 큐비트는 격자 구조상 0개 또는 2개이다. Pauli 연산자 $X$와 $Z$는 같은 큐비트에서 반교환하므로($XZ = -ZX$), 공유 큐비트가 2개이면 부호가 두 번 반전되어 $(-1)^2 = 1$, 즉 교환한다. 공유 큐비트가 0개이면 자명하게 교환한다. 따라서 $[A_v, B_f] = 0$이 항상 성립한다.
Q3.논리 오류율 공식 $p_L \propto (p/p_{\text{th}})^{\lfloor d/2 \rfloor + 1}$에서, 물리 오류율 $p = 0.1\%$이고 $p_{\text{th}} = 1\%$일 때, 거리를 $d=3$에서 $d=5$로 늘리면 논리 오류율은 몇 배 감소하는가?
해설 보기
$d=3$일 때 지수는 $\lfloor 3/2 \rfloor + 1 = 2$이므로 $p_L \propto (0.1)^2 = 0.01$. $d=5$일 때 지수는 $\lfloor 5/2 \rfloor + 1 = 3$이므로 $p_L \propto (0.1)^3 = 0.001$. 따라서 논리 오류율은 약 **10배** 감소한다. 이처럼 거리를 2 늘릴 때마다 $p/p_{\text{th}}$ 배씩 추가 억제된다.