
私は描く方法を探しています順列ゲート次の図のように 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 の順序変更という別の説明です。
制作:
\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
。私はスワップを表現するためによくこれを使用します。求めているようなものを取得する最も簡単な方法は、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
、デフォルトの列間隔を 0 に設定し、 を実行して\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}
あるいは、最初の例のボックス ( の最後から 2 番目のフィールド\gategroup
) の余裕の長さを 0em に設定し、ボックスを前後の行まで拡張することもできますが、この場合、適切に表示されるように行間隔を調整する必要があります (おそらく\push
垂直方向の罫線も調整する必要があります)。