Zeichnen Sie Permutationsgatter mit QCircuit

Zeichnen Sie Permutationsgatter mit QCircuit

Ich suche nach einer Möglichkeit, einPermutationstorVerwenden Sie Qcircuit wie im folgenden Bild (z. B. im roten Feld):

Quantenschaltkreis mit Permutationsgattern

(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:

Bildbeschreibung hier eingeben

Antwort1

Ich glaube, die Antwort ist nein, das ist nicht möglich. Der \multigateBefehl 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 Qcircuitanything-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, Qcircuitdass 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.

Beispiel einer Qswap-Permutationsschaltung

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:

Bildbeschreibung hier eingeben

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 \pushing a erzwingen \rule. Hier ist ein Beispiel dafür:

Bildbeschreibung hier eingeben

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 \pushvertikale Regeln anwenden).

verwandte Informationen