תחילת העבודה עם קומפילציה קוונטית מקורבת באמצעות רשתות טנסור (AQC-Tensor)
גרסאות חבילות
הקוד בדף זה פותח עם הדרישות הבאות. מומלץ להשתמש בגרסאות אלה או בגרסאות חדשות יותר.
qiskit[all]~=2.3.0
qiskit-aer~=0.17
qiskit-addon-utils~=0.3.0
qiskit-addon-aqc-tensor[aer,quimb-jax]~=0.2.0; sys.platform != 'darwin'
scipy~=1.16.3
מדריך זה מדגים דוגמה פשוטה לתחילת העבודה עם AQC-Tensor. בדוגמה זו, תיקח מעגל Trotter המדמה את האבולוציה של מודל Ising בשדה רוחבי ותשתמש בשיטת AQC-Tensor כדי לצמצם את עומק המעגל המתקבל. בנוסף, דוגמה זו דורשת את חבילת qiskit-addon-utils למחולל הבעיה, את qiskit-aer לסימולציית רשת הטנסור, ואת scipy לאופטימיזציה של הפרמטרים.
כדי להתחיל, נזכיר שה-Hamiltonian של מודל Ising בשדה רוחבי הוא בצורה
כאשר נניח תנאי גבול מחזוריים, כלומר עבור מתקבל , ו- הוא עוצמת הצימוד בין שני אתרים ו- היא עוצמת השדה המגנטי החיצוני.
קטע הקוד הבא ייצור את ה-Hamiltonian של שרשרת Ising בת 10 אתרים עם תנאי גבול מחזוריים.
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-addon-aqc-tensor qiskit-addon-utils qiskit-aer scipy
from qiskit.transpiler import CouplingMap
from qiskit_addon_utils.problem_generators import generate_xyz_hamiltonian
from qiskit.synthesis import SuzukiTrotter
from qiskit_addon_utils.problem_generators import (
generate_time_evolution_circuit,
)
from qiskit_addon_aqc_tensor import generate_ansatz_from_circuit
from qiskit_addon_aqc_tensor.simulation import tensornetwork_from_circuit
from qiskit_addon_aqc_tensor.simulation import compute_overlap
from qiskit_addon_aqc_tensor.objective import MaximizeStateFidelity
from qiskit_aer import AerSimulator
from scipy.optimize import OptimizeResult, minimize
# Generate some coupling map to use for this example
coupling_map = CouplingMap.from_heavy_hex(3, bidirectional=False)
# Choose a 10-qubit circle on this coupling map
reduced_coupling_map = coupling_map.reduce(
[0, 13, 1, 14, 10, 16, 4, 15, 3, 9]
)
# Get a qubit operator describing the Ising field model
hamiltonian = generate_xyz_hamiltonian(
reduced_coupling_map,
coupling_constants=(0.0, 0.0, 1.0),
ext_magnetic_field=(0.4, 0.0, 0.0),
)