110 lines
6.2 KiB
Plaintext
110 lines
6.2 KiB
Plaintext
---
|
||
title: ComputeUncompute
|
||
description: API reference for qiskit.algorithms.state_fidelities.ComputeUncompute
|
||
in_page_toc_min_heading_level: 1
|
||
python_api_type: class
|
||
python_api_name: qiskit.algorithms.state_fidelities.ComputeUncompute
|
||
---
|
||
|
||
# ComputeUncompute
|
||
|
||
<Class id="qiskit.algorithms.state_fidelities.ComputeUncompute" isDedicatedPage={true} github="https://github.com/qiskit/qiskit/tree/stable/0.25/qiskit/algorithms/state_fidelities/compute_uncompute.py" signature="qiskit.algorithms.state_fidelities.ComputeUncompute(sampler, options=None, local=False)" modifiers="class">
|
||
Bases: [`BaseStateFidelity`](qiskit.algorithms.state_fidelities.BaseStateFidelity "qiskit.algorithms.state_fidelities.base_state_fidelity.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` 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\]](https://arxiv.org/pdf/1804.11326.pdf)
|
||
|
||
**Parameters**
|
||
|
||
* **sampler** ([*BaseSampler*](qiskit.primitives.BaseSampler "qiskit.primitives.BaseSampler")) – Sampler primitive instance.
|
||
|
||
* **options** ([*Options*](qiskit.providers.Options "qiskit.providers.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*](https://docs.python.org/3/library/functions.html#bool "(in Python v3.12)")) –
|
||
|
||
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`.
|
||
|
||
**Raises**
|
||
|
||
[**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError "(in Python v3.12)") – If the sampler is not an instance of `BaseSampler`.
|
||
|
||
## Attributes
|
||
|
||
### options
|
||
|
||
<Attribute id="qiskit.algorithms.state_fidelities.ComputeUncompute.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.
|
||
</Attribute>
|
||
|
||
## Methods
|
||
|
||
### create\_fidelity\_circuit
|
||
|
||
<Function id="qiskit.algorithms.state_fidelities.ComputeUncompute.create_fidelity_circuit" signature="create_fidelity_circuit(circuit_1, circuit_2)">
|
||
Combines `circuit_1` and `circuit_2` to create the fidelity circuit following the compute-uncompute method.
|
||
|
||
**Parameters**
|
||
|
||
* **circuit\_1** ([*QuantumCircuit*](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit")) – (Parametrized) quantum circuit.
|
||
* **circuit\_2** ([*QuantumCircuit*](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit")) – (Parametrized) quantum circuit.
|
||
|
||
**Returns**
|
||
|
||
The fidelity quantum circuit corresponding to circuit\_1 and circuit\_2.
|
||
|
||
**Return type**
|
||
|
||
[*QuantumCircuit*](qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit")
|
||
</Function>
|
||
|
||
### run
|
||
|
||
<Function id="qiskit.algorithms.state_fidelities.ComputeUncompute.run" signature="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*](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") *| Sequence\[*[*QuantumCircuit*](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit")*]*) – (Parametrized) quantum circuits preparing $|\psi\rangle$.
|
||
* **circuits\_2** ([*QuantumCircuit*](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") *| Sequence\[*[*QuantumCircuit*](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit")*]*) – (Parametrized) quantum circuits preparing $|\phi\rangle$.
|
||
* **values\_1** (*Sequence\[*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")*] | Sequence\[Sequence\[*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")*]] | None*) – Numerical parameters to be bound to the first set of circuits.
|
||
* **values\_2** (*Sequence\[*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")*] | Sequence\[Sequence\[*[*float*](https://docs.python.org/3/library/functions.html#float "(in Python v3.12)")*]] | 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](qiskit.algorithms.AlgorithmJob "qiskit.algorithms.AlgorithmJob")
|
||
</Function>
|
||
|
||
### update\_default\_options
|
||
|
||
<Function id="qiskit.algorithms.state_fidelities.ComputeUncompute.update_default_options" signature="update_default_options(**options)">
|
||
Update the fidelity’s default options setting.
|
||
|
||
**Parameters**
|
||
|
||
**\*\*options** – The fields to update the default options.
|
||
</Function>
|
||
</Class>
|
||
|