주 콘텐츠로 건너뛰기

매핑

Olivia Lanes의 매핑 관련 동영상을 시청하거나, YouTube에서 별도 창으로 열어보세요.

소개

이 강의에서는 양자 프로그램을 정의할 때 첫 번째이자 가장 어려운 단계인 문제를 양자 컴퓨터에서 실행할 수 있도록 매핑하는 과정에 집중합니다. 이 단계는 사용자가 계산 문제에서 출발하여 양자 컴퓨터로 풀 수 있는 형태로 변환하는 방법을 다룹니다.

이 과정의 2강과 3강에서, 매핑 단계가 Qiskit 패턴 프레임워크의 총 네 단계 중 첫 번째임을 언급했습니다. 해당 강의에서 매핑의 목표는 계산 문제를 양자 컴퓨터를 사용해 평가할 수 있는 비용 함수 또는 기댓값으로 변환하거나 다시 쓰는 것임을 기억하실 수 있을 것입니다.

3강에서는 조합 최적화에서 계산적으로 어렵지만 매우 흔한 문제인 Max-Cut을 구체적인 예시로 다루었습니다. 그 예시에서는 초기 그래프 문제를 양자 컴퓨터로 풀 수 있는 형태로 변환하기 위한 여러 단계를 거쳤습니다. 그래프에서 최대 절단 수를 찾는 문제를 비용 함수로 변환하고, 그 비용 함수를 해밀토니안으로 다시 쓴 다음, 기저 상태가 최대 절단에 해당하는 시험 양자 상태를 준비했습니다. 마지막으로, 관심 있는 시험 양자 상태를 나타내는 양자 Circuit을 구성하고, 상태가 시간에 따라 진화할 수 있도록 특정 Gate를 추가했습니다. 이 일련의 단계가 모두 매핑의 일부였습니다. 구체적인 단계는 Max-Cut 문제에 고유한 것이었지만, 동일한 일반적인 절차가 양자 화학 및 양자 시뮬레이션과 같은 많은 다른 응용 분야에도 적용될 수 있습니다.

매핑은 어려울 수 있습니다. 모든 문제에 맞는 단일 전략이 존재하지 않기 때문에 막막하게 느껴질 수 있습니다. 이 강의에서는 매핑에 대한 몇 가지 일반적인 고려 사항을 살펴보고, 대표적인 예시 문제들을 통해 문제를 양자 컴퓨터에 매핑하는 다양한 방법을 살펴봐요.

일반적인 고려 사항

문제를 양자 컴퓨터에 매핑하는 데 사용하는 구체적인 전략은 문제에 따라 다르지만, 일반적으로 몇 가지 주요 사항을 달성합니다.

첫째, 문제를 실현 가능하게 만들기 위해 단순화해야 할 수 있습니다. 이는 양자 분야에만 국한된 것이 아닙니다. 모든 과학 분야에서는 관련 없는 세부 사항을 무시하면서 관심 있는 현상을 연구하기 위해 단순화된 모델을 사용합니다. 물리학에서는 이 원칙을 극단적으로 적용한 유명한 표현이 있습니다: "구형 소를 가정하라(assume a spherical cow)." 시스템을 있는 그대로 정확하게 설명하기는 너무 어렵지만, 그 대신 합리적인 단순화를 통해 여전히 유용한 해법을 얻을 수 있습니다. 양자 컴퓨팅에서 이를 적용하는 방법의 예로는 하드웨어 효율적인 앤사츠(ansatz)를 선택하여 크기나 Circuit 깊이를 제한하거나, 복잡한 시간 진화를 절단하거나, 양자 상태의 최종 에너지에 거의 기여하지 않는 해밀토니안 항을 무시하는 것 등이 있습니다.

둘째, 매핑에는 양자 컴퓨터가 이해할 수 있는 방식으로 문제를 표현하는 과정이 포함됩니다. 이때 다음 세 가지 질문을 던지는 경우가 많습니다:

  1. 모델에서 Qubit이 무엇을 나타낼 것인가?
  2. 문제가 연속적인가? 양자 컴퓨터는 디지털이므로, 문제가 연속적이라면 이를 이산화할 방법을 찾아야 합니다.
  3. 마지막으로, 문제의 위상(topology)이 하드웨어의 위상과 일치하는가? 그렇지 않다면, 작동하도록 만들기 위한 몇 가지 기법을 구현해야 할 수 있습니다.

