Continuous-Time Quantum Walk
Implementation of the continuous-time quantum walk. The model is defined for an arbitrary undirected graph. Hamiltonian is chosen to be adjacency, normalized Laplacian or Laplacian matrix. After the evolution, the state is measured in the canonical basis. The evolution is defined on a system of size equal to graph order. The precise definition can be found in Spatial search by quantum walk by Childs and Goldstone, where both pure walk and search dynamics are described.
The abstract supertype is AbstractCTQW with its default realization CTQW, utilizing sparse matrices. Alternative realization is CTQWDense, which works on standard matrices. The model includes the following types and methods:
Documentation
QuantumWalk.AbstractCTQWQuantumWalk.CTQWQuantumWalk.CTQWDenseQuantumWalk.QWEvolutionQuantumWalk.QWSearchQuantumWalk.check_qwdynamicsQuantumWalk.check_qwdynamicsQuantumWalk.matrix
Full docs
QuantumWalk.AbstractCTQW — Type.AbstractCTQWAbstract CTQW model. By default evolve according to Schrödinger equation and performs measurmenet by taking square of absolute values of its elements. Default representation of AbstractCTQW is CTQW.
QuantumWalk.CTQW — Type.CTQW(graph[, matrix])Default representation of AbstractCTQW. matrix defaults to :adjacency. The Hamiltonian is a sparse matrix.
QuantumWalk.CTQWDense — Type.CTQWDense(graph[, matrix])Alternative representation of AbstractCTQW. matrix defaults to :adjacency. The Hamiltonian is a dense matrix.
QuantumWalk.QWEvolution — Method.QWEvolution([type_ctqw, ]ctqw)Creates QWEvolution according to AbstractCTQW model. By default type equals ComplexF64. The Hamiltonian of the system is either (normalized) Laplacian, or minus adjacency matrix.
QuantumWalk.QWSearch — Method.QWSearch([type, ]ctqw, marked[, penalty, jumpingrate])Creates QWSearch according to AbstractCTQW model. The evolution is defined by Hamiltonian, is the sum of the quantum walk part and the oracle. By default type equals ComplexF64, jumpingrate equals largest eigenvalue of adjacency matrix of graph if matrix(CTQW) outputs :adjacency and error otherwise, and penalty equals 0. Details can be found in the original paper.
QWSearch(qws_ctqw; marked, penalty)Updates quantum walk search to new subset of marked elements and new penalty. By default marked and penalty are the same as in qws.
QuantumWalk.check_qwdynamics — Method.check_qwdynamics(QWSearch, ctqw, parameters, marked)Checks whetver combination of ctqw, marked and parameters produces valid QWSearch object. It checks if parameters consists of key :hamiltonian with real-valued matrix. Furthermore the hamiltonian needs to be square of size equals to graph(ctqw) order. the hermiticity is not checked for efficiency issue.
QuantumWalk.check_qwdynamics — Method.check_qwdynamics(QWEvolution, ctqw, parameters)Checks if combination of ctqw and parameters produces valid QWSearch object. It checks if parameters consists of key :hamiltonian with real-valued matrix. Furthermore the hamiltonian needs to be square of size equals to graph(ctqw) order. The hermiticity is not checked for efficiency issues.
QuantumWalk.matrix — Method.matrix(ctqw)Returns the matrix symbol defining matrix graph used.