Skip to main content
IBM Quantum Platform

유틸리티 규모 QAOA

올리비아 레인즈(Olivia Lanes)가 제작한 유틸리티 규모 QAOA에 관한 동영상을 시청하거나, YouTube 에서 동영상을 별도의 창으로 열어보세요.


수업 개요:

지금까지 이 강좌를 통해 양자 컴퓨터에서 유틸리티 규모의 문제를 해결하는 데 필요한 프레임워크와 도구에 대한 탄탄한 기초를 다지셨기를 바랍니다. 이제 드디어 이러한 도구가 실제로 작동하는 모습을 보실 수 있습니다.

이번 강의에서는 그래프 이론의 유명한 문제인 ‘맥스-컷(max-cut) 문제’를 대규모 사례로 직접 다루어 보겠습니다. 이 문제는 그래프를 두 부분으로 가장 효율적으로 분할하는 방법을 다루는 문제입니다. 먼저 간단한 5노드 그래프를 통해 양자 컴퓨터가 이 문제를 해결하는 데 어떻게 도움이 되는지 직관적으로 이해한 다음, 이를 대규모 문제에 적용해 보겠습니다.

이 강의에서는 이 문제를 해결하기 위해 우리가 취하는 접근 방식을 전반적으로 살펴보겠습니다. 이번에는 코드 해설이 아닙니다. 하지만 이 강의와 함께, 양자 컴퓨터에서 최대 절단 문제를 해결할 수 있도록 직접 실행해 볼 수 있는 실제 코드가 포함된 튜토리얼 이 제공됩니다.


문제점

모든 계산 문제가 양자 컴퓨팅에 적합한 것은 아니라는 점을 다시 한 번 말씀드립니다. "쉬운 문제"는 기존 컴퓨터가 이미 완벽하게 잘 풀기 때문에 이 기술을 통해 얻을 수 있는 이점이 없습니다.

저희가 가장 낙관적으로 살펴보고자 하는 세 가지 사용 사례는 다음과 같습니다:

  1. 자연 시뮬레이션
  2. 복잡한 구조의 데이터 처리
  3. 최적화

오늘은 세 번째 사용 사례인 최적화에 대해 집중적으로 살펴보겠습니다. 최적화 문제에서는 일반적으로 주어진 함수에 대해 가능한 가장 크거나 가장 작은 값을 찾습니다. 기존 방법으로는 이러한 극한값을 찾는 것이 문제 크기가 커질수록 기하급수적으로 어려워질 수 있습니다.

오늘 다룰 최적화 문제는 ‘맥스컷(max-cut)’이라고 하며, 우리는 ‘양자 근사 최적화 알고리즘(QAOA)’이라는 알고리즘을 사용하여 이를 해결할 것입니다.

맥스컷이란 무엇인가요?

먼저, 정점(또는 노드)들의 집합으로 이루어진 그래프를 살펴보겠습니다. 이 정점들 중 일부는 변으로 연결되어 있습니다. 이 문제에서는 노드들을 연결하는 변을 “자르는” 방식으로 그래프의 노드들을 두 개의 부분집합으로 나누도록 요구하고 있습니다. 우리는 이러한 방식으로 잘리는 변의 개수를 최대화하는 분할을 찾고자 합니다. 바로 이 때문에 ‘최대 절단(max-cut)’이라는 이름이 붙었습니다

최대 컷 문제의 예시

예를 들어, 위 그림은 5개의 노드로 구성된 그래프를 보여주며, 오른쪽에는 최대 절단(max-cut) 해가 표시되어 있습니다. 이 그래프에서는 5개의 변을 가로지르는데, 이것이 이 그래프에서 가능한 최상의 결과입니다.

5개의 정점으로 이루어진 그래프는 규모가 매우 작기 때문에, 머릿속으로 계산하거나 종이에 몇 가지 절단 방법을 직접 시도해 보면서 최대 절단(max-cut)을 구하는 것이 그리 어렵지 않습니다. 하지만 짐작하시겠지만, 정점의 수가 늘어날수록 문제는 점점 더 어려워집니다. 이는 부분적으로 고려해야 할 가능한 절단선의 수가 노드 수에 따라 기하급수적으로 증가하기 때문입니다. 그리고 어느 시점이 되면, 이는 알려진 어떤 고전적 알고리즘을 사용하더라도 슈퍼컴퓨터조차 처리하기 어려워집니다.

우리는 이러한 규모가 크고 복잡한 그래프에 대해 최대 절단 문제를 해결할 수 있는 방법을 모색하고 있습니다. 이 문제는 금융 분야의 사기 탐지, 그래프 클러스터링, 네트워크 설계, 소셜 미디어 분석 등 다양한 실용적인 응용 분야를 가지고 있기 때문입니다. 맥스컷(Max-cut)은 대개 더 큰 문제를 해결하는 특정 접근법 내에서 하위 문제로 다루어집니다. 그러니까, 우리가 순진하게 생각하는 것보다 훨씬 더 흔한 일입니다.


솔루션

이제 양자 컴퓨터에서 최대 절단 문제를 해결하기 위해 우리가 사용하는 접근 방식을 단계별로 살펴보겠습니다. 간단한 5개 노드 그래프를 예로 들어 설명해 보겠습니다. 파이썬 노트북 튜토리얼을 따라 해보세요. 이 간단한 예제를 마친 후, 튜토리얼에서는 해당 문제를 대규모 사례로 다룰 예정입니다.

첫 번째 단계는 노드의 수와 두 노드를 연결하는 에지를 정의하여 그래프를 만드는 것입니다. 튜토리얼에서 설명한 대로 rustworkx 라는 패키지를 가져와서 이 작업을 수행할 수 있습니다. 결과는 다음과 같은 그래프가 표시됩니다:

Rustworkx max-cut 그래프의 출력 결과

Qiskit 패턴 프레임워크를 사용하여 양자 컴퓨터에서 이 그래프에 대한 최대 절단(max-cut) 해를 구해 보겠습니다.

문제를 양자 컴퓨터에 매핑해야 합니다. 이를 위해 먼저 그래프에서 컷 수를 최대화하는 것은 수학적으로 다음과 같이 쓸 수 있다는 점에 유의하세요:

maxx{0,1}n(i,j)xi+xj2xixj\max\limits_{x\in\{0,1\}^n} \sum\limits_{(i,j)} {x_i + x_j - 2x_ix_j}

여기서 iijj 은 그래프의 노드이고 xix_ixjx_j 은 각 노드가 파티션의 어느 쪽에 있는지에 따라 0 또는 1입니다(한 그룹은 "0", 한 그룹은 "1" 레이블이 붙습니다). xix_ixjx_j 이 파티션의 같은 쪽에 있는 경우 합계의 식은 0이 됩니다. 서로 반대편에 있어 그 사이에 잘림이 있는 경우 표현식은 1과 같습니다. 따라서 컷 수를 최대화하면 합계가 최대화됩니다.

이를 뒤집어 각 값에 음수를 곱하여 최소값을 검색할 수도 있습니다.

minx{0,1}n(i,j)2xixjxixj\min\limits_{x\in\{0,1\}^n} \sum\limits_{(i,j)} {2x_ix_j - x_i - x_j}

이제 매핑할 준비가 되었습니다. 방금 그린 그래프와 같은 그래프에서 양자 회로로 어떻게 이동할지 생각하면 다소 어려울 수 있습니다. 하지만 한 번에 한 걸음씩 나아갈 것입니다.

기억하세요, 우리는 QAOA를 사용하여 최대 절단 문제를 해결해 보려고 합니다. QAOA 방법론에서, 우리는 궁극적으로 하이브리드 알고리즘의 비용 함수를 표현하는 데 사용될 연산자(즉, 해밀토니안)와, 문제의 가능한 해를 표현하는 데 사용될 매개변수화된 회로(안자츠)를 확보하고자 합니다.

