measurements.pretty_bad_measurement

Compute the set of pretty bad measurements from an ensemble.

Functions

pretty_bad_measurement(states[, probs])

Return the set of pretty bad measurements from a set of vectors and corresponding probabilities.

Module Contents

measurements.pretty_bad_measurement.pretty_bad_measurement(states, probs=None)

Return the set of pretty bad measurements from a set of vectors and corresponding probabilities.

This computes the “pretty bad measurement” as defined in [1] and is an analogous idea to the “pretty good measurement” from [2]. The “pretty bad measurement” is useful in the context of state exclusion where the pretty good measurement is often used for minimum-error quantum state discrimination.

The pretty bad measurement (PBM) is defined in terms of an offset of the pretty good measurement (PGM). Recall that the PGM is defined as a set of POVMs \((G_1, \ldots, G_n)\) such that

\[G_i = P^{-1/2} \left(p_i \rho_i\right) P^{-1/2} \quad \text{where} \quad P = \sum_{i=1}^n p_i \rho_i.\]

By proxy, the corresponding PBM is defined as a set of POVMs \((B_1, \ldots, B_n)\) where

\[B_i = \frac{1}{n - 1} \left(\mathbb{I} - G_i\right).\]

See also

pretty_good_measurement

Examples

Consider the collection of trine states.

\[u_0 = |0\rangle, \quad u_1 = -\frac{1}{2}\left(|0\rangle + \sqrt{3}|1\rangle\right), \quad \text{and} \quad u_2 = -\frac{1}{2}\left(|0\rangle - \sqrt{3}|1\rangle\right).\]
>>> from toqito.states import trine
>>> from toqito.measurements import pretty_bad_measurement
>>>
>>> states = trine()
>>> probs = [1 / 3, 1 / 3, 1 / 3]
>>> pgm = pretty_bad_measurement(states, probs)
>>> pgm
[array([[0.16666667, 0.        ],
       [0.        , 0.5       ]]), array([[ 0.41666667, -0.14433757],
       [-0.14433757,  0.25      ]]), array([[0.41666667, 0.14433757],
       [0.14433757, 0.25      ]])]

References

[1]

Lane P Hughston, Richard Jozsa, and William K Wootters. A complete classification of quantum ensembles having a given density matrix. Physics Letters A, 183(1):14–18, 1993.

[2]

Caleb McIrvin, Ankith Mohan, and Jamie Sikora. The pretty bad measurement. 2024. arXiv:2403.17252.

Raises:
  • ValueError – If number of vectors does not match number of probabilities.

  • ValueError – If probabilities do not sum to 1.

Parameters:
  • states (list[numpy.ndarray]) – A collection of either states provided as either vectors or density matrices.

  • probs (list[float] | None) – A set of probabilities.

Return type:

list[numpy.ndarray]