1 """Phase-2 continuity VQE builders for partitioning API tests (mirrors benchmarks planner_surface.common).""" 3 from __future__
import annotations
10 from squander
import Variational_Quantum_Eigensolver
13 SIGMA_X = sp.sparse.csr_matrix(np.array([[0, 1], [1, 0]], dtype=np.complex128))
14 SIGMA_Y = sp.sparse.csr_matrix(np.array([[0, -1j], [1j, 0]], dtype=np.complex128))
15 SIGMA_Z = sp.sparse.csr_matrix(np.array([[1, 0], [0, -1]], dtype=np.complex128))
17 DEFAULT_ANSATZ =
"HEA" 19 DEFAULT_INNER_BLOCKS = 1
20 PRIMARY_BACKEND =
"density_matrix" 24 return [(index, index + 1)
for index
in range(qbit_num - 1)]
28 n_qubits: int, target: int, pauli: sp.sparse.csr_matrix
29 ) -> sp.sparse.csr_matrix:
31 for qubit
in range(n_qubits):
32 factor = pauli
if qubit == target
else sp.sparse.eye(2, format=
"csr")
33 result = factor
if result
is None else sp.sparse.kron(result, factor, format=
"csr")
41 pauli: sp.sparse.csr_matrix,
42 ) -> sp.sparse.csr_matrix:
44 for qubit
in range(n_qubits):
45 factor = pauli
if qubit
in {first, second}
else sp.sparse.eye(2, format=
"csr")
46 result = factor
if result
is None else sp.sparse.kron(result, factor, format=
"csr")
53 topology: list[tuple[int, int]] |
None =
None,
58 ) -> sp.sparse.csr_matrix:
62 hamiltonian = sp.sparse.csr_matrix(
63 (2**n_qubits, 2**n_qubits), dtype=np.complex128
66 for control, target
in topology:
67 hamiltonian += -0.5 * jx *
_two_pauli_term(n_qubits, control, target, SIGMA_X)
68 hamiltonian += -0.5 * jy *
_two_pauli_term(n_qubits, control, target, SIGMA_Y)
69 hamiltonian += -0.5 * jz *
_two_pauli_term(n_qubits, control, target, SIGMA_Z)
71 for qubit
in range(n_qubits):
74 return hamiltonian.tocsr()
80 "channel":
"local_depolarizing",
82 "after_gate_index": 0,
86 "channel":
"amplitude_damping",
88 "after_gate_index": 2,
92 "channel":
"phase_damping",
94 "after_gate_index": 4,
102 "max_inner_iterations": 4,
104 "convergence_length": 2,
110 "backend": PRIMARY_BACKEND,
111 "qbit_num": qbit_num,
112 "topology": list(topology),
113 "ansatz": DEFAULT_ANSATZ,
114 "layers": DEFAULT_LAYERS,
115 "inner_blocks": DEFAULT_INNER_BLOCKS,
116 "density_noise": [dict(item)
for item
in density_noise],
122 "python": sys.version.split()[0],
123 "numpy": np.__version__,
124 "scipy": sp.__version__,
131 density_noise: list[dict] |
None =
None,
133 requested_density_noise = (
135 if density_noise
is None 136 else [dict(item)
for item
in density_noise]
140 vqe = Variational_Quantum_Eigensolver(
144 backend=PRIMARY_BACKEND,
145 density_noise=requested_density_noise,
147 vqe.set_Ansatz(DEFAULT_ANSATZ)
148 vqe.Generate_Circuit(layers=DEFAULT_LAYERS, inner_blocks=DEFAULT_INNER_BLOCKS)
149 return vqe, hamiltonian, topology
def build_software_metadata()
def build_open_chain_topology
def build_optimizer_config()
def build_xxz_hamiltonian
def build_phase2_continuity_vqe
def build_continuity_density_noise()