QUBO

이러한 후보 솔루션에서 샘플링한 다음 비용 함수를 사용하여 평가할 수 있습니다. 이를 위해 조합 최적화 문제를 인코딩하는 유용한 방법인 이차 제약 없는 이진 최적화 표기법(줄여서 QUBO)을 비롯한 일련의 수학적 재구성을 활용합니다. QUBO에서는 찾고자 합니다:

minx{0,1}nxTQx\min\limits_{x\in\{0,1\}^n} x^TQx

여기서 QQn×nn\times n 실수 행렬이고, nn 는 그래프의 노드 수(여기서는 5개)에 해당합니다.

QAOA를 적용하려면 시스템의 총 에너지를 나타내는 함수 또는 행렬인 해밀토니안으로 문제를 공식화해야 합니다. 구체적으로, 기저 상태가 함수의 최소값에 해당한다는 속성을 가진 비용 함수 해밀턴을 만들고자 합니다. 따라서 최적화 문제를 해결하기 위해 양자 컴퓨터에서 HH 의 기저 상태를 준비해 보겠습니다. 그런 다음 이 상태에서 샘플링하면 min𝑓(𝑥)\min 𝑓(𝑥) 에 대한 솔루션을 높은 확률로 얻을 수 있습니다.

함수 해밀토니언에 대한 매핑

QUBO 문제는 물리학에서 가장 유명하고 보편적인 해밀턴 이론 중 하나인 아이싱 해밀턴과 매우 밀접한 관련이 있고 실제로 계산적으로도 동일하기 때문에 운이 좋게도 우리는 운이 좋았습니다.

QUBO 문제를 이징 해밀토니안으로 표현하기 위해서는, 사실 x{0,1}nx \in \{0, 1\}^n 에서 z{1,1}nz \in \{-1, 1\}^n 로 간단한 변수 변환을 수행하기만 하면 된다:

xi=1zi2.x_i = \frac{1-z_i}{2}.
  • 먼저, QUBO 식을 행렬 항들의 합으로 다시 쓸 수 있다는 점에 유의하십시오:

    xTQx=ijQijxixjx^TQx = \sum_{ij}Q_{ij}x_ix_j

    변수 변환을 적용하면 다음과 같은 결과가 나옵니다

    ijQij(1zi2)(1zj2)=ijQij4(1zizj+zizj)\sum_{ij}Q_{ij}(\frac{1-z_i}{2})(\frac{1-z_j}{2}) = \sum_{ij}\frac{Q_{ij}}{4}(1 - z_i - z_j + z_iz_j)

    이는 다음과 같이 재배열할 수 있습니다.

    ijQij4zizjQij4ziQij4zj+Qij4\sum_{ij}\frac{Q_{ij}}{4}z_iz_j - \frac{Q_{ij}}{4}z_i - \frac{Q_{ij}}{4}z_j + \frac{Q_{ij}}{4}

    상수 항은 QUBO 문제를 최소화하는 zz 가 어느 것이 되는지에 영향을 미치지 않으므로 생략할 수 있습니다. 또한, 이 식에 4를 곱하면 QQ 의 원래 값을 되찾을 수 있는데, 이는 zz 의 최적 선택에 영향을 미치지 않기 때문이다.

    ijQijzizjQijziQijzj=zTQz+(ijQijzi+Qijzj)\sum_{ij}Q_{ij}z_iz_j - Q_{ij}z_i - Q_{ij}z_j = z^TQz + (-\sum_{ij} Q_{ij}z_i + Q_{ij}z_j)

    유사한 선형 항들을 묶음으로써, 다음 식을 이용하여 선형 계수 벡터 bb 를 정의할 수 있다

    bi=jQij+Qjib_i = -\sum_{j} Q_{ij} + Q_{ji}

    이를 이전 방정식에 대입하면, 변수 변환이 z{1,1}nz \in \{-1, 1\}^n 로 완료됩니다.

    zTQz+bTzz^TQz + b^Tz

