Quantenphasenschätzung mit den Qiskit Functions von Q-CTRL
Geschätzte Nutzungsdauer: 40 Sekunden auf einem Heron-r2-Prozessor. (HINWEIS: Dies ist nur eine Schätzung. Deine tatsächliche Laufzeit kann abweichen.)
Hintergrund
Quantenphasenschätzung (QPE) ist ein grundlegender Algorithmus im Quantencomputing, der die Basis vieler wichtiger Anwendungen bildet, wie zum Beispiel Shors Algorithmus, die Berechnung von Grundzustandsenergien in der Quantenchemie und Eigenwertprobleme. QPE schätzt die Phase , die mit einem Eigenzustand eines unitären Operators verknüpft ist, gemäß der Beziehung
und bestimmt sie mit einer Präzision von unter Verwendung von Zähl-Qubits [1]. Indem diese Qubits in Superposition gebracht werden, kontrollierte Potenzen von angewendet werden und anschließend die inverse Quantenfouriertransformation (QFT) die Phase in binär-kodierte Messergebnisse überführt, erzeugt QPE eine Wahrscheinlichkeitsverteilung mit einem Maximum bei Bitstrings, deren binäre Brüche approximieren. Im idealen Fall entspricht das wahrscheinlichste Messergebnis direkt der Binärentwicklung der Phase, während die Wahrscheinlichkeit anderer Ergebnisse mit der Anzahl der Zähl-Qubits schnell abnimmt. Das Ausführen tiefer QPE-Schaltkreise auf Hardware bringt jedoch Herausforderungen mit sich: Die große Anzahl an Qubits und verschränkenden Operationen macht den Algorithmus sehr anfällig für Dekohärenz und Gate-Fehler. Dies führt zu verbreiterten und verschobenen Bitstring-Verteilungen, die die wahre Eigenphase verdecken. Als Folge davon entspricht der Bitstring mit der höchsten Wahrscheinlichkeit möglicherweise nicht mehr der korrekten Binärentwicklung von .
In diesem Tutorial stellen wir eine Implementierung des QPE-Algorithmus mit den Fire-Opal-Fehlerunterdrückungs- und Performance-Management-Tools von Q-CTRL vor, die als Qiskit Function angeboten werden (siehe die Fire-Opal-Dokumentation). Fire Opal wendet automatisch fortgeschrittene Optimierungen an, darunter dynamisches Entkoppeln, verbesserte Qubit-Layouts und Fehlerunterdrückungstechniken, was zu höherwertigen Ergebnissen führt. Diese Verbesserungen bringen die Hardware-Bitstring-Verteilungen näher an jene aus rauschfreien Simulationen, sodass du die korrekte Eigenphase auch unter Rauscheinflüssen zuverlässig identifizieren kannst.
Voraussetzungen
Stelle vor Beginn dieses Tutorials sicher, dass Folgendes installiert ist:
- Qiskit SDK v1.4 oder höher, mit Unterstützung für Visualisierung
- Qiskit Runtime v0.40 oder höher (
pip install qiskit-ibm-runtime) - Qiskit Functions Catalog v0.9.0 (
pip install qiskit-ibm-catalog) - Fire Opal SDK v9.0.2 oder höher (
pip install fire-opal) - Q-CTRL Visualizer v8.0.2 oder höher (
pip install qctrl-visualizer)
Einrichtung
Authentifiziere dich zunächst mit deinem IBM Quantum API-Schlüssel. Wähle dann die Qiskit Function wie folgt aus. (Dieser Code setzt voraus, dass du dein Konto bereits lokal gespeichert hast.)
# Added by doQumentation — required packages for this notebook
!pip install -q matplotlib numpy qctrlvisualizer qiskit qiskit-aer qiskit-ibm-catalog qiskit-ibm-runtime
from qiskit import QuantumCircuit
import numpy as np
import matplotlib.pyplot as plt
import qiskit
from qiskit import qasm2
from qiskit_aer import AerSimulator
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
import qctrlvisualizer as qv
from qiskit_ibm_catalog import QiskitFunctionsCatalog
plt.style.use(qv.get_qctrl_style())
catalog = QiskitFunctionsCatalog(channel="ibm_quantum_platform")
# Access Function
perf_mgmt = catalog.load("q-ctrl/performance-management")
Schritt 1: Klassische Eingaben auf ein Quantenproblem abbilden
In diesem Tutorial illustrieren wir QPE zur Wiederherstellung der Eigenphase eines bekannten Einzel-Qubit-Unitären. Das Unitäre, dessen Phase wir schätzen möchten, ist das auf das Ziel-Qubit angewendete Einzel-Qubit-Phasengate:
Wir bereiten den Eigenzustand vor. Da ein Eigenvektor von