Introduction
Graph state is a kind of notation of graphs in a quantum state version. It is widely used in surface coding, one-way quantum computing (also known as measurement-based computing), and probably some other amazing places. I add this type in order to implement the simulation about one-way quantum computing in QuCmp.jl.
New Dependencies
LightGraphs.jl An optimized graphs package for Julia
Implementation
Type structure
The graph state’s data is stored in a LightGraphs.jl Graph
type.
|
|
methods
Convert
Graph state can be converted to a normal state vector. Suppose \(S_1,S_2,S_m\) are the stabilizers of graph state \(|G\rangle\). Define Hamiltonian \(H\)
\[ H = \sum_i S_i \]
The state vector of \(|G\rangle\) can be proved to be the ground state of \(H\). Therefore, the convert
function is defined to use Julia’s function eigs
to calculate the eigen vector of sparse matrix H
, and is normalized by normalize
Stabilizers
Stabilizer group is calculated in this method : stabilizers
, with a return collection of all stabilizers defined by a certain graph structure
LC equivalence
LC equivalence is evaluated by isLCeq
\[ \mathbf{flag} = (\mathbf{1}|\mathbf{\Gamma}\^{A}) \mathbf{P} (\mathbf{1}|\mathbf{\Gamma}\^{B})^T \]
where \(\mathbf{\Gamma}\) is the adjacency matrix of graph A, while \(\mathbf{\Gamma'}\) is the adjacency matrix of graph B, and \(\mathbf{P}\) is defined below
\[ \begin{pmatrix} \mathbf{0} & \mathbf{1} \\\\ \mathbf{1} & \mathbf{0} \end{pmatrix} \]
A is LC-equivalent to B, only when \(\mathbf{flag}\) is a zero matrix.
To-Do and To be decided
I’m note sure whether it is better to include GraphState
in AbstractQuState
or a subtype of AbstractQuVector
in QuBase or just let it be a single type. The problem is I can not convert a given state vector to a GraphState
or stlzState
due to their space are not actually equal.