\documentclass{article}

\usepackage[top=1.5cm,bottom=1.5cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{amsfonts}
\usepackage{hyperref}
\usepackage{mathtools}
\usepackage{multicol}
\usepackage{polski}
\usepackage{qcircuit}

\newcommand\CC{\mathbb{C}}
\newcommand\NN{\mathbb{N}}

\DeclarePairedDelimiter\ket{\lvert}{\rangle}
\DeclarePairedDelimiter\bra{\langle}{\rvert}

\begin{document}

\section{Bramki}

% TODO Bramki X, Y, Z

\subsection{Bramki odwracalne}

Bramka $U$ działająca na $m$ kubitach jest odwracalna, jeśli liczba wejść bramki jest równa liczbie wyjść.

\subsection{Bramka Hadamarda}

$$ \Qcircuit @C=1em @R=1em { & \gate{H} & \qw } $$

$$ H = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix} $$

\begin{align*}
	H(|0\rangle) & = \frac{1}{\sqrt{2}} |0\rangle + \frac{1}{\sqrt{2}} |1\rangle =: |+\rangle \\
	H(|1\rangle) & = \frac{1}{\sqrt{2}} |0\rangle - \frac{1}{\sqrt{2}} |1\rangle =: |-\rangle \\
	H(|+\rangle) & = |0\rangle \\
	H(|-\rangle) & = |1\rangle
\end{align*}

\subsection{Bramka CNOT}

Jest to bramka kontrolowanej negacji.

\[
\Qcircuit @C=1em @R=.7em {
	\lstick{\ket{\alpha}}	& \ctrl{1} & \rstick{\ket{\alpha}} \qw \\
	\lstick{\ket{\beta}}  & \targ    & \rstick{\ket{\alpha \oplus \beta }} \qw
}
\]

\begin{multicols}{2}

\begin{align*}
	\ket{00} \rightarrow \ket{00} \\
	\ket{01} \rightarrow \ket{01} \\
	\ket{10} \rightarrow \ket{11} \\
	\ket{11} \rightarrow \ket{10}
\end{align*}

$$
	\text{CNOT} = \begin{bmatrix}
	1 & 0 & 0 & 0 \\
	0 & 1 & 0 & 0 \\
	0 & 0 & 0 & 1 \\
	0 & 0 & 1 & 0
	\end{bmatrix}
$$
\end{multicols}

\subsection{Bramka SWAP}

Zamienia kubity ze sobą.

\[
\Qcircuit @C=1em @R=2em {
	\lstick{\ket{\alpha}}	& \qswap & \rstick{\ket{\beta}} \qw \\
	\lstick{\ket{\beta}}  & \qswap \qwx   & \rstick{\ket{\alpha}} \qw
}
\]

\begin{multicols}{2}

\begin{align*}
	\ket{00} \rightarrow \ket{00} \\
	\ket{01} \rightarrow \ket{10} \\
	\ket{10} \rightarrow \ket{01} \\
	\ket{11} \rightarrow \ket{11}
\end{align*}

$$
\text{SWAP} = \begin{bmatrix}
	1 & 0 & 0 & 0 \\
	0 & 0 & 1 & 0 \\
	0 & 1 & 0 & 0 \\
	0 & 0 & 0 & 1
\end{bmatrix}
$$

\end{multicols}

Implementowalna przy pomocy bramki CNOT.

\[
\Qcircuit @C=1em @R=.7em {
	\lstick{\ket{\alpha}}	& \ctrl{1} & \targ & \ctrl{1} & \rstick{\ket{\beta}} \qw \\
	\lstick{\ket{\beta}}  & \targ    & \ctrl{-1} & \targ & \rstick{\ket{\alpha}} \qw
}
\]

\subsection{Bramka Toffoliego}

\[
\Qcircuit @C=1em @R=.7em {
	\lstick{\ket{a}}	& \ctrl{1} & \rstick{\ket{a}} \qw \\
	\lstick{\ket{b}}  & \ctrl{1}    & \rstick{\ket{b}} \qw \\
	\lstick{\ket{c}}  & \targ    & \rstick{\ket{c \oplus (a \land b) }} \qw
}
\]

\begin{multicols}{2}

\begin{align*}
	\ket{000} \rightarrow \ket{000} \\
	\ket{001} \rightarrow \ket{001} \\
	\ket{010} \rightarrow \ket{010} \\
	\ket{011} \rightarrow \ket{011} \\
	\ket{100} \rightarrow \ket{100} \\
	\ket{101} \rightarrow \ket{101} \\
	\ket{110} \rightarrow \ket{111} \\
	\ket{111} \rightarrow \ket{110}
\end{align*}

W zależności od ustawienia kubitów, bramka implementuje następujące operacje:

\begin{align*}
	c = 0  &\longrightarrow a \land b \\
	c = 1 &\longrightarrow \lnot (a\land b) \\
	a = b = 1 & \longrightarrow \lnot c \\
	a = 1, c = 0 & \longrightarrow \text{copy } b \text{ to } c
\end{align*}

\end{multicols}

Zbiór bramek odwracalnych $R$ nazywamy uniwersalnym, jeśli przy użyciu bramek należących do $R$, można zbudować dowolny układ odwracalny.

\section{Układy kwantowe}

\subsection{Półsumator}

Dodaje kubity $a$ i $b$, dając w wyniku bit sumy $s$ i bit przeniesienia (carry) $c$.

\[
\Qcircuit @C=1em @R=.7em {
	\lstick{\ket{a}}	& \ctrl{1} & \ctrl{1} & \rstick{\ket{a}} \qw \\
	\lstick{\ket{b}}  & \ctrl{1} & \targ & \rstick{\ket{s}} \qw \\
	\lstick{\ket{0}}  & \targ    & \qw  & \rstick{\ket{c}} \qw
}
\]

% TODO Teleportacja kwantowa

\end{document}
