diff --git a/thesis/chapters/implementation.tex b/thesis/chapters/implementation.tex index c333417..6640705 100644 --- a/thesis/chapters/implementation.tex +++ b/thesis/chapters/implementation.tex @@ -273,39 +273,51 @@ always done in three steps: \subsection{Utilities} -To make both using the simulators more convenient and to help with using them in -as scientific or educational context several utilities have been written. This chapter -explains some of them. +To make both using the simulators more convenient and to help with using them +in as scientific or educational context several utilities have been written. +This chapter explains some of them. \subsubsection{Sampling and Circuit Generation} -The function \lstinline{pyqcs.sample} provides a simple way to sample from a state. -Copies of the state are made when necessary and the results are returned -in a \lstinline{collections.Counter} object. Several qbits can be sampled at once; they can be passed -to the function either as an integer which will be interpreted as a bit mask and the -least significant bit will be sampled first. When passing the qbits to sample as a list -of integers the integers are interpreted as qbit indices and are measured in the order -they appear. +The function \lstinline{pyqcs.sample} provides a simple way to sample from +a state. Copies of the state are made when necessary and the results are +returned in a \lstinline{collections.Counter} object. Several qbits can be +sampled at once; they can be passed to the function either as an integer which +will be interpreted as a bit mask and the least significant bit will be sampled +first. When passing the qbits to sample as a list of integers the integers are +interpreted as qbit indices and are measured in the order they appear. -If the keyword argument \lstinline{keep_states} is \lstinline{True} the sampling -function will include the resulting states in the result. At the moment this works -for dense vectors only. Checking for equality on graphical states has yet to be implemented -but can be done in polynomial time \cite{dahlberg_ea2019}. +If the keyword argument \lstinline{keep_states} is \lstinline{True} the +sampling function will include the resulting states in the result. At the +moment this works for dense vectors only. Checking for equality on graphical +states has yet to be implemented but can be done in polynomial time +\cite{dahlberg_ea2019}. -Writing circuits out by hand can be rather painful. The function \lstinline{pyqcs.list_to_circuit} -Converts a list of circuits to a circuit. This is particularely helpful in combination -with python's \lstinline{listcomp}: +Writing circuits out by hand can be rather painful. The function +\lstinline{pyqcs.list_to_circuit} Converts a list of circuits to a circuit. +This is particularely helpful in combination with python's +\lstinline{listcomp}: \begin{lstlisting} circuit_H = list_to_circuit([H(i) for i in range(nqbits)]) \end{lstlisting} -The module \lstinline{pyqcs.util.random_circuits} provides the method described in \ref{ref:performance} -to generate random circuits for both graphical and dense vector simulation. Using the module -\lstinline{pyqcs.util.random_graphs} one can generate random graphical states which is more performant -than using random circuits. +The module \lstinline{pyqcs.util.random_circuits} provides the method described +in \ref{ref:performance} to generate random circuits for both graphical and +dense vector simulation. Using the module \lstinline{pyqcs.util.random_graphs} +one can generate random graphical states which is more performant than using +random circuits. -\subsubsection{Exporting Circuits, Graphical States} +\subsubsection{Exporting Circuits and Graphical States} + +Circuits can be drawn using the \LaTeX package \lstinline{qcircuit}; all +circuits in this documents use \lstinline{qcircuit}. To visualize the circuits +built using \lstinline{pyqcs} the function +\lstinline{pyqcs.util.to_diagram.circuit_to_diagram} can be used to generate +\lstinline{qcircuit} code that can be used in \LaTeX documents or exported to +PDFs directly. The diagrams produced by this function is not optimized and the +diagrams can be unnecessary long. Usually this can be fixed easily by editing +the produced code manually. \subsection{Performance}