quairkit.operator.gate.custom

The source file of the oracle class and the control oracle class.

class quairkit.operator.gate.custom.Oracle(oracle, system_idx=None, acted_system_dim=2, gate_info=None)

An oracle as a gate.

Parameters:
oracle : Tensor

Unitary oracle to be implemented.

system_idx : Iterable[Iterable[int]] | Iterable[int] | int

Indices of the systems on which the gates are applied.

acted_system_dim : List[int] | int

dimension of systems that this gate acts on. Can be a list of system dimensions or an int representing the dimension of all systems. Defaults to be qubit case.

class quairkit.operator.gate.custom.ControlOracle(oracle, system_idx=None, acted_system_dim=2, gate_info=None)

A controlled oracle as a gate.

Parameters:
oracle : Tensor

Unitary oracle to be implemented.

system_idx : Iterable[Iterable[int]] | Iterable[int] | int

Indices of the systems on which the gates are applied.

acted_system_dim : List[int] | int

dimension of systems that this gate acts on. Can be a list of system dimensions or an int representing the dimension of all systems. Defaults to be qubit case.

class quairkit.operator.gate.custom.ParamOracle(generator, param=None, num_acted_param=1, param_sharing=False, system_idx=None, acted_system_dim=2, gate_info=None)

An parameterized oracle as a gate

Parameters:
generator : Callable[[Tensor], Tensor]

function that generates the oracle.

param : Tensor | float | List[float]

input parameters of quantum parameterized gates. Defaults to None i.e. randomized.

system_idx : Iterable[Iterable[int]] | Iterable[int] | int

indices of the system on which this gate acts on. Defaults to None i.e. list(range(num_systems)).

num_acted_param : int

the number of parameters required for a single operation.

param_sharing : bool

whether all operations are shared by the same parameter set.

acted_system_dim : List[int] | int

dimension of systems that this gate acts on. Can be a list of system dimensions or an int representing the dimension of all systems. Defaults to be qubit case.

gate_info : dict

information of this gate that will be placed into the gate history or plotted by a Circuit. Defaults to None.

class quairkit.operator.gate.custom.UniversalQudits(system_idx, acted_system_dim, param=None, param_sharing=False)

A collection of universal qudit gates. One of such a gate requires \(d^2 - 1\) parameters.

Parameters:
system_idx : Iterable[int] | str | None

Indices of the qubits on which the gates are applied. Defaults to the first qubit.

param : Tensor | float | None

Parameters of the gates. Defaults to None.

param_sharing : bool | None

Whether gates in the same layer share a parameter. Defaults to False.

acted_system_dim : Iterable[int]

dimension of systems that this gate acts on. Can be a list of system dimensions or an int representing the dimension of all systems. Defaults to be qubit case.