使用 QCircuit 绘制排列门

使用 QCircuit 绘制排列门

我正在寻找一种方法来绘制置换门按照下图的方式使用Qcircuit(例如红色框内):

带置换门的量子电路

(如何)可以使用 Qcircuit 实现这一点吗?

编辑:由于我被要求提供迄今为止我所取得的成就的 MWE,这是我的源代码:

\documentclass{article}
\usepackage{qcircuit}
 \begin{document}
 \mbox{
     \Qcircuit @C=0.5cm @R=.2cm {
         \lstick{x_1} & \multigate{1}{\ } & \rstick{x_1} \qw \\
         \lstick{x_2} & \ghost{\ }        & \rstick{x_2} \qw 
     }
 }
 \end{document}

这样就产生了下图左半部分所见的效果,但是我完全不知道如何产生右侧红色显示的对角线:

在此处输入图片描述

答案1

我认为答案是否定的,这是不可能的。该\multigate命令的作用只是在适当的行数上绘制一个矩形。我认为您想要的对角线超出了总范围Qcircuit- 虽然我不太清楚xy(哪个Qcircuit用途)可以肯定地说。

然而,这种置换操作与不同模式之间的交换门序列相同。以这种方式编写电路具有相同的效果,并且可能更有意义(在实验中,量子位通常是固定在原位的,因此这种交换操作是对最初空间分离的量子位之间的多量子位门的更现实的描述)。

更重要的是,Qcircuit允许进行这样的操作,这将是您问题的最佳解决方案(无需转移到其他包)。对于您突出显示的操作,以下图像/代码是另一种描述,即排列 7 -> 6、6-> 5、5 -> 4 和 4 -> 7。

Qswap 置换电路示例

制作

\documentclass{article}

\usepackage{qcircuit}

\begin{document}

\Qcircuit @C=.7em @R=1em @!R {
\lstick{x_1} & \qw & \qw & \qw & \qw & \qw & \rstick{y_1} \\
\lstick{x_2} & \qw & \qw & \qw & \qw & \qw & \rstick{y_2} \\
\lstick{x_3} & \qw & \qw & \qw & \qw & \qw & \rstick{y_3} \\
\lstick{x_4} & \qw & \qswap & \qswap & \qswap & \qw & \rstick{y_4} \\
\lstick{x_5} & \qw & \qw \qwx & \qw \qwx & \qswap \qwx & \qw & \rstick{y_5} \\
\lstick{x_6} & \qw & \qw \qwx & \qswap \qwx & \qw  & \qw & \rstick{y_6} \\
\lstick{x_7} & \qw & \qswap \qwx & \qw & \qw & \qw & \rstick{y_7} 
}

\end{document}

答案2

您可以使用命令获取所需的角度线类型\link。我经常用它们来表示交换。获取所需内容的最简单方法是使用链接命令,并使用命令在感兴趣的区域周围创建一个框\gategroup。以下是示例:

在此处输入图片描述

这是用以下代码排版的:

\documentclass{standalone}
\input{Qcircuit}% using  qcircuit version 2
\begin{document}
\hspace{1em}
\begin{tabular}{c}
\vspace{-.6em}\\
     \Qcircuit @C=0.5cm @R=.5cm {
         \lstick{x_1} & \qw & \link{1}{-1} & \rstick{x_1} \qw \\
         \lstick{x_2} & \qw & \link{-1}{-1} & \rstick{x_2} \qw
         \gategroup{1}{2}{2}{3}{.8em}{-}
     }
\vspace{1.2em}\hspace{1.2em}
\\
\end{tabular}
\end{document}

但是,导线不会在盒子的边缘处精确弯曲。如果您想要这样做,那么您可以使用 、 和 来解决这个问题\link\multigate\ghost您必须将默认列间距设置为零,并通过 来强制导线长度\push\rule以下是一个例子:

在此处输入图片描述

这是用以下代码排版的:

\documentclass{standalone}
\input{Qcircuit}% using  qcircuit version 2
\begin{document}
\hspace{1em}
\begin{tabular}{c}
\vspace{-.6em}\\
     \Qcircuit @C=0cm @R=.2cm {
         \lstick{x_1} & \qw & \qw & \multigate{1}{\ \ \ } & \qw \link{1}{-2} & \qw & \rstick{x_1} \qw \\
         \lstick{x_2} & \qw & \qw & \ghost{\ \ \ } & \qw \link{-1}{-2} & \qw & \rstick{x_2} \qw \\
         & \push{\rule{1.2em}{0em}} & & & & \push{\rule{1.2em}{0em}}
     }
\vspace{.2em}\hspace{1.2em}
\\
\end{tabular}
\end{document}

或者,您可以将第一个示例中的框的松弛长度(中的倒数第二个字段\gategroup)设置为 0em,并将该框延伸到前一行和后一行,但这需要摆弄行距才能使其看起来正确(并且很可能\push需要垂直规则)。

相关内容