Algoritma optimasi perkiraan kuantum
Perkiraan penggunaan: 22 menit pada prosesor Heron r3 (CATATAN: Ini hanya perkiraan. Waktu aktual kamu bisa berbeda.)
Latar Belakang
Tutorial ini mendemonstrasikan cara mengimplementasikan Quantum Approximate Optimization Algorithm (QAOA) – sebuah metode iteratif hibrida (kuantum-klasik) – dalam konteks pola Qiskit. Kamu akan terlebih dahulu memecahkan masalah Maximum-Cut (atau Max-Cut) untuk sebuah graf kecil, lalu belajar cara menjalankannya pada skala utilitas. Semua eksekusi perangkat keras dalam tutorial ini seharusnya berjalan dalam batas waktu Open Plan yang dapat diakses secara gratis.
Masalah Max-Cut adalah masalah optimasi yang sulit dipecahkan (lebih spesifiknya, ini adalah masalah NP-hard) dengan berbagai aplikasi dalam klasterisasi, ilmu jaringan, dan fisika statistik. Tutorial ini mempertimbangkan sebuah graf berisi simpul-simpul yang terhubung oleh sisi, dan bertujuan membagi simpul-simpul tersebut ke dalam dua himpunan sedemikian rupa sehingga jumlah sisi yang dilintasi oleh potongan ini dimaksimalkan.

Persyaratan
Sebelum memulai tutorial ini, pastikan kamu telah menginstal hal-hal berikut:
- Qiskit SDK v1.0 atau lebih baru, dengan dukungan visualisasi
- Qiskit Runtime v0.22 atau lebih baru (
pip install qiskit-ibm-runtime)
Selain itu, kamu memerlukan akses ke sebuah instance di IBM Quantum Platform. Perlu diketahui bahwa tutorial ini tidak dapat dijalankan pada Open Plan, karena menjalankan beban kerja menggunakan sessions, yang hanya tersedia dengan akses Premium Plan.
Setup
# Added by doQumentation — required packages for this notebook
!pip install -q matplotlib numpy qiskit qiskit-ibm-runtime rustworkx scipy
import matplotlib
import matplotlib.pyplot as plt
import rustworkx as rx
from rustworkx.visualization import mpl_draw as draw_graph
import numpy as np
from scipy.optimize import minimize
from collections import defaultdict
from typing import Sequence
from qiskit.quantum_info import SparsePauliOp
from qiskit.circuit.library import QAOAAnsatz
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import Session, EstimatorV2 as Estimator
from qiskit_ibm_runtime import SamplerV2 as Sampler
Bagian I. QAOA Skala Kecil
Bagian pertama tutorial ini menggunakan masalah Max-Cut skala kecil untuk mengilustrasikan langkah-langkah memecahkan masalah optimasi menggunakan komputer kuantum.
Untuk memberikan konteks sebelum memetakan masalah ini ke algoritma kuantum, kamu dapat lebih memahami bagaimana masalah Max-Cut menjadi masalah optimasi kombinatorial klasik dengan terlebih dahulu mempertimbangkan minimisasi suatu fungsi
di mana input adalah sebuah vektor yang komponennya bersesuaian dengan setiap simpul dalam sebuah graf. Kemudian, batasi masing-masing komponen tersebut agar bernilai atau (yang mewakili apakah simpul termasuk atau tidak termasuk dalam potongan). Contoh kasus skala kecil ini menggunakan graf dengan simpul.
Kamu bisa menulis fungsi dari sepasang simpul yang mengindikasikan apakah sisi yang bersangkutan ada dalam potongan. Misalnya, fungsi bernilai 1 hanya jika salah satu dari atau bernilai 1 (yang berarti sisi tersebut ada dalam potongan) dan bernilai nol sebaliknya. Masalah memaksimalkan sisi-sisi dalam potongan dapat dirumuskan sebagai
yang dapat ditulis ulang sebagai minimisasi berbentuk