HomeWissen Stichwortverzeichnis Tags

Deutsch-Jozsa Algorithm

Einfache Sprache

Man hat eine Funktion, welche als Input einen Bit-Vektor hat. Sie soll herausfinden ob in dem Input alle Bits gleich sind oder genau Hälfte 1 und die andere Hälfte 0. Es wird garantiert das es eines von beidem ist.

Problemdefinition

Gegeben eine balanced oder constant boolesche Funktion $f$. Bestimmte ob $f$ balanced oder constant ist. Für $n>0$ ist einer booleschen Funktion $f:\{0,1\}^n\to\{0,1\}$:

Deterministischer Algorithmus

Checke die ersten $2^{n-1}+1$ Einträge ab.

Randomisierter Algorithmus

Check zwei Zufällige Einträge der Eingabe ab. Wenn sie gleich sind dann sagen wir das die Eingabe constant ist, sonst das sie balanced ist. Wenn der Bit-Vektor constant ist, dann Stimmt unsere Algorithmus. Andernfalls liegen wir mit 50% Richtig. $\Rightarrow$ Die Idee is dann durch $m$-faches Wiederholen geht die Fehlerquote gegen 0

Quanten Algorithmus

Idee Deutsch-Jozsa

	\begin{algorithm}
	\caption{Deutsch-Jozsa Algorithm}
	\begin{algorithmic}
	\Input build-in oracle $O_{f,\pm}$ for a balanced or constant $f:\{0,1\}^n\to \{0,1\}$        
	\Comment{We use \textbf{integer notation}}
	\Procedure{Deutsch-Josza}{$O_{f,\pm}$}
	\State Initialize with $|0^n\rangle$.
	\Comment{State $\varphi_0$: $|0^n\rangle$}
	\State Apply $H^{\otimes n}$.
	\Comment{State $\varphi_1$: $\frac{1}{\sqrt{2^n}}\sum_{i<2^n}|i\rangle$}
	\State Apply $O_{f,\pm}$.
	\Comment{State $\varphi_2$: $\frac{1}{\sqrt{2^n}}\sum_{i<2^n}(-1)^{f(i)}|i\rangle$}
	\State Apply $H^{\otimes n}$.
	\Comment{State $\varphi_3$: $\frac{1}{2^n}\sum_{j<2^n}\left (\sum_{i<2^n}(-1)^{f(i)}(-1)^{i\odot j}\right )|j\rangle$}
	\State Measure $b_0,\ldots,b_{n-1}$.
	\If{$b_0\lor\ldots\lor b_{n-1}$}
	\Return balanced
	\Else
	\Return constant
    \EndIf
    \EndProcedure
	\end{algorithmic}
	\end{algorithm}

Erklärung

Von $\varphi_2$ nach $\varphi_3$:

$$\begin{aligned} &H^{\otimes n}\left (\frac{1}{\sqrt{2^n}}\sum_{i<2^n}(-1)^{f(i)}|i\rangle\right )\\ =&\frac{1}{\sqrt{2^n}}\sum_{i<2^n}(-1)^{f(i)}H^{\otimes n}|i\rangle &|\text{Linearität}\\ =& \frac{1}{\sqrt{2^n}}\sum_{i<2^n}(-1)^{f(i)}\left(\frac{1}{\sqrt{2^n}}\sum_{j<2^n}(-1)^{i\odot j}|j\rangle\right)&|\text{Lemma}\\ =& \frac{1}{2^n}\sum_{i,j<2^n}(-1)^{f(i)}(-1)^{i\odot j}|j\rangle &|\text{Arithmetik}\\ =& \sum_{j<2^n}\frac{1}{2^n}\left (\sum_{i<2^n}(-1)^{f(i)}(-1)^{i\odot j}\right )|j\rangle&|\text{Arithmetik} \end{aligned}$$

Wenn man für $j= |0^n\rangle$ einsetzt sieht man das die Amplitude $\frac{1}{2^n}\sum_{i<2^n}(-1)^{f(i)}$ ist. Die Amplitude ist also

Lemma

Für alle $b\in\{0,1\}^n$,

$$H^{\otimes n}|b\rangle = \frac{1}{\sqrt{2^n}}\sum_{c\in\{0,1\}^n}(-1)^{b\odot c}|c\rangle\;,$$

wobei $\odot$ für das Skalarprodukt von Bit-Vektoren steht. Also $b\odot c = \sum_{i

Alternativ für $|\varphi\rangle = \sum_{b\in\{0,1\}^n}\alpha_b|b\rangle$ and $c\in\{0,1\}^n$,

$$\langle H^{\otimes n}|\varphi\rangle| |c\rangle\rangle = \frac{1}{\sqrt{2^n}}\sum_{b\in\{0,1\}^n}(-1)^{b\odot c}\alpha_b\;.$$

Example

deutsch-jozsa-example.png

Home: