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.AbstractCTQW
QuantumWalk.CTQW
QuantumWalk.CTQWDense
QuantumWalk.QWEvolution
QuantumWalk.QWSearch
QuantumWalk.check_qwdynamics
QuantumWalk.check_qwdynamics
QuantumWalk.matrix
Full docs
QuantumWalk.AbstractCTQW
— Type.AbstractCTQW
Abstract 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.