Skip to content

Unambiguous state discrimination #22

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

atg205
Copy link
Contributor

@atg205 atg205 commented Apr 28, 2025

Sometimes Hypatia is not able to solve the SDP (even though it should be). In that case we return the failure state and a warning message is shown .

Philipp Hanussek added 3 commits April 24, 2025 12:09
final adjustments

final

unambiguous state disc
@atg205 atg205 changed the title Unmabiguous state discrimination Unamabiguous state discrimination Apr 28, 2025
@atg205 atg205 changed the title Unamabiguous state discrimination Unambiguous state discrimination Apr 28, 2025
@araujoms
Copy link
Collaborator

This is not Hypatia's fault; this SDP is not strictly feasible, so you'll always run into numerical problems. I'll have to think about whether it's possible to reformulate it in a strictly feasible way.

Comments about the code:

  1. Don't do something arbitrary in case of error, no trying the dual or returning some specific error thing. Just throw an exception with the code JuMP.is_solved_and_feasible(model) || throw(error(JuMP.raw_status(model))), like we do in other SDPs.
  2. I see lots of concrete types: Float64, Float32, ComplexF64, etc. Don't use them, the code must be generically typed. Use T or _solver_type(T).
  3. tr(A' * B) is a rather inefficient representation for the Hilbert-Schmidt inner product, because it includes an unnecessary matrix multiplication. Use instead dot(A, B).
  4. Don't create a default empty q just to overwrite it later, you can create the correct q already in the default argument. And please create it with the correct type.
  5. Don't use the constraint sum(E) == I. Instead create only the first N-1 POVM elements as variables and define the last as identity minus their sum, like I did in my state discrimination tutorial.
  6. The expression "positive operator-valued measure" is only of historical interest. Never use it. The name of the thing is POVM.
  7. The name of the function should be descriptive, something like state_discrimination_unambiguous.

@araujoms
Copy link
Collaborator

It's possible to make it strictly feasible (and thus reliable). It's a bit of work, though. I don't know how much time you want to spend on this.

First consider the case where the input is a set of pure states $\{|\psi_i\rangle\}_{i=0}^{N-1}$. If they are linearly dependent, throw an exception. Else, let $L$ be the vector space spanned by them. For every $k$ there exists a unique vector $|\phi_k\rangle \in L$ such that $\langle \phi_k | \psi_i \rangle = 0$ for all $i \neq k$. We can take w.l.o.g. $E_k = \alpha_k |\phi_k\rangle \langle \phi_k|$. Then the SDP is strictly feasible, and we only have $N$ real variables $\alpha_k$ to worry about.

Now consider the case where the input is a set of (possibly) mixed states $\{\rho_i\}_{i=0}^{N-1}$. You need $\mathrm{tr}(E_k \rho_i) = 0$ for all $i \neq k$. Let then $L_k$ be the vector space spanned be the support of these states. $E_k$ must then be supported on its orthogonal complement $L_k^\perp$. Let then $\{|\phi^i_k \rangle\} _{i=0}^{d_k-1}$ be a basis for $L_k^\perp$, and define the isometry $V_k = \sum _{i=0}^{d_k-1} |\phi^i_k \rangle \langle i|$. Then $E_k = V_k e_k V_k^\dagger$ for some $d_k \times d_k$ positive semidefinite matrix $e_k$. If you then declare the $e_k$ as variables and write the program in terms of them the SDP will be strictly feasible and will run reliably.

@atg205
Copy link
Contributor Author

atg205 commented May 1, 2025

Thank you very much for the suggestion, I will see if I manage to implement it next week. I will let you know.

@atg205
Copy link
Contributor Author

atg205 commented May 6, 2025

I still have some problems understanding why it is unfeasible. Isn't it that in the case where it is impossible to distinguish unambiguously between the two states, the failure state M_n is returned (=I)?

@araujoms
Copy link
Collaborator

araujoms commented May 6, 2025

It is feasible. It is not strictly feasible, which means it can be solved, but not reliably. Strict feasibility means that there must exist a point which is in the interior of the cones and respects all the equality constraints. In the case of this SDP, it means that there must exist full rank $E_i$ that respect the constraints $\mathrm{tr}(E_i \rho_j) = 0$. But this is not possible, because these constraints imply that for all $|\psi\rangle$ in the support of $\rho_j$ we must have $E_i |\psi\rangle = 0$, that is, $|\psi\rangle$ is a null eigenvector of $E_i$, and thus $E_i$ can't be full rank.

See https://arxiv.org/abs/2302.03529 and https://arxiv.org/abs/1706.03705

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants