Date

In quantum information and quantum computing, a cluster state is a type of highly entangled state of multiple qubits. Cluster states are generated in lattices of qubits with Ising type interactions. A cluster C is a connected subset of a d-dimensional lattice, and a cluster state is a pure state of the qubits located on C. Another way of thinking of cluster states is as a particular instance of graph states, where the underlying graph is a connected subset of a d-dimensional lattice. Cluster states are especially useful in the context of the one-way quantum computer.

## Cluster State Hamiltion¶

If no such a site $a$, we set $Z_a=1$.

$$U=\prod_a \left[1-\frac{(1+Z_{a})(1-Z_{a+1})}{2}\right]=\prod_a U_a,\quad U=U^{-1}$$\begin{aligned} V_a&\mdef U_{a-1}U_a=\frac{(1-Z_{a-1})+(1+Z_{a-1})Z_a}{2}\cdot \frac{(1+Z_{a+1})-(1-Z_{a+1})Z_a}{2}\\ &=Z_{a-}+Z_{a+}Z_a, \qquad Z_{a\pm}\mdef\frac{Z_{a+1}\pm Z_{a-1}}{2}\end{aligned}

For high dimension, we should mark the $U$ by a $n$D coordinate as well as an axis: $U_{a, b|c}$. For site $a, b$, the $V$ will be $$V_{a,b}=U_{a,b|0}U_{a-1,b|0}U_{a,b|1}U_{a,b-1|1}=V_{a,b|0}V_{a,b|1},\quad V_{a,b|i}=Z_{a,b|i-}+Z_{a,b|i+}Z_a$$

$Z_{a\pm}$ satisfy $$Z_{a+}Z_{a-}=Z_{a-}Z_{a+}=0, \quad Z_{a+}^2-Z_{a-}^2=Z_{a-1}Z_{a+1}, \quad Z_{a+}^2+Z_{a-}^2=1,\quad [Z_{a\pm}, X_a^i]=0$$

$$H_0=-\sum_a X_a$$

For the cluster state, its Hamiltonian is \begin{aligned} H&=UH_0U^{-1}=-\sum_a UX_aU=-\sum_a V_aX_aV_a\\ &=-\sum_a (Z_{a-}+Z_aZ_{a-})X_a(Z_{a-}+Z_aZ_{a+})\\ &=-\sum_a Z_{a-}^2X_a+Z_{a+}^2Z_aX_aZ_a\\ &=-\sum_a (Z_{a-}^2-Z_{a+}^2)X_a\\ &=\sum_a Z_{a-1}X_aZ_{a+1}\end{aligned}

As a generalization, we can get $$H=\sum_{c} X_c\prod_{d\in n(c)} Z_d$$

If we make a global $\phi=\pi/2$ rotation $$\Omega=\prod_a\exp\left(-\frac{\ii \phi Y_a}{2}\right),\quad z\rightarrow x, x\rightarrow -z$$ then $$H'=\Omega H\Omega^{-1}=-\sum_a X_{a-1}Z_aX_{a+1}$$

## The Property of Density Matrix¶

Define $$P_i{\mdef}X_{i-1}Z_iX_{i+1},\quad Q_i{\mdef}X_{i-1}X_{i+1}$$

Suppose $\ket{\phi_i}$ and $\ket{\psi_j}$ are eigenstates of odd $Z_k$ and even $Z_k$, respectively. For each state pair $\ket{\phi_i}, \ket{\phi_j}$ with same eigenvalue of $\prod_i Z_{2i+1}$, there exist a transformation consists of $Q_i$ at even sites: $$\ket{\phi_i}=\prod_{a\in S_{ij}} Q_a\ket{\phi_j}$$ Sites $S_{ij}$ is determined by the two wave functions. The $\mathrm{card}(S_{ij})$ is nonzero as long as $\ket{\phi_i}\neq\ket{\phi_j}$

$$\ket{\Psi}=\sum_{i,j}c_{ij} \ket{\phi_i}\ket{\psi_j}$$$$\prod_{a\in S_{ij}} P_a \ket{\phi_i}\ket{\psi_k}= \prod_{a\in S_{ij}} Q_aZ_a\ket{\phi_i}\ket{\psi_k}=\ket{\phi_j}\prod_{a\in S_{ij}} Z_a\ket{\psi_k}$$$$\rho_{\phi}=\tr_{\psi}{\ket{\Psi}\bra{\Psi}}=\sum_{i,j}\ket{\phi_i}\bra{\phi_j}\sum_k c_{ik}c^*_{jk}\braket{\psi_k|\psi_k}$$\begin{aligned} \braket{\phi_j|\rho_{\phi}|\phi_i}&=\braket{\phi_j|\tr{\left[\prod_{a\in S_{ij}} P_a\ket{\Psi}\bra{\Psi}\right]}|\phi_i}\\ &=\sum_k |c_{jk}|^2\braket{\psi_k|\prod_{a\in S_{ij}} Z_a|\psi_k}\\ &=C\sum_k \prod_{a\in S_{ij}}z_a(\psi_k)\\ &=\delta_{ij}\end{aligned}

