Quante-Näherungs-Optimierungsalgorithmus
Zitschätzig: 22 Minute uf emene Heron-r3-Prozässor (HINWYS: Das isch nur e Schätzig. Dini Uusfüehrigszit cha abwiiche.)
Hintergrund
Dä Tutorial zeigt, wie mer de Quante-Näherungs-Optimierungsalgorithmus (QAOA) — e hybride (quante-klassischi) iterativi Methode — im Rahme vo Qiskit-Patterns umsetzt. Du lösch zerschte s'Maximum-Cut- (oder Max-Cut-) Problem für e chline Graph und lernsch de, wie mer's in Utility-Scale uusfüehre cha. Alli Hardware-Uusfüehrige im Tutorial sötte innerhalb vom Zitlimit vom frei zugängliche Open Plan laafe.
S'Max-Cut-Problem isch es Optimierungsproblem, wo schwer z'löse isch (genauer gseit, isch's es NP-schweres Problem) mit verschiedene Aawändigsfäll im Clustering, i de Netzwärchwiisseschaft und i dr statistische Physik. Dä Tutorial betrachtet ene Graph vo Knöte, wo dur Kante verbunde sind, und wott d'Knöte in zwee Mengene ufteile, sodass d'Aaazahl vo de dur dä Schnitt duerquärte Kante maximiert wird.

Voraussetzige
Bevor du mit däm Tutorial afangsch, vergewisseri dich, dass du s'Folgende installiert hesch:
- Qiskit SDK v1.0 oder neuer, mit Unterstitzig für Visualisieriig
- Qiskit Runtime v0.22 oder neuer (
pip install qiskit-ibm-runtime)
Zudem bruuchsch du Zuegriff uf e Instanz uf de IBM Quantum Platform. Bitte beachte, dass dä Tutorial nöd im Open Plan uusgfüehrt wärde cha, will er Workloads mit Sessions betribt, wo nur im Premium Plan verfüegbar sind.
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
Teil I. QAOA im chline Massstab
Im erschte Teil vo däm Tutorial wird e chlinmassstäblichs Max-Cut-Problem bruucht, zum d'Schritte zum Löse vomeme Optimierungsproblem mit emene Quantecomputer z'illustriere.
Um etwas Kontext z'gäh, bevor mer das Problem uf ene Quantealgorithmus abbilde, cha mer s'Max-Cut-Problem besser als klassischs kombinatorischs Optimierungsproblem verstah, indem mer zerschte d'Minimierig vomere Funktion betrachtet
wo dr Iiput en Vektor isch, desse Komponente de Knöte vom Graph entspreche. De Beschränkt jedi vo dene Komponente uf oder (was bedütet, dass si im Schnitt drinn oder nöd drinn sind). Dises chline Bispiil nimmt ene Graph mit Knöte.
Du chasch e Funktion vomeme Paar vo Knöte schriibe, wo azeigt, ob d'entsprechende Kante im Schnitt isch. Zum Bispiil isch d'Funktion nur denn 1, wenn entweder oder gleich 1 isch (was bedütet, dass d'Kante im Schnitt isch), und sonsch 0. S'Problem vom Maximiere vo de Kante im Schnitt cha so formuliert wärde:
was als Minimierig umgschriibe wärde cha:
S'Minimum vo isch i däm Fall denn, wenn d'Aaazahl vo de dur de Schnitt duerquärte Kante maximal isch. Wie du gsesch, het das no nüüt mit Quantecomputing z'tüe. Du muesch das Problem in öppis umformuliere, wo e Quantecomputer verstah cha. Initialisier dis Problem, indem du ene Graph mit Knöte erstellsch.
n = 5
graph = rx.PyGraph()
graph.add_nodes_from(np.arange(0, n, 1))
edge_list = [
(0, 1, 1.0),
(0, 2, 1.0),
(0, 4, 1.0),
(1, 2, 1.0),
(2, 3, 1.0),
(3, 4, 1.0),
]
graph.add_edges_from(edge_list)
draw_graph(graph, node_size=600, with_labels=True)

Schritt 1: Klassischi Iiput uf es Quanteproblem abbilden
Dr erschte Schritt vom Pattern isch s'Abbilde vom klassische Problem (Graph) uf Quanteschaltkreis und Operatore. Dafür git's drei Hauptschritte:
- E Reihe vo mathematische Umformulierige nutze, zum das Problem in dr Notation vo Quadratic Unconstrained Binary Optimization (QUBO) darzstelle.
- S'Optimierungsproblem als Hamiltonian umschriibe, desse Grundzuestand dr Lösig entspricht, wo d'Kostenfunktion minimiert.
- Ene Quanteschaltkreis erstelle, wo de Grundzuestand vo däm Hamiltonian dur en ähnliche Prozäss wie Quanteannealing vorbereitet.
Hinwys: Bim QAOA-Verfahre witt du schlussändlich ene Operator (Hamiltonian) ha, wo d'Kostenfunktion vo uusem hybride Algorithmus repräsentiert, sowie ene parametrisierte Schaltkreis (Ansatz), wo Quantezueständ mit Kandidatenlösige für s'Problem darstellt. Du chasch von dene Kandidatenzueständ samplen und si de mit dr Kostenfunktion bewärte.
Graph → Optimierungsproblem
Dr erschte Schritt bim Abbilde isch e Notationsänderig. S'Folgende drückt das Problem in QUBO-Notation uus:
wo e -Matrix vo reelle Zahle isch, dr Aaazahl vo Knöte im Graph entspricht, dr Vektor vo binäre Variabele isch, wie oben iiigfüehrt, und de Transposita vom Vektor bedütet.
Maximize
-2*x_0*x_1 - 2*x_0*x_2 - 2*x_0*x_4 - 2*x_1*x_2 - 2*x_2*x_3 - 2*x_3*x_4 + 3*x_0
+ 2*x_1 + 3*x_2 + 2*x_3 + 2*x_4
Subject to
No constraints
Binary variables (5)
x_0 x_1 x_2 x_3 x_4
Optimierungsproblem → Hamiltonian
Du chasch s'QUBO-Problem de als Hamiltonian umformuliere (hie e Matrix, wo d'Energie vomeme System repräsentiert):
Umformulierigs-Schritte vom QAOA-Problem zum Hamiltonian
Um z'zeige, wie das QAOA-Problem so umgschriibe wärde cha, ersetzt mer zerschte d'binäre Variabele dur e neui Satz vo Variabele via
Hie gsiehsch, dass wenn gleich isch, gleich sy mueß. Wenn d''s dur d''s im Optimierungsproblem () ersetzt wärde, chan mer e äquivalenti Formulierig erhalte.
Wenn mer jetzt definiert, de Vorfaktor weglaat und de konstante -Term entfernt, chöme mer zu de zwee äquivalente Formulierige vom gliche Optimierungsproblem.
Hie hängt vo ab. Beachte, dass zum Erhalte vo dr Faktor 1/4 und e konstante Verschiebig vo weggloo worde sind, wo bi dr Optimierig kei Rolle spieled.
Um jetzt e Quanteformulierig vom Problem z'erhalte, wärde d'-Variabele zu Pauli--Matrize befördert, also zu -Matrize vo dr Form
Wenn du die Matrize im Optimierungsproblem oben iisetzt, erhälsch de folgende Hamiltonian
Vergiss ou nöd, dass d'-Matrize im rechnerische Raum vom Quantecomputer iibettet sind, also im Hilbert-Raum dr Grösse . Drum söttsch Ausdrück wie als Tensorprodukt iibettet im -Hilbert-Raum verstah. Zum Bispiil isch dr Term