결국, QUBO 식의 최소화는 다음 식의 최소화와 동일하며, 여기서 bb 는 실수 스칼라 계수이다:

minx{0,1}nxTQxminz{1,1}nzTQz+bTz\min_{x\in\{0,1\}^n} x^TQx\Longleftrightarrow \min_{z\in\{-1,1\}^n}z^TQz + b^Tz

다시 약간 수정하면, 비용 함수 해밀토니안을 얻을 수 있는데, 이 식의 최소값이 기저 상태를 나타내며, Z 는 파울리 Z 연산자이다:

HC=ijQijZiZj+ibiZiH_C=\sum_{ij}Q_{ij}Z_iZ_j + \sum_i b_i Z_i

이제 해밀턴 연산자를 얻었으니, 양자 회로에서 2쿼비트 게이트로 쉽게 변환할 수 있는 2-로컬 폴리 ZZ 연산자로 다시 작성해야 합니다. 그래프의 6개의 가장자리 각각에 해당하는 6개의 객체, 즉 폴리 문자열이 생깁니다. 문자열의 다섯 요소는 각각 노드에 대한 연산, 즉 노드가 특정 에지에 연결되어 있지 않은 경우 아이덴티티를 나타내고 연결되어 있는 경우 폴리 Z 연산자를 나타냅니다. 키스킷에서 큐비트를 나타내는 비트스트링은 거꾸로 인덱싱됩니다. 예를 들어 노드 0과 1 사이의 엣지는 IIIZZ 로 인코딩되고, 2와 4 사이의 엣지는 ZIZII 로 인코딩됩니다.

양자 회로를 구성하라

폴리 연산자로 작성된 해밀턴을 통해 양자 회로를 구성하고, 양자 컴퓨터를 사용해 좋은 솔루션을 샘플링할 준비가 되었습니다:

QAOA 계층이 있는 회로도

QAOA 알고리즘은 시간에 종속적인 해밀턴의 기저 상태에서 시작할 경우 해밀턴이 충분히 천천히 진화하고 충분한 시간이 주어지면 최종 상태는 최종 해밀턴의 기저 상태가 된다는 단열 정리에서 영감을 얻었습니다. QAOA는 이 양자 단열 알고리즘의 이산적이고 트로터화된 버전으로 생각할 수 있으며, 각 트로터 단계는 QAOA 알고리즘의 계층을 나타냅니다. 따라서 한 상태에서 다른 상태로 진화하는 대신 각 계층에서 비용 함수 해밀턴과 이 단원의 뒷부분에서 다룰 소위 "믹서" 해밀턴 사이를 오가게 됩니다.

QAOA의 장점은 양자 단열 알고리즘보다 빠르지만 최적이 아닌 대략적인 솔루션을 반환한다는 점입니다. 레이어 수가 무한대가 되는 한계에서 QAOA는 QAA의 경우로 수렴하지만, 물론 이는 계산 비용이 매우 많이 듭니다.

양자 회로를 만들기 위해 γ\gammaβ\beta 로 매개변수화된 교대 연산자를 적용하여 시간 진화의 이산화를 표현할 것입니다.

따라서 QAOA 회로의 세 가지 주요 부분은 다음과 같습니다:

  1. 모든 큐비트에 적용된 하다마드 게이트를 적용하여 생성된 믹서의 접지 상태인 초기 시험 상태(회색)를 나타냅니다
  2. 앞서 설명한 비용 함수 진화를 진한 보라색으로 표시합니다
  3. 아직 다루지 않은 믹서 해밀턴 아래의 진화를 연한 보라색으로 표시했습니다.

시작 해밀턴을 믹서라고 부르는 이유는 그 기저 상태가 관심 있는 모든 가능한 비트스트링의 중첩이므로 시작 시 모든 가능한 솔루션의 혼합을 강제하기 때문입니다.