매핑을 이해하는 데 있어 많은 어려움의 핵심인 첫 번째 질문을 살펴보겠습니다: Qubit은 무엇을 나타낼 수 있을까요?

Qubit은 많은 것을 나타내는 데 사용될 수 있습니다. 가장 첫 번째이자 아마도 가장 단순한 것은 그래프의 노드입니다. 그래프는 다양한 유형의 수학적 문제에서 연결성을 나타내는 데 사용되며, 노드는 네트워크 내의 점이나 개체를 나타내는 기본 요소입니다. 전체 네트워크가 무엇을 나타내느냐에 따라, 그것은 도시, 사람, 또는 격자 내의 강자성체일 수 있습니다.

Qubit은 보존(boson)과 페르미온(fermion)을 나타내는 데도 사용될 수 있습니다. 다만, 단일 Qubit이 보존 하나 또는 페르미온 하나와 정확히 같지는 않다는 점을 경고하고 싶습니다. 이는 강의에서 더 자세히 논의하겠지만, 그보다 조금 더 복잡합니다.

이제 좀 더 복잡한 예시를 살펴보겠습니다. 이러한 모델에서는 단일 Qubit으로 이야기하는 것이 더 이상 의미가 없으며, 대신 물리적인 무언가를 구성하기 위해 Qubit 그룹이 필요합니다. 예를 들어, 헤비 헥사곤(heavy hexagonal) 위상으로 표현된 Qubit 그룹은 아미노산의 기하학적 위치, 즉 폴리머 체인을 나타내는 데 사용될 수 있습니다. 또 다른 예는 고에너지 물리학 모델에서 하드론 산란 시뮬레이션인데, 이는 하드론 파동 패킷의 시간 진화를 시뮬레이션함으로써 수행할 수 있습니다. 이 경우, Qubit 레지스터는 양자 장의 다양한 상태, 즉 그 장의 진공 상태 또는 그 진공 위에 전파되는 파동 패킷을 인코딩하는 데 사용될 수 있습니다.

하지만 이쯤에서 우리 앞에 놓인 과제에 대해 충분히 추상적으로 이야기했습니다. 이제 이 예시들을 자세히 살펴보겠습니다.

매핑 예시

Max-Cut

첫 번째 예시부터 살펴보겠습니다. 가장 직관적인 매핑 문제 중 하나는 앞서 이미 어느 정도 다룬 Max-Cut 예시입니다. 이 문제에서는 하나의 Qubit가 그래프의 노드 하나에 대응되기 때문에 매핑이 비교적 간단했습니다.

다시 떠올려보면, Max-Cut 문제를 매핑하기 위해 QUBO 공식을 사용하여 비용 함수를 해밀토니안으로 표현했습니다. 해밀토니안 비용 함수란 해밀토니안의 바닥 상태에 문제의 최적 해답이 인코딩된 함수입니다. 비용 해밀토니안을 구성하기 위해 Qiskit의 SparsePauliOp 클래스를 사용하여 그래프의 연결성을 지정했고, 양자 연산자로의 매핑 단계가 완료되었습니다. 그리고 양자 Circuit은 단순히 QAOA 앤자츠(ansatz)였습니다. 복습이 필요하다면, 이 모든 내용을 훨씬 더 자세히 다루는 유틸리티 규모 QAOA 레슨을 참고하세요.

그 레슨에서는 100 Qubit 규모의 유틸리티 규모 예시에서도 그래프 연결성이 이미 초전도 하드웨어의 토폴로지와 일치했습니다. 따라서 서로 다른 토폴로지를 어떻게 처리할지 고민할 필요가 없었습니다. 하지만 항상 그런 것은 아닙니다. 지금까지 살펴본 예시보다 더 복잡하거나 연결이 촘촘한 그래프를 다루게 된다면, 하드웨어의 실효 연결성을 수정하기 위해 일련의 SWAP Gate를 구현해야 합니다. 이 부분은 Qiskit patterns의 두 번째 단계인 Transpiler 단계에서 처리되지만, 매핑 단계에서도 염두에 두어야 합니다.

단백질 접힘

다음으로, IBM®과 뉴사우스웨일스 대학교 연구진이 공동으로 작성한 "논문"인 "Resource-efficient quantum algorithm for protein folding"에서 모델링한 예시를 살펴보겠습니다.

