qml.estimator.templates.Select¶
- class Select(ops, wires=None)[source]
Bases:
ResourceOperator
Resource class for the Select gate.
- Parameters:
ops (list[
ResourceOperator
]) – the set of operations to select overwires (Sequence[int], None) – The wires the operation acts on. If
ops
provide wire labels, then this is just the set of control wire labels. Otherwise, it also includes the target wire labels of the selected operators.
- Resources:
The resources are based on the analysis in Babbush et al. (2018) section III.A, ‘Unary Iteration and Indexed Operations’. See Figures 4, 6, and 7.
See also
The corresponding PennyLane operation
Select
.Example
The resources for this operation are computed using:
>>> import pennylane.estimator as qre >>> ops = [qre.X(), qre.Y(), qre.Z()] >>> select_op = qre.Select(ops=ops) >>> print(qre.estimate(select_op)) --- Resources: --- Total wires: 4 algorithmic wires: 3 allocated wires: 1 zero state: 1 any state: 0 Total gates : 24 'Toffoli': 2, 'CNOT': 7, 'X': 4, 'Z': 1, 'S': 2, 'Hadamard': 8
Attributes
Returns a dictionary containing the minimal information needed to compute the resources.
- resource_keys = {'cmpr_ops', 'num_wires'}¶
- resource_params¶
Returns a dictionary containing the minimal information needed to compute the resources.
- Returns:
- A dictionary containing the resource parameters:
cmpr_ops (list[
CompressedResourceOp
]): The list of operators, in the compressed representation, to be applied according to the selected qubits.num_wires (int): The number of wires the operation acts on. This is a sum of the control wires (\(\lceil(log_{2}(N))\rceil\)) required and the number wires targeted by the
ops
.
- Return type:
dict
Methods
resource_decomp
(cmpr_ops, num_wires)The resources for a select implementation taking advantage of the unary iterator trick.
resource_rep
(cmpr_ops[, num_wires])Returns a compressed representation containing only the parameters of the Operator that are needed to compute a resource estimation.
textbook_resources
(cmpr_ops)Returns a list representing the resources of the operator.
- classmethod resource_decomp(cmpr_ops, num_wires)[source]¶
The resources for a select implementation taking advantage of the unary iterator trick.
- Parameters:
cmpr_ops (list[
CompressedResourceOp
]) – The list of operators, in the compressed representation, to be applied according to the selected qubits.num_wires (int) – The number of wires the operation acts on. This is a sum of the control wires (\(\lceil(log_{2}(N))\rceil\)) required and the number wires targeted by the
ops
.
- Resources:
The resources are based on the analysis in Babbush et al. (2018) section III.A, ‘Unary Iteration and Indexed Operations’. See Figures 4, 6, and 7.
Note: This implementation assumes we have access to \(n - 1\) additional work qubits, where \(n = \left\lceil log_{2}(N) \right\rceil\) and \(N\) is the number of batches of unitaries to select.
- Returns:
A list of GateCount objects, 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(cmpr_ops, num_wires=None)[source]¶
Returns a compressed representation containing only the parameters of the Operator that are needed to compute a resource estimation.
- Parameters:
cmpr_ops (list[
CompressedResourceOp
]) – The list of operators, in the compressed representation, to be applied according to the selected qubits.num_wires (int) – An optional parameter representing the number of wires the operation acts on. This is a sum of the control wires (\(\lceil(log_{2}(N))\rceil\)) required and the number of wires targeted by the
ops
.
- Returns:
the operator in a compressed representation
- Return type:
- static textbook_resources(cmpr_ops)[source]¶
Returns a list representing the resources of the operator. Each object in the list represents a gate and the number of times it occurs in the circuit.
- Parameters:
cmpr_ops (list[
CompressedResourceOp
]) – The list of operators, in the compressed representation, to be applied according to the selected qubits.num_wires (int) – The number of wires the operation acts on. This is a sum of the control wires (\(\lceil(log_{2}(N))\rceil\)) required and the number wires targeted by the
ops
.
- Resources:
The resources correspond directly to the definition of the operation. Specifically, for each operator in
cmpr_ops
, the cost is given as a controlled version of the operator controlled on the associated bitstring.
- Returns:
A list of GateCount objects, where each object represents a specific quantum gate and the number of times it appears in the decomposition.
- Return type:
list[
GateCount
]