믹서 해밀턴은 그래프의 각 노드에서 폴리-X 연산을 단순 합산한 것입니다. 키스킷에서는 원하는 경우 다른 커스텀 믹서 연산자를 사용할 수 있지만 여기서는 표준 연산자를 사용하겠습니다. 다시 말하지만, 키스킷을 사용하면 많은 작업이 제거되어 믹서 해밀턴과 시작 상태를 만드는 것이 사소해집니다. 우리가 해야 할 유일한 작업은 비용 함수를 찾는 것이었습니다.

이러한 연산자의 각 반복을 ‘레이어’라고 합니다. 앞서 설명한 바와 같이, 이러한 층들은 시스템의 시간적 변화를 이산화한 것으로 볼 수 있다. 이러한 교대 패턴은 트로터 분해에서 비롯되며, 비가환 행렬의 지수 함수를 근사합니다. 일반적으로 층이나 단계를 더 많이 포함할수록 QAA와 같이 연속적인 시간 변화에 더 가까워지므로, 이론적으로는 결과가 더 정확해집니다. 하지만 이 예제에서는 우선 레이어 하나를 사용하여 샘플링을 시작해 보겠습니다. 기억하십시오. 비용 함수 해밀토니안과 믹서 모두 매개변수화되어 있으므로, 여전히 γ\gammaβ\beta 에 대한 최적값을 구해야 합니다.

최적화

방금 만든 회로는 매우 간단해 보이고 직관적으로 이해하는 데 유용하지만, 양자 칩은 QAOA 게이트가 무엇인지 이해하지 못한다는 점을 기억하세요. 이를 하드웨어에서 직접 수행할 수 있는 일련의 단일 및 2쿼비트 "네이티브" 게이트로 전환해야 합니다. 네이티브 게이트는 큐비트에서 직접 수행할 수 있는 게이트입니다. 이러한 회로는 백엔드의 명령어 집합 아키텍처(ISA)로 작성된다고 합니다.

키스킷 라이브러리는 다양한 회로 변환을 지원하는 일련의 트랜스필레이션 패스를 제공합니다. 우리는 회로가 우리의 목적에 최적화되었는지 확인하고자 합니다.

이전 단원에서 번역 과정에는 여러 단계가 포함된다는 점을 기억하세요:

  • 회로의 큐비트(즉, 결정 변수)를 디바이스의 물리적 큐비트에 초기 매핑합니다.
  • 양자 회로의 명령어를 백엔드가 이해하는 하드웨어 네이티브 명령어로 언롤링합니다.
  • 회로에서 서로 인접한 물리적 큐비트와 상호 작용하는 모든 큐비트의 라우팅.

항상 그렇듯이 이에 대한 자세한 내용은 문서에서 확인할 수 있습니다.

하지만 트랜스파일링하기 전에 트랜스파일러가 프로세서마다 다르게 최적화되므로 회로를 실행할 백엔드를 선택해야 합니다. 자동화된 트랜스파일러를 사용하는 것이 중요한 또 다른 이유는 시간이 많이 걸리는 수작업 최적화 과정을 거쳐 실제로는 다른 속성을 가진 다른 프로세서에서 회로를 실행하고 싶다는 것을 깨닫고 싶지 않기 때문입니다.

트랜스파일러 기능에 원하는 백엔드를 전달하고 최적화 수준을 지정하세요. 튜토리얼에서는 가장 높고 철저한 레벨인 레벨 3을 선택하게 됩니다.

이제 하드웨어에서 실행할 수 있는 트랜스파일된 회로가 완성되었습니다!

실행

