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 over

  • wires (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

resource_keys

resource_params

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

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:

CompressedResourceOp

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]

Contents

Using PennyLane

Release news

Development

API

Internals