Circulant
Propagators for circulant operators, which arise in translation-invariant systems. Used in QWOA for constrained combinatorial optimisation problems.
Propagator Class
Operators
Pre-defined operator functions for circulant propagators.
Predefined Operator Functions for
quop_mpi.propagator.circulant.unitary.
An Operator Function for 'circulant' unitary instances returns a
local_i sized partition of the operator eigenvalues with global index offset
local_i_offset.
Return Format
The Operator Function must return:
- eigenvaluesndarray[float64]
A 1-D real array of size
local_icontaining the eigenvalues of the circulant operator for global indiceslocal_i_offsettolocal_i_offset + local_i - 1.
Circulant matrices are diagonalized by the Discrete Fourier Transform (DFT), so the eigenvalues are simply the DFT of the first row (or column) of the matrix.
Propagation Method
The circulant propagator computes \(e^{-itH}|\psi\rangle\) using FFT:
Forward FFT transforms the state to the eigenbasis
Multiply by \(e^{-it\lambda_k}\) where \(\lambda_k\) are eigenvalues
Inverse FFT transforms back to the computational basis
This is efficient because circulant matrices are diagonalized by the DFT. The implementation uses FFTW with MPI for parallel execution.
- quop_mpi.propagator.circulant.operator.complete(system_size: int) np.ndarray[np.float64]
Return a placeholder array for a complete circulant graph.
For a complete graph, eigenvalue computation is handled internally by the propagator, so this function returns an empty array as a signal.
An Operator Function associated with
quop_mpi.propagator.circulant.unitary.- Parameters:
- system_sizeint
the size of the simulated QVA
- Returns:
- ndarray[float64]
1-D array with a single element (placeholder for complete graph)
- quop_mpi.propagator.circulant.operator.graph(system_size: int, i: int = 1) np.ndarray[np.float64]
Generate the eigenvalues of the i-th symmetric circulant graph with edge weightings
1.An Operator Function associated with
quop_mpi.propagator.circulant.unitary.- Parameters:
- system_sizeint
the size of the simulated QVA
- iint, optional
index of the graph (ordered by vertex degree),
1corresponds to a cycle graph andsystem_size // 2or greater to a complete graph, by default1
- Returns:
- ndarray[float64]
1-D real array of
system_sizeeigenvalues, or a single-element placeholder array ifi >= system_size // 2(complete graph)