qpandalite.algorithmics.ansatz package#
Submodules#
qpandalite.algorithmics.ansatz.hea module#
Hardware-Efficient Ansatz (HEA).
Generates a parameterised circuit with alternating layers of single-qubit rotations and entangling CNOT gates, suitable for NISQ devices.
- qpandalite.algorithmics.ansatz.hea.hea(n_qubits, depth=1, qubits=None, params=None)[源代码]
Build a Hardware-Efficient Ansatz (HEA) circuit.
The ansatz consists of depth repeated layers. Each layer applies:
Rz(q, θ) → Ry(q, θ)on every qubit (parameterised).A ring of CNOT gates:
CNOT(i, (i+1) % n)for i = 0..n-1.
The total number of parameters is
2 * n_qubits * depth.- 参数:
n_qubits (int) -- Number of qubits.
depth (int) -- Number of repeated layers (default 1).
qubits (List[int] | None) -- Qubit indices.
None→list(range(n_qubits)).params (ndarray | None) -- 1-D array of rotation angles.
None→ random initialisation.
- 返回:
A
Circuitobject containing the ansatz gates.- 抛出:
ValueError -- params length does not match
2 * n_qubits * depth.- 返回类型:
Circuit
示例
>>> from qpandalite.algorithmics.ansatz import hea >>> c = hea(n_qubits=4, depth=2) >>> c.max_qubit + 1 4
qpandalite.algorithmics.ansatz.qaoa_ansatz module#
QAOA (Quantum Approximate Optimization Algorithm) ansatz.
Constructs the alternating-operator ansatz used in QAOA for solving combinatorial optimisation problems.
- qpandalite.algorithmics.ansatz.qaoa_ansatz.qaoa_ansatz(cost_hamiltonian, p=1, qubits=None, betas=None, gammas=None)[源代码]
Build a QAOA ansatz circuit.
The ansatz alternates between the cost unitary \(U_C(\gamma) = e^{-i\gamma H_C}\) and the mixer unitary \(U_M(\beta) = e^{-i\beta \sum X_i}\) for p layers.
- 参数:
cost_hamiltonian (List[Tuple[str, float]]) -- List of
(pauli_string, coefficient)tuples. Pauli strings use the format"Z0Z1","X0Y1Z2", etc.p (int) -- Number of QAOA layers.
qubits (List[int] | None) -- Qubit indices.
None→ auto-detect from hamiltonian.betas (ndarray | None) -- Mixer angles, length p.
None→ random.gammas (ndarray | None) -- Cost angles, length p.
None→ random.
- 返回:
A
Circuitobject.- 抛出:
ValueError -- Angle arrays have wrong length.
- 返回类型:
Circuit
示例
>>> from qpandalite.algorithmics.ansatz import qaoa_ansatz >>> H = [("Z0Z1", 1.0), ("Z1Z2", 1.0), ("Z0Z2", 0.5)] >>> c = qaoa_ansatz(H, p=2)
qpandalite.algorithmics.ansatz.uccsd module#
UCCSD (Unitary Coupled-Cluster Singles and Doubles) ansatz.
Implements a simplified UCCSD ansatz for variational quantum chemistry simulations. Each single/double excitation is parameterised by an independent variational angle.
- qpandalite.algorithmics.ansatz.uccsd.uccsd_ansatz(n_qubits, n_electrons, qubits=None, params=None)[源代码]
Build a UCCSD (Unitary Coupled-Cluster Singles and Doubles) ansatz.
Occupies the first n_electrons spin-orbitals and allows single excitations from occupied → virtual and double excitations from pairs of occupied → pairs of virtual.
- 参数:
n_qubits (int) -- Total number of qubits (spin-orbitals).
n_electrons (int) -- Number of occupied spin-orbitals.
qubits (List[int] | None) -- Qubit indices.
None→list(range(n_qubits)).params (ndarray | None) -- Variational parameters.
None→ zeros (no excitation).
- 返回:
A
Circuitobject.- 抛出:
ValueError -- n_electrons > n_qubits.
ValueError -- params length does not match the expected count.
- 返回类型:
Circuit
示例
>>> from qpandalite.algorithmics.ansatz import uccsd_ansatz >>> c = uccsd_ansatz(n_qubits=4, n_electrons=2)
Module contents#
Parameterized ansatz circuits for variational algorithms.
- qpandalite.algorithmics.ansatz.hea(n_qubits, depth=1, qubits=None, params=None)[源代码]
Build a Hardware-Efficient Ansatz (HEA) circuit.
The ansatz consists of depth repeated layers. Each layer applies:
Rz(q, θ) → Ry(q, θ)on every qubit (parameterised).A ring of CNOT gates:
CNOT(i, (i+1) % n)for i = 0..n-1.
The total number of parameters is
2 * n_qubits * depth.- 参数:
n_qubits (int) -- Number of qubits.
depth (int) -- Number of repeated layers (default 1).
qubits (List[int] | None) -- Qubit indices.
None→list(range(n_qubits)).params (ndarray | None) -- 1-D array of rotation angles.
None→ random initialisation.
- 返回:
A
Circuitobject containing the ansatz gates.- 抛出:
ValueError -- params length does not match
2 * n_qubits * depth.- 返回类型:
Circuit
示例
>>> from qpandalite.algorithmics.ansatz import hea >>> c = hea(n_qubits=4, depth=2) >>> c.max_qubit + 1 4
- qpandalite.algorithmics.ansatz.qaoa_ansatz(cost_hamiltonian, p=1, qubits=None, betas=None, gammas=None)[源代码]
Build a QAOA ansatz circuit.
The ansatz alternates between the cost unitary \(U_C(\gamma) = e^{-i\gamma H_C}\) and the mixer unitary \(U_M(\beta) = e^{-i\beta \sum X_i}\) for p layers.
- 参数:
cost_hamiltonian (List[Tuple[str, float]]) -- List of
(pauli_string, coefficient)tuples. Pauli strings use the format"Z0Z1","X0Y1Z2", etc.p (int) -- Number of QAOA layers.
qubits (List[int] | None) -- Qubit indices.
None→ auto-detect from hamiltonian.betas (ndarray | None) -- Mixer angles, length p.
None→ random.gammas (ndarray | None) -- Cost angles, length p.
None→ random.
- 返回:
A
Circuitobject.- 抛出:
ValueError -- Angle arrays have wrong length.
- 返回类型:
Circuit
示例
>>> from qpandalite.algorithmics.ansatz import qaoa_ansatz >>> H = [("Z0Z1", 1.0), ("Z1Z2", 1.0), ("Z0Z2", 0.5)] >>> c = qaoa_ansatz(H, p=2)
- qpandalite.algorithmics.ansatz.uccsd_ansatz(n_qubits, n_electrons, qubits=None, params=None)[源代码]
Build a UCCSD (Unitary Coupled-Cluster Singles and Doubles) ansatz.
Occupies the first n_electrons spin-orbitals and allows single excitations from occupied → virtual and double excitations from pairs of occupied → pairs of virtual.
- 参数:
n_qubits (int) -- Total number of qubits (spin-orbitals).
n_electrons (int) -- Number of occupied spin-orbitals.
qubits (List[int] | None) -- Qubit indices.
None→list(range(n_qubits)).params (ndarray | None) -- Variational parameters.
None→ zeros (no excitation).
- 返回:
A
Circuitobject.- 抛出:
ValueError -- n_electrons > n_qubits.
ValueError -- params length does not match the expected count.
- 返回类型:
Circuit
示例
>>> from qpandalite.algorithmics.ansatz import uccsd_ansatz >>> c = uccsd_ansatz(n_qubits=4, n_electrons=2)