
그리는 방법을 찾고 있어요순열 게이트다음 그림에서와 같이 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}
또는 첫 번째 예에서 상자의 여유 길이( 의 마지막 필드에서 두 번째 필드 \gategroup
)를 0em으로 설정하고 상자를 이전 및 다음 줄로 확장할 수 있지만, 올바르게 보이도록 하려면 행 간격을 조정해야 합니다. (그리고 아마도 \push
수직 규칙을 사용하고 있을 것입니다).