생화학적 배경 지식을 간략히 소개하면, 단백질은 긴 아미노산 사슬로 구성된 고분자입니다. 이 사슬은 복잡한 구조로 접혀 매우 다양한 생물학적 기능을 수행합니다. 단백질의 3차원 구조를 밝혀내고 구조와 기능 사이의 관계를 이해하는 것은 오늘날 생화학에서 가장 어려운 문제 중 하나입니다. 단백질은 아미노산 간의 상호작용으로 인해 유용한 구조로 접힙니다. 구조가 비틀리고 접히면서 사슬을 따라 서로 멀리 떨어진 아미노산들이 결국 바로 옆에 위치하게 되어 강하게 상호작용할 수 있습니다.

이를 양자 컴퓨터에서 모델링하려면, 아미노산 간의 모든 상호작용을 기술하는 해밀토니안이 필요합니다. 그런 다음 해밀토니안의 에너지를 최소화하는 상태를 찾아 최종 구조를 예측할 수 있습니다. 여기서는 아미노산 사슬을 양자 컴퓨터에서 어떻게 모델링하고, 상호작용 에너지 계산을 위한 아미노산 간 거리를 어떻게 구하는지에 초점을 맞춥니다. 이를 통해 양자 컴퓨터에서 시뮬레이션하는 데 필요한 해밀토니안의 모든 기여 항을 모을 수 있습니다.

실제 단백질에서 아미노산은 연속적인 위치를 차지할 수 있습니다. 하지만 우리는 격자 모델을 사용하는 단순화를 적용하여, 각 아미노산이 격자 위의 한 점을 차지하도록 제한합니다. 논문의 저자들은 사면체 격자를 사용했습니다. 한 가지 참고할 점은, 여기서는 Max-Cut 문제에서처럼 노드 자체가 아닌 엣지의 방향을 인코딩한다는 것입니다. 각 Qubit는 사면체 격자를 따라 한 칸 이동하는 경로를 나타냅니다. 격자에서의 방향이 서로 다르기 때문에 인접한 사이트는 A 또는 B로 표시되어 있습니다.

단백질 사슬은 이 격자 위에서의 일련의 회전 또는 방향으로 표현됩니다. 아미노산 간의 각 회전은 사면체의 엣지에 해당하는 네 가지 방향 중 하나일 수 있습니다. 이 네 가지 가능한 회전은 네 개의 Qubit를 사용하여 0001, 0010, 0100, 1000 상태로 인코딩됩니다.

사면체 격자 위의 아미노산 사슬

위 그림의 예시를 살펴보겠습니다. 사면체 격자에서 빨간색 원으로 표시된 "B" 라벨의 점에 첫 번째 아미노산을 놓겠습니다. 첫 번째에서 두 번째 아미노산으로의 방향은 임의적인데, 시스템을 항상 회전시켜 해당 엣지가 원하는 방향을 가리키도록 만들 수 있기 때문입니다. 따라서 두 번째 아미노산을 첫 번째 아미노산 아래의 "A" 라벨 점에 놓을 수 있습니다. 잘 보이지 않을 수 있지만, 두 번째에서 세 번째로의 경로도 임의적입니다. 세 가지 선택 모두 약 109.5도의 각도를 이루는 두 엣지를 갖게 됩니다. 두 번째 엣지를 선택하는 것은 단순히 공간에서 단백질의 방향을 결정할 뿐입니다. 따라서 일반성을 잃지 않고 처음 두 회전을 그냥 00010010으로 선택할 수 있습니다.

이러한 단순화를 통해, 아미노산 사슬의 구성은 다음 식으로 표현됩니다:

(0001)(0010)(q9q10q11q12)(q4N3q4N2q4N1q4N)(0001)(0010)(q_9 q_{10} q_{11} q_{12}) \cdots (q_{4N-3} q_{4N-2} q_{4N-1} q_{4N})

지금까지 사면체 엣지를 Qubit에 매핑했고, 양자 Circuit은 앤자츠(ansatz)가 될 것입니다. 이제 바닥 상태가 최적의 접힘 패턴을 나타내도록, 문제의 에너지를 해밀토니안으로 인코딩하는 방법을 고려해야 합니다.

