我尝试使用乳胶绘制著名的“Deutsch算法”,但没有结果:。
对于这个用例,我尝试了所有用于量子电路的 latex 包。我能获得可接受结果的是 quantikz。
\documentclass[border=2mm,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{quantikz}
\begin{document}
\begin{quantikz}
\lstick{$\ket{0}$} & \gate{H} &
\gate[wires=2][1.7cm]{U}
\gateinput[1]{$x$}
\gateoutput[wires=1]{$x$} & \gate{H}\\
&\gateinput{$y$}
\gateoutput{$y\oplus f(x)$}&\qw\\
\lstick{$\ket{1}$} & \gate{H}
\end{quantikz}
\end{document}
导致:
主要问题是我找不到将第二个量子位插入 U 的 y 门的方法。有什么想法吗?
答案1
我不知道这个quantikz
包。我对量子计算一无所知。不过,你的图片很容易用纯 Ti 画出来钾Z. 我相信你会有其他解决方案quantikz
或其他相关包。同时我希望这个例子能有所帮助。
\documentclass[tikz,border=2mm]{standalone}
\usepackage{amsmath}
\begin{document}
\begin{tikzpicture}[y=-1cm,scale=1.5]
\foreach\i in {0,1}
\draw (5,\i) -- (0,\i) node[left] {$\lvert\i\rangle$};
\foreach\i/\j in {1/0,1/1,4/0}
\draw (\i,\j) node[draw,fill=white] {$H$};
\draw[fill=white] (1.75,-0.25) rectangle node {$U_f$} (3.25,1.25);
\foreach[count=\j from=0]\i in {0.5,1.5,3.5,4.5}
\draw[<-] (\i,1.5) -- (\i,2) node[below] {$\lvert\psi_\j\rangle$};
\node[right] at (1.75,0) {$x$};
\node[left] at (3.25,0) {$x$};
\node[right] at (1.75,1) {\strut$y$};
\node[left] at (3.25,1) {\strut$y\oplus f(x)$};
\end{tikzpicture}
\end{document}
答案2
为了记录,这是quantikz
代码。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{quantikz}
\begin{document}
\begin{quantikz}
\lstick{$\ket{0}$} &\gate{H} &\gate[wires=2][1.7cm]{U_f}\gateinput[1]{$x$}\gateoutput[1]{$x$}&\gate{H} &\qw\\
\lstick{$\ket{1}$} &\gate{H} &\qw\gateinput{$y$}\gateoutput{$y\oplus f(x)$} &\qw &\qw\\
\end{quantikz}
\end{document}
并附加了标签。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{quantikz}
\begin{document}
\begin{quantikz}
\lstick{$\ket{0}$} &\gate{H} &\gate[wires=2][1.7cm]{U_f}\gateinput[1]{$x$} \gateoutput[1]{$x$} & \gate{H} &\qw\\
\lstick{$\ket{1}$} &\gate{H} &\qw\gateinput{$y$}\gateoutput{$y\oplus f(x)$} &\qw & \qw\\
\end{quantikz} \\[-4ex]
\hspace*{1.0cm}\begin{tikzpicture}[y=-1cm]
\draw[<-] (2.7,2.5) -- (2.7,3) node[below] {$\lvert\psi_0\rangle$};
\draw[<-] (3.8,2.5) -- (3.8,3) node[below] {$\lvert\psi_1\rangle$};
\draw[<-] (6.1,2.5) -- (6.1,3) node[below] {$\lvert\psi_2\rangle$};
\draw[<-] (7.1,2.5) -- (7.1,3) node[below] {$\lvert\psi_3\rangle$};
\end{tikzpicture}
\end{document}