qilisdk.digital.ansatz
Attributes
Classes
Abstract template for parameterised digital circuits. |
|
Hardware-efficient ansatz with (layers + 1) single-qubit blocks and |
|
Trotterized digital time evolution over a schedule of Hamiltonians. |
|
Quantum Approximate Optimization Algorithm (QAOA) ansatz. |
Module Contents
- Connectivity[fuente]
- Structure[fuente]
- class Ansatz(nqubits: int)[fuente]
Bases:
qilisdk.digital.circuit.Circuit,abc.ABCAbstract template for parameterised digital circuits.
- Parámetros:
nqubits (
int) – Number of logical qubits in the circuit.
- class HardwareEfficientAnsatz(nqubits: int, layers: int = 1, connectivity: Connectivity = 'linear', structure: Structure = 'grouped', one_qubit_gate: Type[qilisdk.digital.gates.U1 | qilisdk.digital.gates.U2 | qilisdk.digital.gates.U3] = U1, two_qubit_gate: Type[qilisdk.digital.gates.CZ | qilisdk.digital.gates.CNOT] = CZ)[fuente]
Bases:
AnsatzHardware-efficient ansatz with (layers + 1) single-qubit blocks and
layersentangling blocks.Ejemplo
from qilisdk.digital.ansatz import HardwareEfficientAnsatz from qilisdk.digital.gates import U3, CNOT ansatz = HardwareEfficientAnsatz( nqubits=4, layers=3, connectivity="linear", structure="grouped", one_qubit_gate=U3, two_qubit_gate=CNOT, ) ansatz.draw()Notas
structure="grouped"applies full single-qubit layers followed by entanglers, whilestructure="interposed"alternates single-qubit updates with entanglers per qubit. No measurements are added automatically.- Parámetros:
nqubits (
int) – Number of qubits in the circuit.layers (
int, optional) – Number of entangling layers. Defaults to 1.connectivity (
Connectivity, optional) – Topology used for two-qubit gates. Accepts"linear","circular","full", or an explicit list of tuples defining the edges. Defaults to"linear".structure (
Structure, optional) – Layout of single- and two-qubit gates within each layer."grouped"applies all single-qubit gates before the entangler block;"interposed"interleaves them per qubit. Defaults to"grouped".one_qubit_gate (
Type[U1 | U2 | U3], optional) – Parameterised single-qubit gate class. Defaults toU1.two_qubit_gate (
Type[CZ | CNOT], optional) – Entangling gate class. Defaults toCZ.
- Muestra:
ValueError – If
layersis negative or the connectivity definition is invalid.
- property layers: int[fuente]
Number of entangling layers.
- property connectivity: tuple[tuple[int, int], Ellipsis][fuente]
Entangling edges as an immutable tuple of (control, target) pairs.
- property structure: Structure[fuente]
Declared structure (“grouped” or “interposed”).
- property one_qubit_gate: type[qilisdk.digital.gates.U1 | qilisdk.digital.gates.U2 | qilisdk.digital.gates.U3][fuente]
Single-qubit gate class used for parameterized layers (U1, U2, or U3).
- property two_qubit_gate: type[qilisdk.digital.gates.CZ | qilisdk.digital.gates.CNOT][fuente]
Two-qubit entangling gate class (CZ or CNOT).
- class TrotterizedSchedule(schedule: qilisdk.analog.schedule.Schedule, trotter_steps: int = 1)[fuente]
Bases:
AnsatzTrotterized digital time evolution over a schedule of Hamiltonians.
The circuit applies an optional state initialization and then evolves under each Hamiltonian slice in the schedule using a fixed number of Trotter steps.
Ejemplo
from qilisdk.digital.ansatz import TrotterizedSchedule from qilisdk.analog.schedule import Schedule ansatz = TrotterizedSchedule( schedule=Schedule(...), trotter_steps=2, ) ansatz.draw()- Parámetros:
schedule (
Schedule) – Time-ordered schedule of Hamiltonians to evolve under.trotter_steps (
int, optional) – Number of Trotter steps per schedule slice. Defaults to 1. prepended before time evolution. Defaults to None.
- class QAOA(problem_hamiltonian: qilisdk.analog.hamiltonian.Hamiltonian, layers: int = 1, mixer_hamiltonian: qilisdk.analog.hamiltonian.Hamiltonian | None = None, trotter_steps: int = 1, problem_params: list[float] | None = None, mixer_params: list[float] | None = None)[fuente]
Bases:
AnsatzQuantum Approximate Optimization Algorithm (QAOA) ansatz.
This ansatz alternates between applying a problem Hamiltonian and a mixer Hamiltonian, parameterized by angles gamma and alpha, respectively.
By default, the mixer Hamiltonian is chosen to be a transverse field (X gates on all qubits).
Ejemplo
from qilisdk.digital.ansatz import QAOA ansatz = QAOA( problem_hamiltonian=your_problem_hamiltonian, layers=3, mixer_hamiltonian=None, trotter_steps=1, problem_params=[0.1, 0.2, 0.3], mixer_params=[0.4, 0.5, 0.6], ) ansatz.draw()- Parámetros:
problem_hamiltonian (
Hamiltonian) – The problem Hamiltonian encoding the cost function.layers (
int, optional) – Number of QAOA layers. Defaults to 1.mixer_hamiltonian (
Hamiltonian, optional) – The mixer Hamiltonian. Defaults to X mixer.trotter_steps (
int, optional) – Number of Trotter steps for Hamiltonian evolution, if the Hamiltonian is made of non-commuting terms. Defaults to 1.problem_params (
list[float], optional) – Initial parameter values for the problem Hamiltonian evolution angles. Defaults to all zeros.mixer_params (
list[float], optional) – Initial parameter values for the mixer Hamiltonian evolution angles. Defaults to all zeros.
- Muestra:
ValueError – If
layersis not positive.ValueError – If
problem_hamiltonianhas no qubits.ValueError – If
mixer_hamiltonianhas no qubits.ValueError – If
trotter_stepsis not positive.ValueError – If
problem_hamiltonianandmixer_hamiltonianhave different number of qubits.ValueError – If the length of
problem_paramsdoes not matchlayers.ValueError – If the length of
mixer_paramsdoes not matchlayers.
- property layers: int[fuente]
Number of entangling layers.
- property problem_hamiltonian: qilisdk.analog.hamiltonian.Hamiltonian[fuente]
The problem Hamiltonian encoding the cost function.
- property mixer_hamiltonian: qilisdk.analog.hamiltonian.Hamiltonian[fuente]
The mixer Hamiltonian used.