qilisdk.digital.ansatz

Attributes

Connectivity

Structure

Classes

Ansatz

Abstract template for parameterised digital circuits.

HardwareEfficientAnsatz

Hardware-efficient ansatz with (layers + 1) single-qubit blocks and layers

TrotterizedSchedule

Trotterized digital time evolution over a schedule of Hamiltonians.

QAOA

Quantum Approximate Optimization Algorithm (QAOA) ansatz.

Module Contents

Connectivity[fuente]
Structure[fuente]
class Ansatz(nqubits: int)[fuente]

Bases: qilisdk.digital.circuit.Circuit, abc.ABC

Abstract 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: Ansatz

Hardware-efficient ansatz with (layers + 1) single-qubit blocks and layers entangling 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, while structure="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 to U1.

  • two_qubit_gate (Type[CZ | CNOT], optional) – Entangling gate class. Defaults to CZ.

Muestra:

ValueError – If layers is 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: Ansatz

Trotterized 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: Ansatz

Quantum 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 layers is not positive.

  • ValueError – If problem_hamiltonian has no qubits.

  • ValueError – If mixer_hamiltonian has no qubits.

  • ValueError – If trotter_steps is not positive.

  • ValueError – If problem_hamiltonian and mixer_hamiltonian have different number of qubits.

  • ValueError – If the length of problem_params does not match layers.

  • ValueError – If the length of mixer_params does not match layers.

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.