Skip to main contentIBM Quantum Documentation
You are viewing the API reference for an old version of Qiskit SDK. Switch to latest version

ComputeUncompute

class qiskit.algorithms.state_fidelities.ComputeUncompute(sampler, options=None, local=False)

GitHub(opens in a new tab)

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.

ψ(x)ϕ(y)2|\langle\psi(x)|\phi(y)\rangle|^2

where xx and yy are optional parametrizations of the states ψ\psi and ϕ\phi prepared by the circuits circuit_1 and circuit_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](opens in a new tab)

Parameters

  • sampler (BaseSampler) – 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(opens in a new tab)) –

    If set to True, the fidelity is averaged over single-qubit projectors

O^=1Ni=1N0i0i,\hat{O} = \frac{1}{N}\sum_{i=1}^N|0_i\rangle\langle 0_i|,

instead of the global projector 00n|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.

Raises

ValueError(opens in a new tab) – 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

create_fidelity_circuit(circuit_1, circuit_2)

Combines circuit_1 and circuit_2 to create the fidelity circuit following the compute-uncompute method.

Parameters

Returns

The fidelity quantum circuit corresponding to circuit_1 and circuit_2.

Return type

QuantumCircuit

run

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(opens in a new tab)] | Sequence[Sequence[float(opens in a new tab)]] | None) – Numerical parameters to be bound to the first set of circuits.
  • values_2 (Sequence[float(opens in a new tab)] | Sequence[Sequence[float(opens in a new tab)]] | 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

update_default_options

update_default_options(**options)

Update the fidelity’s default options setting.

Parameters

**options – The fields to update the default options.

Was this page helpful?
Report a bug or request content on GitHub.