W informatyce kwantowej używamy specjalnej notacji do zapisu wektorów, zwanej notacją Diraca. W tej notacji wektor zapisujemy między symbolami \( | \) oraz \( \rangle \). Przykładowo, wektor \( v \) zapiszemy jako \( |v\rangle \). Dzięki tej notacji możemy łatwo przedstawiać stany kwantowe.
Dla czterowymiarowej przestrzeni, standardowa baza w notacji Diraca wygląda następująco: \(\)
\begin{align*}
|0\rangle = \begin{bmatrix}
1\\0\\0\\0
\end{bmatrix}, \quad
|1\rangle = \begin{bmatrix}
0\\1\\0\\0
\end{bmatrix}, \quad
|2\rangle = \begin{bmatrix}
0\\0\\1\\0
\end{bmatrix}, \quad
|3\rangle = \begin{bmatrix}
0\\0\\0\\1
\end{bmatrix}.
\end{align*}
Widzimy tutaj sposób, w jaki ponumerowaliśmy poszczególne wektory liczbami od \( 0 \) do \( 3 \). Możemy również używać zapisu systemu binarnego, np.
\begin{align*}
|6\rangle = |101\rangle.
\end{align*}
Wektor \( |v\rangle \) nazywamy ,,ketem”, a jego odmiana \( \langle v| \) to ,,bra”. Różnica polega na tym, że wektor \( |v\rangle \) ma wymiar \( n \times 1 \), a wektor \( \langle v| \) ma wymiar \( 1 \times n \), czyli jest transponowany. Takie obrócone wektory używa się chociażby do obliczania iloczynu skalarnego, który pozwala sprawdzić, jak podobne do siebie są dwa wektory. Iloczyn skalarny obliczamy w sposób przedstawiony poniżej:
\begin{align*}
\langle u | v \rangle = \begin{bmatrix} u_1 , u_2 , \dots , u_n \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \\ \vdots \\ v_n \end{bmatrix} = u_1 v_1 + u_2 v_2 + \cdots + u_n v_n.
\end{align*}
Przykładowo, dla dwuwymiarowych wektorów z konkretnymi wartościami iloczyn skalarny wygląda w następujący sposób:
\begin{align*}
\begin{bmatrix} 4 , 3 \end{bmatrix} \begin{bmatrix} -2 \\ 7 \end{bmatrix} = 4\cdot(-2) + 3\cdot7 = 13.
\end{align*}
Kolejnym ważnym działaniem jest iloczyn tensorowy, oznaczany symbolem \( \otimes \). Iloczyn tensorowy rozszerza przestrzeń, w której pracujemy:
\begin{align*}
|u\rangle \otimes |v\rangle = \begin{bmatrix} u_1 \\ u_2 \\ \vdots \\ u_m \end{bmatrix} \otimes \begin{bmatrix} v_1 \\ v_2 \\ \vdots \\ v_n \end{bmatrix} =
\begin{bmatrix}
u_1 \begin{bmatrix} v_1 \\ v_2 \\ \vdots \\ v_n \end{bmatrix} \\
u_2 \begin{bmatrix} v_1 \\ v_2 \\ \vdots \\ v_n \end{bmatrix} \\
\vdots \\
u_m \begin{bmatrix} v_1 \\ v_2 \\ \vdots \\ v_n \end{bmatrix}
\end{bmatrix} =
\begin{bmatrix}
u_1 v_1 \\ u_1 v_2 \\ \vdots \\ u_1 v_n \\
u_2 v_1 \\ u_2 v_2 \\ \vdots \\ u_2 v_n \\
\vdots \\
u_m v_1 \\ u_m v_2 \\ \vdots \\ u_m v_n
\end{bmatrix}
\end{align*}
Przykładowo, dla dwuwymiarowych wektorów z konkretnymi wartościami iloczyn tensorowy wygląda w następujący sposób:
\begin{align*}
\begin{bmatrix} 4 \\ 3 \end{bmatrix} \otimes \begin{bmatrix} -2 \\ 7 \end{bmatrix}
&= \begin{bmatrix}
4 \cdot \begin{bmatrix} -2 \\ 7 \end{bmatrix} \\
3 \cdot \begin{bmatrix} -2 \\ 7 \end{bmatrix}
\end{bmatrix}
= \begin{bmatrix}
4 \cdot (-2) \\ 4 \cdot 7 \\
3 \cdot (-2) \\ 3 \cdot 7
\end{bmatrix}
= \begin{bmatrix}
-8 \\ 28 \\
-6 \\ 21
\end{bmatrix}.
\end{align*}
Jeśli działamy na wektorach bazowych, to działania się upraszczają. Przykładowo, mając wektory bazowe \(|0\rangle\), \(|1\rangle\) oraz \(|1\rangle\) ich iloczyn tensorowy przedstawiamy jako:
\begin{align*}
|0\rangle \otimes |1\rangle \otimes |1\rangle = |0\rangle |1\rangle |1\rangle = |0,1,1\rangle = |011\rangle = |3\rangle,
\end{align*}
czego prawdziwość można w łatwy sposób sprawdzić stosując odpowiednie obliczenia.