특정 구성에 대해서는 아미노산 간의 상호작용으로 인한 에너지가 존재합니다. 두 아미노산이 가까울수록 이 상호작용은 강해집니다. 물론 사슬의 골격에서 인접한 아미노산들은 항상 서로 상호작용합니다. 하지만 단백질이 비틀리고 접히기 때문에 다른 아미노산 쌍도 상호작용할 수 있습니다. 예를 들어, 10번째와 20번째 아미노산이 단백질이 접힌 후 인접한 사이트에 위치하게 될 수 있습니다. 따라서 구성 Qubit에 인코딩된 정보를 사용하여 아미노산 iijj 사이의 거리 dd를 기술하는 공식이 필요합니다. 이를 통해 분리 거리를 사용하여 얼마나 강하게 상호작용하는지 결정할 수 있습니다.

먼저, 엣지 aa가 아미노산 ii에서의 회전에 사용되는지 여부를 나타내는 함수 fa(i)f_a(i)를 도입하겠습니다. 여기서 aa는 네 가지 가능한 방향 중 하나를 취할 수 있습니다. 위에서 시작한 구성에 기반하여 다음 함수들을 작성할 수 있습니다:

f0(i)=q4i3f1(i)=q4i2f2(i)=q4i1f3(i)=q4i\begin{aligned} f_0(i) &= q_{4i-3} \\ f_1(i) &= q_{4i-2} \\ f_2(i) &= q_{4i-1} \\ f_3(i) &= q_{4i} \end{aligned}

그런 다음, 인덱스 ii부터 jj까지 A와 B 격자에서 aa로 표시된 회전 수의 차이를 Δn\Delta n으로 정의할 수 있습니다:

Δna(i,j)=k=ij(1)kfa(k)\begin{aligned} \Delta n_a(i,j) &= \sum\limits_{k=i}^{j}{(-1)^k f_a(k)} \end{aligned}

왜 이렇게 하는 걸까요? 격자 사이트 A에서 B로의 aa 방향 회전은 격자 사이트 B에서 A로의 aa 방향 회전과 정확히 상쇄됩니다. 따라서 사이트 ii의 아미노산이 사이트 jj의 아미노산으로부터 얼마나 떨어져 있는지 알려면, A 사이트와 B 사이트에서 aa 엣지를 따라 이동한 단계 수의 차이만 구하면 됩니다. A와 B 사이트는 단백질 골격을 따라 필연적으로 교대로 나타나기 때문에, 이것이 (1)k(-1)^k로 포착됩니다. 이 논리는 네 가지 엣지 유형 모두에 동일하게 적용됩니다. 따라서 사면체 격자 단계 기준으로 아미노산 간의 전체 거리는 다음 식으로 계산할 수 있습니다:

d(i,j)=aΔna(i,j)2=(Δn0(i,j))2+(Δn1(i,j))2+(Δn2(i,j))2+(Δn3(i,j))2\begin{aligned} d(i,j) &= \sum\limits_{a}{||\Delta n_a(i,j)||^2} \\ &= (\Delta n_0(i,j))^2 + (\Delta n_1(i,j))^2 + (\Delta n_2(i,j))^2 + (\Delta n_3(i,j))^2 \end{aligned}

그렇다면 아미노산 간의 전체 거리에 대한 이 긴 방정식에서 해밀토니안을 어떻게 구할까요? 먼저, 간단한 기하학을 이용하여 격자 단계 기준 거리를 유클리드 공간으로 변환할 수 있습니다:

d(i,j)=0rij=0d(i,j)=1rij=1d(i,j)=2rij=2231.63d(i,j)=3rij=1131.91d(i,j)=4rij=432.31d(i,j)=5rij=1932.52\begin{aligned} d(i,j) &= 0 \rightarrow r_{ij} = 0 \\ d(i,j) &= 1 \rightarrow r_{ij} = 1 \\ d(i,j) &= 2 \rightarrow r_{ij} = 2\sqrt\frac{2}{3} \approx 1.63 \\ d(i,j) &= 3 \rightarrow r_{ij} = \sqrt\frac{11}{3} \approx 1.91 \\ d(i,j) &= 4 \rightarrow r_{ij} = \frac{4}{\sqrt{3}} \approx 2.31 \\ d(i,j) &= 5 \rightarrow r_{ij} = \sqrt\frac{19}{3} \approx 2.52 \end{aligned}

그런 다음, 이 거리들이 단백질 구성의 에너지를 계산하는 데 사용됩니다. 목적에 따라 쌍이 상호작용하는 것으로 간주할 차단 거리를 설정하거나, 더 복잡한 방법을 사용할 수도 있습니다.

