diff --git a/.gitignore b/.gitignore index 8164e02..a20e667 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ *.log *.aux *.pdf +*.out diff --git a/Makefile b/Makefile index 31d91d2..a200e1a 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,6 @@ -PDFs = wykład-2022-02-24.pdf wykład-2022-03-10.pdf +PDFs = wykład-2022-02-24.pdf \ + wykład-2022-03-10.pdf \ + wykład-2022-03-17.pdf all: $(PDFs) @@ -7,4 +9,4 @@ all: $(PDFs) pdflatex $< clean: - rm -f *.log *.aux $(PDFs) + rm -f *.log *.aux $(PDFs) diff --git a/README.md b/README.md index 2a3559b..ed5add0 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,18 @@ # Algorytmy Kwantowe - notatki -[__Pobierz najnowsze wersje ukończonych notatek__](https://github.com/RobertBendun/notatki-algorytmy-kwantowe/releases/) - To repozytorium zawiera notatki powiązane z przedmiotem Algorytmy Kwantowe prowadzonym na Uniwersystecie im. Adama Mickiewicza w Poznaniu. Wszelkie treści dostępne w tym repozytorium domyślnie podlegają licencji [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/). +Wykorzystywana jest biblioteka [Qcircuit](https://github.com/CQuIC/qcircuit/). + +## Spis treści + +1. [Trygonometria i liczby zespolone](./wykład-2022-02-24.pdf) +2. _pojawią się niedługo_ +3. [Iloczyn tensorowy, postulaty mechaniki kwantowej](./wykład-2022-03-10.pdf) +4. [Bramki kwantowe, układy kwantowe](./wykład-2022-03-17.pdf) + ## Budowanie Osobiście używam pdflatex, na Ubuntu instalacja wygląda następująco: diff --git a/wykład-2022-03-17.tex b/wykład-2022-03-17.tex new file mode 100644 index 0000000..8f674c8 --- /dev/null +++ b/wykład-2022-03-17.tex @@ -0,0 +1,163 @@ +\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}