1 from __future__
import annotations
8 from squander
import Variational_Quantum_Eigensolver
11 SIGMA_X = sp.sparse.csr_matrix(np.array([[0, 1], [1, 0]], dtype=np.complex128))
12 SIGMA_Y = sp.sparse.csr_matrix(np.array([[0, -1j], [1j, 0]], dtype=np.complex128))
13 SIGMA_Z = sp.sparse.csr_matrix(np.array([[1, 0], [0, -1]], dtype=np.complex128))
15 DEFAULT_ANSATZ =
"HEA" 17 DEFAULT_INNER_BLOCKS = 1
18 PRIMARY_BACKEND =
"density_matrix" 22 return [(index, index + 1)
for index
in range(qbit_num - 1)]
26 n_qubits: int, target: int, pauli: sp.sparse.csr_matrix
27 ) -> sp.sparse.csr_matrix:
29 for qubit
in range(n_qubits):
30 factor = pauli
if qubit == target
else sp.sparse.eye(2, format=
"csr")
31 result = factor
if result
is None else sp.sparse.kron(result, factor, format=
"csr")
39 pauli: sp.sparse.csr_matrix,
40 ) -> sp.sparse.csr_matrix:
42 for qubit
in range(n_qubits):
43 factor = pauli
if qubit
in {first, second}
else sp.sparse.eye(2, format=
"csr")
44 result = factor
if result
is None else sp.sparse.kron(result, factor, format=
"csr")
51 topology: list[tuple[int, int]] |
None =
None,
56 ) -> sp.sparse.csr_matrix:
60 hamiltonian = sp.sparse.csr_matrix(
61 (2**n_qubits, 2**n_qubits), dtype=np.complex128
64 for control, target
in topology:
65 hamiltonian += -0.5 * jx *
_two_pauli_term(n_qubits, control, target, SIGMA_X)
66 hamiltonian += -0.5 * jy *
_two_pauli_term(n_qubits, control, target, SIGMA_Y)
67 hamiltonian += -0.5 * jz *
_two_pauli_term(n_qubits, control, target, SIGMA_Z)
69 for qubit
in range(n_qubits):
72 return hamiltonian.tocsr()
78 "channel":
"local_depolarizing",
80 "after_gate_index": 0,
84 "channel":
"amplitude_damping",
86 "after_gate_index": 2,
90 "channel":
"phase_damping",
92 "after_gate_index": 4,
100 "max_inner_iterations": 4,
102 "convergence_length": 2,
108 "backend": PRIMARY_BACKEND,
109 "qbit_num": qbit_num,
110 "topology": list(topology),
111 "ansatz": DEFAULT_ANSATZ,
112 "layers": DEFAULT_LAYERS,
113 "inner_blocks": DEFAULT_INNER_BLOCKS,
114 "density_noise": [dict(item)
for item
in density_noise],
120 "python": sys.version.split()[0],
121 "numpy": np.__version__,
122 "scipy": sp.__version__,
129 density_noise: list[dict] |
None =
None,
131 requested_density_noise = (
133 if density_noise
is None 134 else [dict(item)
for item
in density_noise]
138 vqe = Variational_Quantum_Eigensolver(
142 backend=PRIMARY_BACKEND,
143 density_noise=requested_density_noise,
145 vqe.set_Ansatz(DEFAULT_ANSATZ)
146 vqe.Generate_Circuit(layers=DEFAULT_LAYERS, inner_blocks=DEFAULT_INNER_BLOCKS)
147 return vqe, hamiltonian, topology
def build_optimizer_config()
def build_open_chain_topology
def build_phase2_continuity_vqe
def build_xxz_hamiltonian
def build_software_metadata()
def build_continuity_density_noise()