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.