toqito.state_opt.optimal_clone

toqito.state_opt.optimal_clone(states, probs, num_reps=1, strategy=False)[source]

Compute probability of counterfeiting quantum money [MVW12].

The primal problem for the \(n\)-fold parallel repetition is given as follows:

\[\begin{split}\begin{equation} \begin{aligned} \text{maximize:} \quad & \langle W_{\pi} \left(Q^{\otimes n} \right) W_{\pi}^*, X \rangle \\ \text{subject to:} \quad & \text{Tr}_{\mathcal{Y}^{\otimes n} \otimes \mathcal{Z}^{\otimes n}}(X) = \mathbb{I}_{\mathcal{X}^{\otimes n}},\\ & X \in \text{Pos}( \mathcal{Y}^{\otimes n} \otimes \mathcal{Z}^{\otimes n} \otimes \mathcal{X}^{\otimes n}). \end{aligned} \end{equation}\end{split}\]

The dual problem for the \(n\)-fold parallel repetition is given as follows:

\[\begin{split}\begin{equation} \begin{aligned} \text{minimize:} \quad & \text{Tr}(Y) \\ \text{subject to:} \quad & \mathbb{I}_{\mathcal{Y}^{\otimes n} \otimes \mathcal{Z}^{\otimes n}} \otimes Y \geq W_{\pi} \left( Q^{\otimes n} \right) W_{\pi}^*, \\ & Y \in \text{Herm} \left(\mathcal{X}^{\otimes n} \right). \end{aligned} \end{equation}\end{split}\]

Examples

Wiesner’s original quantum money scheme [Wies83] was shown in [MVW12] to have an optimal probability of 3/4 for succeeding a counterfeiting attack.

Specifically, in the single-qubit case, Wiesner’s quantum money scheme corresponds to the following ensemble:

\[\left\{ \left( \frac{1}{4}, |0\rangle \right), \left( \frac{1}{4}, |1\rangle \right), \left( \frac{1}{4}, |+\rangle \right), \left( \frac{1}{4}, |-\rangle \right) \right\},\]

which yields the operator

\[\begin{equation} Q = \frac{1}{4} \left(|000 \rangle \langle 000| + |111 \rangle \langle 111| + |+++ \rangle + \langle +++| + |--- \rangle \langle ---| \right). \end{equation}\]

We can see that the optimal value we obtain in solving the SDP is 3/4.

>>> from toqito.state_opt import optimal_clone
>>> from toqito.states import basis
>>> import numpy as np
>>> e_0, e_1 = basis(2, 0), basis(2, 1)
>>> e_p = (e_0 + e_1) / np.sqrt(2)
>>> e_m = (e_0 - e_1) / np.sqrt(2)
>>>
>>> states = [e_0, e_1, e_p, e_m]
>>> probs = [1 / 4, 1 / 4, 1 / 4, 1 / 4]
>>> wiesner = optimal_clone(states, probs)
0.749999999967631

References

[MVW12] (1,2)

Abel Molina, Thomas Vidick, and John Watrous. “Optimal counterfeiting attacks and generalizations for Wiesner’s quantum money.” Conference on Quantum Computation, Communication, and Cryptography. Springer, Berlin, Heidelberg, 2012. https://arxiv.org/abs/1202.4010

[Wies83]

Stephen Wiesner “Conjugate coding.” ACM Sigact News 15.1 (1983): 78-88. https://dl.acm.org/doi/pdf/10.1145/1008908.1008920

Parameters:
  • states – A list of states provided as either matrices or vectors.

  • probs – Respective list of probabilities each state is selected.

  • num_reps – Number of parallel repetitions to perform.

  • strategy – Boolean that denotes whether to return strategy.

Returns:

The optimal probability with of counterfeiting quantum money.