지금까지 우리는 감마와 베타 매개변수는 그대로 둔 채 회로를 트랜스파일링했지만, 사실 이 매개변수들을 지정하지 않고서는 회로를 실행할 수 없습니다. QAOA 워크플로우에서는 반복적 최적화 루프를 통해 최적의 QAOA 매개변수를 구합니다. 이 과정에서 일련의 회로 평가를 수행한 뒤, 고전적 최적화 기법을 사용하여 최적의 𝛽 및 𝛾 매개변수를 구합니다. 하지만 어딘가에서 시작해야 하므로, 우선 γ=π/2\gamma=\pi/2β=π\beta=\pi 을 초기 추정값으로 설정합니다.

실행 모드

이제 서킷을 달릴 준비가 거의 다 되었습니다! 하지만 먼저 실행 모드라고 하는 다양한 방법으로 작업을 보낼 수 있다는 점에 유의해야 합니다.

  • 작업 모드: 컨텍스트 관리자 없이 Estimator 또는 Sampler 프리미티브에 대한 단일 프리미티브 요청이 수행됩니다. 회로와 입력값은 기본 통합 블록(PUB)으로 패키징되어 양자 컴퓨터에 실행 작업으로 제출됩니다.

  • 배치 모드: 독립적인 작업 묶음으로 구성된 실험을 효율적으로 실행하기 위한 다중 작업 관리자입니다. 배치 모드를 사용하여 여러 개의 기본 작업을 동시에 제출하기

  • 세션 모드: 다중 작업 워크로드를 실행하기 위한 전용 창입니다. 이를 통해 사용자는 보다 예측 가능한 방식으로 변형 알고리즘을 실험할 수 있으며, 스택의 병렬성을 활용하여 여러 실험을 동시에 실행할 수도 있습니다. 반복적인 워크로드나 전용 액세스가 필요한 실험에는 세션을 사용하세요. 예제는 세션에서 작업 실행을 참조하세요.

최적의 파라미터 값을 찾기 위해 다양한 파라미터 값으로 회로를 여러 번 샘플링해야 하므로 QAOA 실험의 경우 세션에 액세스할 수 있는 경우 세션을 진행하는 것이 좋은 선택입니다.

최적화 문제로 돌아갑니다. 대략적인 추측보다 더 나은 감마 및 베타 값을 찾아야 합니다. 비용 함수와 이러한 초기 추측을 스키피 최적화 도구( COBYLA)에 연결하여 이를 수행합니다.

COBYLA 최적화 그래프

여기에서 반복에 따른 비용 함수의 값을 확인할 수 있습니다. 약간 불안정하게 시작하여 오르락내리락하다가 낮은 값으로 안정됩니다. 비용 함수의 가장 낮은 평가에 해당하는 scipy가 찾은 값을 사용할 것입니다.

이제 매개변수의 최적값을 찾아 비용 함수를 줄일 수 있게 되었으므로, 감마와 베타에 대해 구한 새로운 값을 사용하여 회로를 구동해 보겠습니다. 여기에는 제가 사용하고 있는 구체적인 값들을 나열해 두었지만, 직접 해보시거나 같은 튜토리얼 노트북을 다시 실행할 때 이 값들이 약간 달라질 수 있다는 점을 기억해 주세요. 이제 이 값들을 사용하여 최적화된 회로를 구동하고, 최대 절단 문제에 대한 후보 해를 찾아보겠습니다.

후처리 단계에서는 데이터를 분석하고 이러한 결과를 표시하여 양자 알고리즘이 올바른 솔루션을 찾았는지 확인합니다.

사후 프로세스

이제 데이터의 히스토그램을 그려서 최종 솔루션을 살펴보겠습니다:

맥스컷 솔루션 히스토그램

비트 문자열은 컷에 의해 각 노드가 두 그룹("0" 및 "1" 레이블이 붙은)으로 분할된 방식을 나타냅니다. 네 가지 솔루션이 모두 가장자리 잘림의 최대 값을 제공해야 합니다. 이 네 가지는 보라색으로 표시됩니다. 4가지 솔루션이 다른 어떤 솔루션보다 훨씬 더 가능성이 높다는 것을 바로 알 수 있습니다. 가장 높은, 따라서 가장 가능성이 높은 비트 문자열 솔루션은 0,1,0,1,1입니다. (플롯 비트스트링에서는 큐비트의 순서가 뒤바뀐다는 점을 기억하세요!)

