ComputeUncompute¶
- class ComputeUncompute(sampler, *, options=None, local=False, pass_manager=None)[source]¶
Bases:
BaseStateFidelity
This class leverages the sampler primitive to calculate the state fidelity of two quantum circuits following the compute-uncompute method (see [1] for further reference). The fidelity can be defined as the state overlap.
\[|\langle\psi(x)|\phi(y)\rangle|^2\]where \(x\) and \(y\) are optional parametrizations of the states \(\psi\) and \(\phi\) prepared by the circuits
circuit_1
andcircuit_2
, respectively.Reference: [1] Havlíček, V., Córcoles, A. D., Temme, K., Harrow, A. W., Kandala, A., Chow, J. M., & Gambetta, J. M. (2019). Supervised learning with quantum-enhanced feature spaces. Nature, 567(7747), 209-212. arXiv:1804.11326v2 [quant-ph]
- Parameters:
sampler (BaseSampler | BaseSamplerV2) – Sampler primitive instance.
options (Options | None) – Primitive backend runtime options used for circuit execution. The order of priority is: options in
run
method > fidelity’s default options > primitive’s default setting. Higher priority setting overrides lower priority setting.local (bool) –
If set to
True
, the fidelity is averaged over single-qubit projectors\[\hat{O} = \frac{1}{N}\sum_{i=1}^N|0_i\rangle\langle 0_i|,\]instead of the global projector \(|0\rangle\langle 0|^{\otimes n}\). This coincides with the standard (global) fidelity in the limit of the fidelity approaching 1. Might be used to increase the variance to improve trainability in algorithms such as
PVQD
.pass_manager (PassManager | None) – The pass manager to transpile the circuits, if necessary. Defaults to
None
, as some primitives do not need transpiled circuits.
- Raises:
ValueError – If the sampler is not an instance of
BaseSampler
.
Attributes
- options¶
Return the union of estimator options setting and fidelity default options, where, if the same field is set in both, the fidelity’s default options override the primitive’s default setting.
- Returns:
The fidelity default + estimator options.
Methods
- create_fidelity_circuit(circuit_1, circuit_2)[source]¶
Combines
circuit_1
andcircuit_2
to create the fidelity circuit following the compute-uncompute method.- Parameters:
circuit_1 (QuantumCircuit) – (Parametrized) quantum circuit.
circuit_2 (QuantumCircuit) – (Parametrized) quantum circuit.
- Returns:
The fidelity quantum circuit corresponding to circuit_1 and circuit_2.
- Return type:
- run(circuits_1, circuits_2, values_1=None, values_2=None, **options)¶
Runs asynchronously the state overlap (fidelity) calculation between two (parametrized) circuits (first and second) for a specific set of parameter values (first and second). This calculation depends on the particular fidelity method implementation.
- Parameters:
circuits_1 (QuantumCircuit | Sequence[QuantumCircuit]) – (Parametrized) quantum circuits preparing \(|\psi\rangle\).
circuits_2 (QuantumCircuit | Sequence[QuantumCircuit]) – (Parametrized) quantum circuits preparing \(|\phi\rangle\).
values_1 (Sequence[float] | Sequence[Sequence[float]] | None) – Numerical parameters to be bound to the first set of circuits.
values_2 (Sequence[float] | Sequence[Sequence[float]] | None) – Numerical parameters to be bound to the second set of circuits.
options – Primitive backend runtime options used for circuit execution. The order of priority is: options in
run
method > fidelity’s default options > primitive’s default setting. Higher priority setting overrides lower priority setting.
- Returns:
Primitive job for the fidelity calculation. The job’s result is an instance of
StateFidelityResult
.- Return type:
AlgorithmJob