Note
Go to the end to download the full example code.
Antidistinguishability of Circulant States and the Eigenvalue Criterion¶
In this tutorial, we investigate the antidistinguishability of a special class of quantum states known as circulant states. We will numerically verify a necessary and sufficient condition based on the eigenvalues of the states’ Gram matrix, as presented in the paper by Johnston et al. [1].
This tutorial builds upon the concepts introduced in the Quantum state exclusion tutorial.
Eigenvalue Criterion for Circulant States¶
A set of \(n\) pure states is called circulant if its Gram matrix is circulant. A matrix is circulant if each of its rows is a cyclic shift of the row above it. Such sets of states have a high degree of symmetry and appear in various quantum information contexts.
A key result from (Theorem 5.1) [1] provides a simple and exact criterion for determining if a circulant set is antidistinguishable, based solely on the eigenvalues of its Gram matrix.
The theorem states that a set of \(n\) states with a circulant Gram matrix \(G\) is antidistinguishable if and only if its eigenvalues \(\lambda_0 \ge \lambda_1 \ge \cdots \ge \lambda_{n-1}\) satisfy the following inequality:
This gives us a direct analytical test that is much more efficient than
solving a full semidefinite program (SDP). We can use |toqito⟩ to
verify this equivalence.
Numerical Verification¶
Our plan to verify this theorem is as follows:
Generate a random circulant Gram matrix \(G\) using
random_circulant_gram_matrix().Compute its eigenvalues and perform the analytical check using the inequality from the theorem.
Generate the corresponding set of state vectors from \(G\) using
vectors_from_gram_matrix().Perform a numerical check by calling the high-level function
is_antidistinguishable()to directly verify the property.Confirm that the analytical and numerical checks yield the same conclusion.
55 import numpy as np
56
57 from toqito.matrix_ops import vectors_from_gram_matrix
58 from toqito.rand import random_circulant_gram_matrix
59 from toqito.state_props import is_antidistinguishable
60
61 # 1. Define parameters and generate a random circulant Gram matrix.
62 n = 5
63 # Use a seed for reproducibility.
64 seed = 42
65
66 print(f"Generating a random {n}x{n} circulant Gram matrix (seed={seed})...")
67 gram_matrix = random_circulant_gram_matrix(n, seed=seed)
68
69 # 2. Perform the analytical check based on the eigenvalue criterion.
70 # Use 'eigvalsh' for Hermitian matrices; it's faster and returns real eigenvalues.
71 eigenvalues = np.linalg.eigvalsh(gram_matrix)
72 # Sort eigenvalues in descending order.
73 eigenvalues = np.sort(eigenvalues)[::-1]
74 lambda_0 = eigenvalues[0]
75 other_lambdas = eigenvalues[1:]
76
77 # The analytical check from the theorem:
78 lhs = np.sqrt(lambda_0)
79 # The sum of the square roots of the other eigenvalues.
80 # Use np.maximum to avoid numerical precision errors leading to sqrt of tiny negative numbers.
81 rhs = np.sum(np.sqrt(np.maximum(0, other_lambdas)))
82 analytical_is_ad = lhs <= rhs
83
84 print("\nANALYTICAL CHECK (from Theorem 5.1 of Johnston et al.):")
85 print(f" sqrt(λ₀) = {lhs:.4f}")
86 print(f" Σ sqrt(λⱼ) for j>0 = {rhs:.4f}")
87 print(f" Is sqrt(λ₀) <= Σ sqrt(λⱼ)? {analytical_is_ad}")
88 print(f" Conclusion: The set SHOULD BE antidistinguishable: {analytical_is_ad}")
89
90 # 3. Generate states from the Gram matrix for the numerical check.
91 states = vectors_from_gram_matrix(gram_matrix)
92
93 # 4. Perform the numerical check using |toqito⟩'s high-level function.
94 numerical_is_ad = is_antidistinguishable(states)
95
96 print("\nNUMERICAL CHECK (via is_antidistinguishable function):")
97 print(f" Conclusion: The set IS antidistinguishable: {numerical_is_ad}")
98
99 # 5. Verify that both methods agree.
100 print("\n------------------------------------------------------")
101 print(f"Do the analytical and numerical results agree? {analytical_is_ad == numerical_is_ad}")
102 print("------------------------------------------------------")
Generating a random 5x5 circulant Gram matrix (seed=42)...
ANALYTICAL CHECK (from Theorem 5.1 of Johnston et al.):
sqrt(λ₀) = 0.8820
Σ sqrt(λⱼ) for j>0 = 2.7943
Is sqrt(λ₀) <= Σ sqrt(λⱼ)? True
Conclusion: The set SHOULD BE antidistinguishable: True
NUMERICAL CHECK (via is_antidistinguishable function):
Conclusion: The set IS antidistinguishable: True
------------------------------------------------------
Do the analytical and numerical results agree? True
------------------------------------------------------
The results from both the analytical eigenvalue criterion and the numerical
check using |toqito⟩’s helper function agree, providing a concrete verification of Theorem 5.1 from
[1]. This demonstrates how a deep theoretical
result can provide a powerful and efficient shortcut for a problem that would
otherwise require a more computationally intensive optimization.
References¶
Total running time of the script: (0 minutes 0.016 seconds)