
Ich suche nach einer Möglichkeit, einPermutationstorVerwenden Sie Qcircuit wie im folgenden Bild (z. B. im roten Feld):
(Wie) Kann dies mit Qcircuit erreicht werden?
Bearbeiten: Da ich gebeten wurde, ein MWE dessen bereitzustellen, was ich bisher erreicht habe, ist dies mein Quellcode:
\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}
Das Ergebnis ist das, was in der linken Hälfte des folgenden Bildes zu sehen ist. Ich habe allerdings überhaupt keine Ahnung, wie ich die diagonalen Linien erzeugen soll, die auf der rechten Seite rot dargestellt sind:
Antwort1
Ich glaube, die Antwort ist nein, das ist nicht möglich. Der \multigate
Befehl macht nicht viel mehr, als ein Rechteck über die entsprechende Anzahl von Zeilen zu zeichnen. Ich denke, die gewünschten diagonalen Linien liegen außerhalb des Geltungsbereichs von Qcircuit
anything-to-all – obwohl ich nicht gut genug weiß xy
(welche Verwendungen) um das mit Sicherheit sagen zu können.Qcircuit
Eine solche Permutationsoperation ist jedoch dasselbe wie eine Sequenz von Swap-Gates zwischen verschiedenen Modi. Das Schreiben der Schaltung auf diese Weise hat denselben Effekt und ist wohl sinnvoller (im Experiment sind Qubits oft an ihrem Platz fixiert, sodass solche Swap-Operationen realistischere Beschreibungen von Multi-Qubit-Gates zwischen ursprünglich räumlich getrennten Qubits sind).
Noch wichtiger ist, Qcircuit
dass solche Operationen möglich sind, die die beste Lösung für Ihr Problem darstellen (ohne zu einem anderen Paket wechseln zu müssen). Für die von Ihnen hervorgehobene Operation ist das folgende Bild/der folgende Code eine alternative Beschreibung, nämlich die Permutation von 7 -> 6, 6-> 5, 5 -> 4 und 4 -> 7.
Produziert mit
\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}
Antwort2
Mit dem Befehl können Sie die gewünschten abgewinkelten Drähte erhalten \link
. Ich verwende diese häufig, um Vertauschungen darzustellen. Der einfachste Weg, um etwas zu erhalten, das Ihren Wünschen entspricht, besteht darin, den Link-Befehl zu verwenden und mit dem Befehl eine Box um den gewünschten Bereich zu erstellen \gategroup
. Hier ist ein Beispiel:
Dies wurde mit dem folgenden Code gesetzt:
\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}
Die Drähte biegen sich jedoch nicht genau am Rand der Box. Wenn Sie das möchten, können Sie es mit \link
, \multigate
, und ändern \ghost
, aber Sie müssen den Standardspaltenabstand auf Null setzen und die Drahtlängen durch \push
ing a erzwingen \rule
. Hier ist ein Beispiel dafür:
Dies wurde mit dem folgenden Code gesetzt:
\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}
Alternativ könnten Sie die Schlupflänge der Box (vorletztes Feld in \gategroup
) im ersten Beispiel auf 0em setzen und die Box auf die vorhergehende und folgende Zeile ausdehnen, aber dazu müssen Sie den Zeilenabstand verändern, damit es richtig aussieht (und höchstwahrscheinlich müssen Sie \push
vertikale Regeln anwenden).