명확하지 않을 수 있지만, 이 작업을 하면서 사실 매핑 단계가 완료되었습니다. Qubit의 상태는 각 격자 사이트에서 단백질의 "회전"을 나타내며, 회전의 집합이 임의의 아미노산 쌍 사이의 거리를 결정합니다. 다양한 종류의 아미노산 쌍은 서로 다른 상호작용을 가지며, 어떤 것은 인력, 어떤 것은 척력입니다. 구성과 거리를 사용하여 알려진 아미노산 상호작용이 "켜져" 있는지 "꺼져" 있는지만 판단한다면, 이러한 강도는 이미 계산되어 있어 다음과 같은 표에서 간단히 조회할 수 있습니다:

아미노산의 결합 에너지

요약하면, 이 예시에서 Qubit는 격자를 따라 경로의 단계를 표시하는 데 사용되며, 이 단계들이 모여 아미노산 사슬을 형성합니다. 아미노산이 어떻게 구부러지고 접히는지 시뮬레이션함으로써 의학 연구에서 더 나은 결과를 얻을 수 있기를 기대합니다. 이 해밀토니안의 몇 가지 항을 계산하는 방법은 생략했는데, 이 문제에 매우 특화된 내용이기 때문입니다. 반면 격자 위에서 방향을 정의하는 방법은 더 일반적으로 적용할 수 있습니다. 이제 일반적인 해밀토니안을 구했다면, 항상 이를 양자 컴퓨터에 기본으로 적용되는 파울리 연산자로 변환해야 합니다. 다음에는 바로 그 내용을 살펴보겠습니다.

Jordan-Wigner 변환

이제 아원자 입자 시스템을 Pauli 연산자로 변환하는 방법을 살펴보겠습니다.

아원자 입자는 두 가지 범주로 나뉩니다 – 보존(보즈 입자)과 페르미온입니다. 광자나 힉스 입자와 같은 보존은 특정 통계 규칙을 따릅니다. 전자나 중성미자와 같은 페르미온은 또 다른 규칙을 따릅니다. 두 입자의 핵심 차이점은 보존은 같은 상태를 동시에 점유할 수 있다는 점입니다 – 기저 상태나 여기 상태에 얼마나 많은 보존이 있어도 제한이 없습니다. 반면에 페르미온은 배타적입니다 – 모든 입자가 각자 고유한 양자 상태를 가져야 합니다.

보존은 정수 스핀을 가지며, 페르미온은 스핀-1/2 전자와 같이 반정수 스핀을 가지고, 더 희귀한 스핀-3/2 입자도 있습니다. 입자 시스템을 설명하려면 에너지에 대한 기술이 필요합니다. 페르미온에 집중해 보겠습니다. 우리는 c 연산자라고 불리는 것으로 표현된 해밀토니안에서 출발할 수 있습니다. 이것들은 기본적으로 시스템의 어떤 상태에서 페르미온을 생성하거나 소멸시키는 것에 해당하는 수학적 객체입니다. 이들은 흔히 fif_i^\daggerfjf_j로 표기하며, fif_i^\dagger는 상태 ii에서 페르미온을 생성하는 연산자이고 fjf_j는 상태 jj에서 페르미온을 소멸시키는 연산자입니다.

그러나 기억하시다시피, 양자 컴퓨터는 일반적으로 Qubit 기저에서 동작하며 페르미온 시스템을 표현하기 위한 특정 규칙을 가지고 있습니다. 양자 컴퓨터는 본래 페르미온 연산자의 언어로 작동하지 않습니다. 이 간극을 메우기 위해, 우리는 이 페르미온 표기를 양자 Gate에 자연스럽게 대응하는 Pauli 연산자로 매핑해야 합니다.

페르미온을 위한 이러한 변환은 여러 가지가 있습니다. 일반적인 선택은 Jordan-Wigner 변환입니다. Bravyi-Kitaev 변환과 패리티 매핑은 더 최근의 페르미온 인코딩입니다. 보존 연산자는 Holstein-Primakoff 변환을 사용하거나, 사용 가능한 보존 모드의 부분 기저에 Fock 상태를 직접 매핑하는 등의 방법으로 변환할 수 있습니다. 다른 인코딩 방법들도 활발히 연구되고 있습니다. 지금은 Jordan-Wigner 변환에만 집중하겠습니다.

