qml.estimator.ops.Toffoli¶
- class Toffoli(elbow=None, wires=None)[source]
Bases:
ResourceOperatorResource class for the Toffoli gate.
- Parameters:
wires (Sequence[int] | None) – the subsystem the gate acts on
elbow (str | None) – String identifier to determine if this is a special type of Toffoli gate. Available options are left, right, and None.
- Resources:
If elbow is provided, resources are obtained from Figure 4 of Babbush et al. (2018).
If elbow is None, the resources are obtained from Figure 1 of Jones (2012).
The circuit which applies the Toffoli gate on target wire ‘target’ with control wires (‘c1’, ‘c2’) is defined as:
c1: ─╭●────╭X──T†────────╭X────╭●───────────────╭●─┤ c2: ─│──╭X─│──╭●───T†─╭●─│──╭X─│────────────────╰Z─┤ aux1: ─╰X─│──│──╰X───T──╰X─│──│──╰X────────────────║─┤ aux2: ──H─╰●─╰●──T─────────╰●─╰●──H──S─╭●──H──┤↗├──║─┤ target: ─────────────────────────────────╰X──────║───║─┤ ╚═══╝
Specifically, the resources are defined as nine
CNOTgates, threeHadamardgates, oneCZgate, oneSgate, twoTgates and two adjointTgates.
See also
The corresponding PennyLane operation
Toffoli.Example
The resources for this operation are computed using:
>>> qml.estimator.Toffoli.resource_decomp() [Allocate(2), (9 x CNOT), (3 x Hadamard), (1 x S), (1 x CZ), (2 x T), (2 x Adjoint(T)), Deallocate(2)]
Attributes
Returns a dictionary containing the minimal information needed to compute the resources.
- num_wires = 3¶
- resource_keys = {'elbow'}¶
- resource_params¶
Returns a dictionary containing the minimal information needed to compute the resources.
- Returns:
elbow (str | None): String identifier to determine if this is a special type of Toffoli gate (left or right elbow).
- Return type:
A dictionary containing the resource parameters
Methods
adjoint_resource_decomp(target_resource_params)Returns a list representing the resources for the adjoint of the operator.
controlled_resource_decomp(num_ctrl_wires, ...)Returns a list representing the resources for a controlled version of the operator.
elbow_decomp([elbow])pow_resource_decomp(pow_z, ...)Returns a list representing the resources for an operator raised to a power.
resource_decomp([elbow])Returns a list representing the resources of the operator.
resource_rep([elbow])Returns a compressed representation containing only the parameters of the operator that are needed to compute the resources.
textbook_resource_decomp([elbow])Returns a list representing the resources of the operator.
- classmethod adjoint_resource_decomp(target_resource_params)[source]¶
Returns a list representing the resources for the adjoint of the operator.
- Parameters:
target_resource_params (dict) – A dictionary containing the resource parameters of the target operator.
- Resources:
This operation is self-adjoint, so the resources of the adjoint operation results are same as the originial operation.
- Returns:
A list of
GateCountobjects, where each object represents a specific quantum gate and the number of times it appears in the decomposition.- Return type:
list[
GateCount]
- classmethod controlled_resource_decomp(num_ctrl_wires, num_zero_ctrl, target_resource_params)[source]¶
Returns a list representing the resources for a controlled version of the operator.
- Parameters:
num_ctrl_wires (int) – the number of qubits the operation is controlled on
num_zero_ctrl (int) – the number of control qubits, that are controlled when in the \(|0\rangle\) state
target_resource_params (dict) – A dictionary containing the resource parameters of the target operator.
- Resources:
The resources are expressed as one general
MultiControlledXgate.
- Returns:
A list of
GateCountobjects, where each object represents a specific quantum gate and the number of times it appears in the decomposition.- Return type:
list[
GateCount]
- static elbow_decomp(elbow='left')[source]¶
A function that prepares the resource decomposition obtained from Figure 4 of Babbush et al. (2018).
- Parameters:
elbow (str | None) – One of “left” or “right”. Defaults to “left”.
- Returns:
The resources of decomposing the elbow gates.
- Return type:
list[
GateCount]
- classmethod pow_resource_decomp(pow_z, target_resource_params)[source]¶
Returns a list representing the resources for an operator raised to a power.
- Parameters:
pow_z (int) – the power that the operator is being raised to
target_resource_params (dict) – A dictionary containing the resource parameters of the target operator.
- Resources:
This operation is self-inverse, thus when raised to even integer powers acts like the identity operator and raised to odd powers it produces itself.
- Returns:
A list of
GateCountobjects, where each object represents a specific quantum gate and the number of times it appears in the decomposition.- Return type:
list[
GateCount]
- classmethod resource_decomp(elbow=None)[source]¶
Returns a list representing the resources of the operator.
- Resources:
If elbow is provided, resources are obtained from Figure 4 of arXiv:1805.03662.
If elbow is None, the resources are obtained from Figure 1 of Jones (2012).
The circuit which applies the Toffoli gate on target wire ‘target’ with control wires (‘c1’, ‘c2’) is defined as:
c1: ─╭●────╭X──T†────────╭X────╭●───────────────╭●─┤ c2: ─│──╭X─│──╭●───T†─╭●─│──╭X─│────────────────╰Z─┤ aux1: ─╰X─│──│──╰X───T──╰X─│──│──╰X────────────────║─┤ aux2: ──H─╰●─╰●──T─────────╰●─╰●──H──S─╭●──H──┤↗├──║─┤ target: ─────────────────────────────────╰X──────║───║─┤ ╚═══╝
Specifically, the resources are defined as nine
CNOTgates, threeHadamardgates, oneCZgate, oneSgate, twoTgates and two adjointTgates.
- Returns:
A list of
GateCountobjects, where each object represents a specific quantum gate and the number of times it appears in the decomposition.- Return type:
list[
GateCount]
- classmethod resource_rep(elbow=None)[source]¶
Returns a compressed representation containing only the parameters of the operator that are needed to compute the resources.
- Parameters:
elbow (str | None) – String identifier to determine if this is a special type of Toffoli gate (left or right elbow).
- Returns:
A compressed representation of the operator.
- Return type:
- classmethod textbook_resource_decomp(elbow=None)[source]¶
Returns a list representing the resources of the operator.
- Parameters:
elbow (str | None) – String identifier to determine if this is a special type of Toffoli gate (left or right elbow). Default value is None.
- Resources:
If elbow is provided, resources are obtained from Figure 4 of arXiv:1805.03662.
If elbow is None, the resources are taken from Figure 4.9 of Nielsen, M. A., & Chuang, I. L. (2010).
The circuit is defined as:
0: ───────────╭●───────────╭●────╭●──T──╭●─┤ 1: ────╭●─────│─────╭●─────│───T─╰X──T†─╰X─┤ 2: ──H─╰X──T†─╰X──T─╰X──T†─╰X──T──H────────┤
Specifically, the resources are defined as six
CNOTgates, twoHadamardgates, fourTgates and three adjointTgates.
- Returns:
A list of
GateCountobjects, where each object represents a specific quantum gate and the number of times it appears in the decomposition.- Return type:
list[
GateCount]