이 플롯에서 가장 가능성이 높은 비트 문자열을 가져와 분할된 그래프로 표현할 수 있으며, 다섯 개의 가장자리를 통과하는 컷이 있습니다:

맥스컷 솔루션

그러니까, 이건 확실히 최대 절단법입니다. 하지만 그게 전부가 아니에요! 이 그래프가 대칭적이기 때문에, 정답은 여러 개입니다. 노드 0과 3을 절단 영역 안에 두는 대신, 노드 2와 4를 포함시킬 수도 있습니다. 보시다시피, 제가 한 일은 이 새로운 점들을 포함하도록 도형을 회전시킨 것뿐입니다. 잘린 변의 개수는 여전히 다섯 개입니다. 최대 절단 해법은 총 네 가지가 되는 것으로 나타납니다. 앞서 언급한 두 해법 각각에는 ‘반대’에 해당하는 쌍이 존재하기 때문인데, 이 경우 보라색 노드는 회색으로, 회색 노드는 보라색으로 바뀌게 됩니다. 따라서 절단 자체는 동일하게 유지되지만, 각 노드는 사실상 분할의 반대편으로 자리를 바꾸게 됩니다.

히스토그램과 가장 가능성이 높은 네 가지 해결책을 잠시 다시 살펴보겠습니다. 이상적으로는, 그것들이 네 가지 진정한 최대 절단 해법 각각이 될 것입니다. 문제는 알고리즘이 실제로 네 번째이자 마지막 해법을 가장 가능성이 높은 상위 4개 답변 중 하나로 식별하지 못했다는 점입니다. 다섯 번째로 가능성이 높았다. 알고리즘이 찾아낸 네 번째 해는 틀렸습니다. 그림을 그려보면 이 해에는 절단선이 네 개밖에 없다는 것을 알 수 있습니다.

하지만 이것은 대략적인 알고리즘이라는 점을 기억하세요. 무결점도 아니고 100% 정확하지도 않습니다. 하지만 해결책을 제대로 확인하려면 자신의 지식과 이해를 활용해야 합니다.

이 오류는 여러 곳에서 발생할 수 있습니다:

  1. 알고리즘 자체의 대략적인 특성과 제가 사용한 레이어의 수가 적기 때문일 수 있습니다.
  2. 이는 유한한 샘플링 오류일 수 있으며, 실험에서 촬영 횟수를 늘리면 이 오차를 줄일 수 있습니다.
  3. 네 번째 실제 솔루션이 1비트 차이밖에 나지 않기 때문에 판독 오류일 수도 있습니다.

이러한 종류의 오류 분석은 양자 컴퓨팅의 실무자가 되기 위해 필요한 것입니다. 하드웨어의 성능과 이것이 특정 유형의 오류에 어떻게 영향을 미칠 수 있는지, 그리고 오류를 수정하는 방법을 이해해야 합니다.

하지만 가능한 비트열이 32가지였으며, 실제 해답 4개가 최상위 5개 후보에 포함되어 있었다는 점을 잊지 말아야 한다. 그리고 우리는 단 두 개의 레이어만 사용해서 이 결과를 얻었습니다. 일반적으로 매번 최적의 맥스컷(max-cut)을 찾을 확률을 높이고 싶다면, 레이어 수를 늘릴 수 있습니다. 여기에는 몇 가지 미묘한 점이 있지만, 그건 다음 시간에 다루도록 하겠습니다.


유틸리티 규모에서

양자 컴퓨터에서 소규모 최대 절단 문제를 해결하는 과정을 경험해 보셨으니, 이제 대규모로 해결해 보시길 권합니다. 링크된 토리얼을 따라가며 125노드 그래프에서 몇 개의 절단선을 얻을 수 있는지 확인해 보세요.

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.