The last step holds as long as there exist a even site $a\in S_{ij}$ which has a neighbor $b\notin S_{ij}$. The condition is equivalent to $\phi_i\neq\phi_j$. In this case, there exist a conjugate state $\psi'_k$ which is flipped in the $a$th bit and cancels out the contribution of $\psi_k$.

## Code for 1D Cluster state¶

In [5]:
tosign=lambda x:"+" if x>0 else "-"
class State:
'''Class to save a quantum state'''
sep_print=True
def __init__(self, ln=4, sign=1):
'''
ln    list or the length of the all 1 list
sign     sign
'''
self.sign=sign
if isinstance(ln, int):
self.n=ln
self.l=tuple(1 for i in range(ln))
else:
self.n=len(ln)
self.l=tuple(ln)
self.l2=self.l[0::2]+self.l[1::2]
def mutate(self, i):
'''Apply operator P_i to get a new state'''
l=list(self.l)
l[(i-1)%self.n]*=-1
l[(i+1)%self.n]*=-1
return State(l, self.sign*l[i%self.n])
def __str__(self):
'''Convert to human readable wave function'''
if self.sep_print:
ls=[tosign(i) for i in self.l2]
s=''.join(ls)
return "%s|%s⟩⊗|%s⟩"%(tosign(self.sign), s[:self.n//2], s[self.n//2:])
else:
ls=[tosign(i) for i in self.l]
s=''.join(ls)
return "%s|%s⟩"%(tosign(self.sign), s)
def __repr__(self):
return "State({0}, {1})".format(self.l, self.sign)
def __hash__(self):
return hash(self.l2)
def __eq__(self, rhs):
return self.l2==rhs.l2
def __lt__(self, rhs):
return self.l2<rhs.l2

def cluster_state(L):
'''Generate cluster for length L, L should be even.
Behavior of odd number is not guaranteed'''
stable=set()         # Stable set
son=set([State(L)])  # Ongoing Set
while son:
snew=set()       # New Set
for s in son:
for i in range(L):
tmp=s.mutate(i)
if (tmp not in stable) and (tmp not in son):
stable.update(son)
son=snew
return sorted(stable, reverse=True)

In [7]:
for i in cluster_state(6):
print(i)

+|+++⟩⊗|+++⟩
+|+++⟩⊗|+--⟩
+|+++⟩⊗|-+-⟩
+|+++⟩⊗|--+⟩
+|+--⟩⊗|+++⟩
-|+--⟩⊗|+--⟩
+|+--⟩⊗|-+-⟩
-|+--⟩⊗|--+⟩
+|-+-⟩⊗|+++⟩
-|-+-⟩⊗|+--⟩
-|-+-⟩⊗|-+-⟩
+|-+-⟩⊗|--+⟩
+|--+⟩⊗|+++⟩
+|--+⟩⊗|+--⟩
-|--+⟩⊗|-+-⟩
-|--+⟩⊗|--+⟩


## Schmidt Decomposition¶

Assume

\begin{aligned} \ket{\Psi}&=\sum C_{ij} \ket{\phi_i}\ket{\phi_j}\\ &=\sum_i \ket{\phi_i}\sum_j C_{ij}\ket{\phi_j}\\ &=\sum_i \ket{\phi_i}\ket{\psi_i},\quad \ket{\psi_i}=\sum_j C_{ij}\ket{\phi_j}=\braket{\phi_i|\Psi} \end{aligned}

We want to prove the orthogonality $\braket{\psi_i|\psi_j}=\delta_{ij}$, i.e.

\begin{aligned} \sum_k C^*_{lk}\bra{\phi_k} \sum_j C_{ij}\ket{\phi_j}\equiv \rho_{R}=\delta_{ij} \end{aligned}

It is proved at The Character of Density Matrix. So naturally, $\ket{\phi_i}, \ket{\psi_i}=\braket{\phi_i|\Psi}$ forms a Schmidt decomposition of

$$\ket{\Psi}\propto\sum \ket{\phi_i}\ket{\psi_i}$$