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:

  1. Rz(q, θ) Ry(q, θ) on every qubit (parameterised).

  2. 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. Nonelist(range(n_qubits)).

  • params (ndarray | None) -- 1-D array of rotation angles. None → random initialisation.

返回:

A Circuit object 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 Circuit object.

抛出:

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. Nonelist(range(n_qubits)).

  • params (ndarray | None) -- Variational parameters. None → zeros (no excitation).

返回:

A Circuit object.

抛出:
  • 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:

  1. Rz(q, θ) Ry(q, θ) on every qubit (parameterised).

  2. 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. Nonelist(range(n_qubits)).

  • params (ndarray | None) -- 1-D array of rotation angles. None → random initialisation.

返回:

A Circuit object 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 Circuit object.

抛出:

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. Nonelist(range(n_qubits)).

  • params (ndarray | None) -- Variational parameters. None → zeros (no excitation).

返回:

A Circuit object.

抛出:
  • 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)