Jordan-Wigner 변환은 하나의 페르미온을 여러 Qubit에 매핑하는 것을 포함합니다. 왜 각 전자를 나타내기 위해 하나의 Qubit을 할당하면 안 될까요? 이는 동일한 페르미온의 구별 불가능성과 관련이 있습니다. Qubit은 구별 가능하지만 전자는 그렇지 않습니다. 예를 들어, 어떤 장치에서든 개별 Qubit을 쉽게 레이블링하고 식별할 수 있습니다. 하지만 전자의 구별 불가능성은 우리가 전자에 레이블을 붙일 수 없다는 것을 의미합니다. 따라서, 우리는 실제로 특정 전자 대신 점유된 오비탈(1s, 2p, 2p 등)에 따라 연산자에 레이블을 붙여야 합니다. 그래서 각 Qubit은 점유되거나 점유되지 않은 분자 내 오비탈의 역할을 대략적으로 담당합니다. 하지만 이를 수행하는 방법은 좀 더 복잡합니다. Jordan-Wigner 매핑은 반대칭성을 추적하고 전체 페르미온 시스템의 올바른 통계를 보장합니다. Jordan-Wigner 매핑은 다음 관계식을 사용하여 페르미온 연산자를 Pauli 연산자로 표현합니다:

fj=(k<j(Zk))(Xj+iYj2)fj=(k<j(Zk))(XjiYj2)\begin{aligned} f_j^\dagger &= \Bigl( \prod\limits_{k \lt j}{(-Z_k)} \Bigr)\Bigl( \frac{X_j + i Y_j}{2} \Bigr) \\ f_j &= \Bigl( \prod\limits_{k \lt j}{(-Z_k)} \Bigr)\Bigl( \frac{X_j - i Y_j}{2} \Bigr) \end{aligned}

Jordan-Wigner 매핑은 오비탈과 Qubit 사이의 일대일 대응 때문에 개념적으로 단순합니다. 패리티 매핑을 포함하여 유사한 목표를 달성하는 다른 매핑들도 있습니다. 상태의 패리티를 계산하려면 여러 Qubit을 고려해야 합니다. 패리티 매핑(및 일부 다른 매핑)에서는 하나의 Qubit이 하나의 오비탈에 해당한다는 해석이 성립하지 않습니다. 이제 간단한 예시를 살펴보겠습니다. 단일 Qubit 상호작용 f0f0f_0^\dagger f_0를 계산하고 싶다고 가정해 봅시다. 생성 및 소멸 연산자의 정의를 대입하는 것부터 시작합니다.

f0f0=(k<0(Zk)2)(X0+iY02)(X0iY02)=14(X02+iY0X0X0Y0+Y02)=14(2Ii[X0,Y0])\begin{aligned} f_0^\dagger f_0 &= \biggl( \prod_{k < 0} (-Z_k)^2 \biggr) \biggl( \frac{X_0 + i Y_0}{2} \biggr) \biggl( \frac{X_0 - i Y_0}{2} \biggr) \\ &= \frac{1}{4} (X_0^2 + i Y_0 X_0 - X_0 Y_0 + Y_0^2) \\ &= \frac{1}{4} (2 I - i[X_0,Y_0]) \end{aligned}

교환자 [X0,Y0]=2iZ0[X_0, Y_0] = 2i Z_0입니다. 따라서 최종 식은 다음과 같이 됩니다:

f0f0=12(I+Z0)\begin{aligned} f_0^\dagger f_0 = \frac{1}{2}(I+Z_0) \end{aligned}

이렇게 하여 페르미온 표현식을 양자 컴퓨터가 이해할 수 있는 Pauli 연산자로 성공적으로 재작성했습니다. Qiskit에서 Jordan-Wigner 매핑을 구현하는 방법을 간략히 설명하겠습니다. 이러한 유형의 변환이 어떻게 작동하는지 이해하는 것은 중요하지만, 특히 대형 시스템의 경우 매번 수동으로 계산하는 것은 비실용적입니다. 다행히 Qiskit은 SparsePauliOp 함수를 통해 이를 간편하게 처리할 수 있습니다.

