channel_metrics.channel_fidelity

Compute the channel fidelity between two quantum channels.

Module Contents

Functions

channel_fidelity(choi_1, choi_2)

Compute the channel fidelity between two quantum channels [1].

channel_metrics.channel_fidelity.channel_fidelity(choi_1, choi_2)

Compute the channel fidelity between two quantum channels [1].

Let \(\Phi : \text{L}(\mathcal{Y}) \rightarrow \text{L}(\mathcal{X})\) and \(\Psi: \text{L}(\mathcal{Y}) \rightarrow \text{L}(\mathcal{X})\) be quantum channels. Then the root channel fidelity defined as

\[\sqrt{F}(\Phi, \Psi) := \text{inf}_{\rho} \sqrt{F}(\Phi(\rho), \Psi(\rho))\]

where \(\rho \in \text{D}(\mathcal{Z} \otimes \mathcal{X})\) can be calculated by means of the following semidefinite program (Proposition 50) in [1],

\[\begin{split}\begin{align*} \text{maximize:} \quad & \lambda \\ \text{subject to:} \quad & \lambda \mathbb{I}_{\mathcal{Z}} \leq \text{Re}\left( \text{Tr}_{\mathcal{Y}} \left( Q \right) \right),\\ & \begin{pmatrix} J(\Phi) & Q^* \\ Q & J(\Psi) \end{pmatrix} \geq 0 \end{align*}\end{split}\]

where \(Q \in \text{L}(\mathcal{Z} \otimes \mathcal{X})\).

Examples

For two identical channels, we should expect that the channel fidelity should yield a value of \(1\).

>>> from toqito.channels import dephasing
>>> from toqito.channel_metrics import channel_fidelity
>>>
>>> # The Choi matrices of dimension-4 for the dephasing channel
>>> choi_1 = dephasing(4)
>>> choi_2 = dephasing(4)
>>> '%.2f' % channel_fidelity(choi_1, choi_2)
'1.00'

Note

You do not need to use ‘%.2f’ % when you use this function.

We use this to format our output such that doctest compares the calculated output to the expected output upto two decimal points only. The accuracy of the solvers can calculate the float output to a certain amount of precision such that the value deviates after a few digits of accuracy.

We can also compute the channel fidelity between two different channels. For example, we can compute the channel fidelity between the dephasing and depolarizing channels.

>>> from toqito.channels import dephasing, depolarizing
>>> from toqito.channel_metrics import channel_fidelity
>>>
>>> # The Choi matrices of dimension-4 for the dephasing and depolarizing channels
>>> choi_1 = dephasing(4)
>>> choi_2 = depolarizing(4)
>>> '%.2f' % channel_fidelity(choi_1, choi_2)
'0.50'

Note

You do not need to use ‘%.2f’ % when you use this function.

We use this to format our output such that doctest compares the calculated output to the expected output upto two decimal points only. The accuracy of the solvers can calculate the float output to a certain amount of precision such that the value deviates after a few digits of accuracy.

References

[1] (1,2,3)

Vishal Katariya and Mark M. Wilde. Geometric distinguishability measures limit quantum channel estimation and discrimination. Quantum Information Processing, Feb 2021. URL: http://dx.doi.org/10.1007/s11128-021-02992-7, doi:10.1007/s11128-021-02992-7.

Raises:
  • ValueError – If matrices are not of equal dimension.

  • ValueError – If matrices are not square.

Parameters:
  • choi_1 (numpy.ndarray) – The Choi matrix of the first quantum channel.

  • choi_2 (numpy.ndarray) – The Choi matrix of the second quantum channel.

Returns:

The channel fidelity between the channels specified by the quantum channels corresponding to the Choi matrices choi_1 and choi_2.

Return type:

float