Dibujar puertas de permutación usando QCircuit

Dibujar puertas de permutación usando QCircuit

Estoy buscando una manera de dibujar unpuerta de permutaciónusando Qcircuit de la forma en que se hace en la siguiente imagen (por ejemplo, dentro del cuadro rojo):

Circuito Cuántico con puertas de permutación

(¿Cómo) se puede lograr esto usando Qcircuit?

Editar: dado que me pidieron que proporcionara un MWE de lo que he logrado hasta ahora, este es mi código fuente:

\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}

Lo que produce lo que se puede ver en la mitad izquierda de la siguiente imagen, sin embargo, no tengo idea de cómo producir las líneas diagonales que se muestran en rojo en el lado derecho:

ingrese la descripción de la imagen aquí

Respuesta1

Creo que la respuesta es no, no es posible. El \multigatecomando no hace mucho más que dibujar un rectángulo sobre el número apropiado de filas. Creo que las líneas diagonales que deseas están fuera del alcance de Qcircuittodas, aunque no sé xy(cuáles Qcircuitse usan) lo suficientemente bien como para decirlo con certeza.

Sin embargo, dicha operación de permutación es lo mismo que una secuencia de puertas de intercambio entre diferentes modos. Escribir el circuito de esta manera tiene el mismo efecto y podría decirse que tiene más sentido (en los experimentos, los qubits a menudo están fijos en su lugar, por lo que tales operaciones de intercambio son descripciones más realistas de puertas de múltiples qubits entre qubits inicialmente separados espacialmente).

Más importante aún, Qcircuitpermite realizar operaciones que serían la mejor resolución para su problema (a menos que cambie a un paquete diferente). Para la operación que resaltó, la siguiente imagen/código es una descripción alternativa, es decir, permutar 7 -> 6, 6-> 5, 5 -> 4 y 4 -> 7.

Ejemplo de circuito de permutación Qswap

Producido con

\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}

Respuesta2

Puede obtener el tipo de cables en ángulo que desee usando el \linkcomando. A menudo los uso para representar intercambios. La forma más sencilla de obtener algo como lo que estás solicitando es usar el comando de enlace y crear un cuadro alrededor de la región de interés con el \gategroupcomando. He aquí un ejemplo:

ingrese la descripción de la imagen aquí

Esto fue compuesto con el siguiente código:

\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}

Sin embargo, los cables no se doblan exactamente en el borde de la caja. Si desea eso, puede modificarlo usando \link, \multigatey \ghost, pero debe establecer el espaciado de columna predeterminado en cero y forzar las longitudes de los cables presionando \pusha \rule. Aquí hay un ejemplo de eso:

ingrese la descripción de la imagen aquí

Esto fue compuesto con el siguiente código:

\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}

Alternativamente, puede establecer la longitud de holgura en el cuadro (penúltimo campo en \gategroup) en el primer ejemplo en 0em y extender el cuadro a la línea anterior y siguiente, pero esto requerirá modificar el espacio entre filas para que se vea bien. (y muy probablemente \pushreglas verticales).

información relacionada