개략적인 단계는 다음과 같습니다:

  1. SparsePauliOp의 from_list 함수를 사용하여 매핑할 파라미터 공간의 크기에 해당하는 항등 연산자를 생성합니다.
  2. 앞서 보여준 생성 및 소멸 연산자의 정의에 따라, SparsePauliOp의 from_list 함수를 사용하여 XX, YY, ZZ Pauli 연산자를 정의합니다. 이렇게 하면 페르미온 생성 및 소멸 연산자를 Qubit 스핀 연산자로 매핑하여, 페르미온 점유수를 Qubit의 계산 기저로 인코딩합니다.
  3. 위 연산자들을 관심 있는 오비탈에 적용하여 Pauli 기저에서 원하는 해밀토니안을 생성합니다. 이는 보통 핵심(비상호작용) 오비탈을 나타내는 항등 행렬을 생성한 다음, 문제의 구체적인 특성에 해당하는 가중치와 함께 활성 공간에 생성 및 소멸 연산자를 적용하는 방식입니다.

Jordan-Wigner 매핑 체계를 완전히 이해했으니, 이제 더 복잡한 예시를 살펴보겠습니다. 이전 강의에서 언급된 논문 "디지털 양자 컴퓨터에서 기저 상태 준비를 위한 확장 가능한 Circuit: 100 Qubit에서의 Schwinger 모델 진공"을 기억하실 수도 있습니다. 논문을 다시 자세히 살펴보지는 않겠습니다 – 전기장이 없는 경우 LL개 격자점을 가진 Schwinger 모델의 해밀토니안을 표현하는 데 사용되는 Jordan-Wigner 매핑에만 집중하겠습니다.

이 모델에서 하나의 Qubit이 무엇을 나타내는지 정확히 파악하기가 훨씬 어렵습니다. 왜냐하면 이 경우 파동 묶음과 같은 물리적인 것을 구성하는 것은 Qubit의 집합 전체이기 때문입니다. 대신, Qubit을 이산화된 공간 조각들로 대략적으로 생각할 수 있습니다. 여기서 LL은 각 요소(단위 셀)가 두 개의 Qubit으로 구성되는 격자 부피입니다. 이전 슬라이드에서 본 페르미온 연산자는 특정 격자점에서의 파동 함수 진폭을 설명합니다. 따라서 우리의 해밀토니안은 이러한 페르미온 생성 및 소멸 연산자를 포함합니다. 그래서 우리는 Jordan-Wigner 변환을 사용하여 이 연산자들을 Pauli 연산자로 매핑합니다.

H=Hm+Hkin+Hel=m2j=02L1[(1)jZj+I]+12j=02L2(σj+σj+1+h.c.)+g22j=02L2(kjQk)2\begin{aligned} \cal{H} &= \cal{H}_m + \cal{H}_{kin} + \cal{H}_{el} \\ &= \frac{m}{2} \sum\limits_{j=0}^{2L-1} [(-1)^j Z_j + I] + \frac{1}{2} \sum\limits_{j=0}^{2L-2}(\sigma_j^+\sigma_{j+1}^- + h.c.) + \frac{g^2}{2} \sum\limits_{j=0}^{2L-2} \Bigl( \sum\limits_{k \le j} Q_k\Bigr)^2 \end{aligned}

여기서 σ+\sigma_+는 Pauli 연산자 X+iYX + iY이고 σ\sigma_{-}XiYX - iY입니다. 해밀토니안을 이 형식으로 표현하면 매핑 단계의 어려운 부분은 끝나며, 이제 Pauli 연산자로 Circuit에 쉽게 작성할 수 있습니다.

결론

우리는 가장 단순한 것부터 시작하여 하드론 역학에 Jordan-Wigner 변환을 적용하는 것까지, 최근 양자 컴퓨팅 분야에서 특정 매핑 기술이 어떻게 사용되어 왔는지에 대한 네 가지 예시를 논의했습니다. 이 내용의 대부분은 매우 기술적이며, 처음 접하는 분이라면 매우 어렵게 느껴질 수 있습니다. 하지만 연습하는 시간이 늘어날수록 점점 쉬워집니다 – 이것이 바로 이 강좌가 "실전 양자 컴퓨팅(Quantum Computing in Practice)"이라고 불리는 이유입니다. 이것은 누구나 처음부터 바로 이해하고 적용할 수 있는 것이 아닙니다 – 공부하고, 머리를 맞대어 생각하고, 아마도 좌절하는 시간도 필요합니다. 하지만 그 불편함을 함께하면서 계속해 나가면서 생겨나는 질문들을 진정으로 탐구해 보시길 권장합니다. 그것이 배우는 유일한 방법입니다.