PySparQ.pysparq.algorithms.cks_solver

CKS (Childs-Kothari-Somma) Linear System Solver Implementation

Classes

ChebyshevPolynomialCoefficient

Computes Chebyshev polynomial coefficients for quantum walk.

CondRotQW

Conditional rotation for quantum walk.

LCUContainer

LCU (Linear Combination of Unitaries) container for CKS.

QuantumBinarySearch

Quantum binary search for sparse matrix access.

QuantumWalk

Quantum walk operator for CKS algorithm.

QuantumWalkNSteps

Multiple quantum walk steps for CKS algorithm.

SparseMatrix

Sparse matrix representation for CKS algorithm.

SparseMatrixData

Sparse matrix data for quantum simulation.

TOperator

T operator for CKS algorithm.

Functions

get_coef_common(→ list[complex])

Get rotation matrix coefficients for general (signed) matrix elements.

get_coef_positive_only(→ list[complex])

Get rotation matrix coefficients for positive-only matrix elements.

make_walk_angle_func(→ Callable[[int, int, int], ...)

Create walk angle function for a matrix.

Module Contents

class PySparQ.pysparq.algorithms.cks_solver.ChebyshevPolynomialCoefficient(b: int)[source]

Computes Chebyshev polynomial coefficients for quantum walk.

C(Big: int, Small: int) → float[source]
coef(j: int) → float[source]
sign(j: int) → bool[source]
step(j: int) → int[source]
b: int[source]
class PySparQ.pysparq.algorithms.cks_solver.CondRotQW(j_reg: str, k_reg: str, data_reg: str, output_reg: str, mat: SparseMatrix)[source]

Conditional rotation for quantum walk.

clear_conditions() → None[source]
conditioned_by_all_ones(conds: str | int | list[str | int]) → CondRotQW[source]
conditioned_by_bit(reg: str | int, pos: int) → CondRotQW[source]
conditioned_by_nonzeros(cond: str | int | list[str | int]) → CondRotQW[source]
dag(state: pysparq.SparseState) → None[source]
data_reg: str[source]
j_reg: str[source]
k_reg: str[source]
mat: SparseMatrix[source]
output_reg: str[source]
class PySparQ.pysparq.algorithms.cks_solver.LCUContainer(mat: SparseMatrix, kappa: float, eps: float, qram: pysparq.QRAMCircuit_qutrit | None = ...)[source]

LCU (Linear Combination of Unitaries) container for CKS.

clear_conditions() → None[source]
conditioned_by_all_ones(conds: str | int | list[str | int]) → LCUContainer[source]
conditioned_by_bit(reg: str | int, pos: int) → LCUContainer[source]
conditioned_by_nonzeros(cond: str | int | list[str | int]) → LCUContainer[source]
dag(state: pysparq.SparseState) → None[source]
external_input(init_op: Callable[[pysparq.SparseState], None]) → None[source]
get_input_reg() → str[source]
initialize() → None[source]
iterate() → bool[source]
b: int[source]
chebyshev: ChebyshevPolynomialCoefficient[source]
current_state: pysparq.SparseState | None[source]
eps: float[source]
j0: int[source]
kappa: float[source]
step_state: pysparq.SparseState | None[source]
walk: QuantumWalkNSteps[source]
class PySparQ.pysparq.algorithms.cks_solver.QuantumBinarySearch(qram: pysparq.QRAMCircuit_qutrit, address_offset_reg: str, total_length: int, target_reg: str, result_reg: str)[source]

Quantum binary search for sparse matrix access.

clear_conditions() → None[source]
conditioned_by_all_ones(conds: str | int | list[str | int]) → QuantumBinarySearch[source]
conditioned_by_bit(reg: str | int, pos: int) → QuantumBinarySearch[source]
conditioned_by_nonzeros(cond: str | int | list[str | int]) → QuantumBinarySearch[source]
dag(state: pysparq.SparseState) → None[source]
address_offset_reg: str[source]
max_step: int[source]
qram: pysparq.QRAMCircuit_qutrit[source]
result_reg: str[source]
target_reg: str[source]
total_length: int[source]
class PySparQ.pysparq.algorithms.cks_solver.QuantumWalk(qram: pysparq.QRAMCircuit_qutrit, j_reg: str, b1_reg: str, k_reg: str, b2_reg: str, j_comp_reg: str, k_comp_reg: str, data_offset_reg: str, sparse_offset_reg: str, mat: SparseMatrix)[source]

Quantum walk operator for CKS algorithm.

clear_conditions() → None[source]
conditioned_by_all_ones(conds: str | int | list[str | int]) → QuantumWalk[source]
conditioned_by_bit(reg: str | int, pos: int) → QuantumWalk[source]
conditioned_by_nonzeros(cond: str | int | list[str | int]) → QuantumWalk[source]
dag(state: pysparq.SparseState) → None[source]
b1_reg: str[source]
b2_reg: str[source]
data_offset_reg: str[source]
j_comp_reg: str[source]
j_reg: str[source]
k_comp_reg: str[source]
k_reg: str[source]
mat: SparseMatrix[source]
qram: pysparq.QRAMCircuit_qutrit[source]
sparse_offset_reg: str[source]
class PySparQ.pysparq.algorithms.cks_solver.QuantumWalkNSteps(mat: SparseMatrix, qram: pysparq.QRAMCircuit_qutrit | None = ...)[source]

Multiple quantum walk steps for CKS algorithm.

clear_conditions() → None[source]
conditioned_by_all_ones(conds: str | int | list[str | int]) → QuantumWalkNSteps[source]
conditioned_by_bit(reg: str | int, pos: int) → QuantumWalkNSteps[source]
conditioned_by_nonzeros(cond: str | int | list[str | int]) → QuantumWalkNSteps[source]
create_state() → pysparq.SparseState[source]
dag(state: pysparq.SparseState) → None[source]
first_step(state: pysparq.SparseState) → None[source]
init_environment(state: pysparq.SparseState) → None[source]
make_n_step_state(n_steps: int) → pysparq.SparseState[source]
step(state: pysparq.SparseState) → None[source]
addr_size: int[source]
b1: str[source]
b2: str[source]
data_offset: str[source]
data_size: int[source]
default_reg_size: int[source]
j: str[source]
j_comp: str[source]
k: str[source]
k_comp: str[source]
mat: SparseMatrix[source]
n_row: int[source]
nnz_col: int[source]
qram: pysparq.QRAMCircuit_qutrit[source]
sparse_offset: str[source]
class PySparQ.pysparq.algorithms.cks_solver.SparseMatrix(n_row: int, nnz_col: int, data: list[int], data_size: int, positive_only: bool = ...)[source]

Sparse matrix representation for CKS algorithm.

classmethod from_dense(matrix: numpy.ndarray, data_size: int = ..., positive_only: bool | None = ...) → SparseMatrix[source]
get_data() → list[int][source]
get_sparsity_offset() → int[source]
get_walk_angle_func() → Callable[[int, int, int], list[complex]][source]
data: list[int][source]
data_size: int[source]
n_row: int[source]
nnz_col: int[source]
positive_only: bool[source]
sparsity_offset: int[source]
class PySparQ.pysparq.algorithms.cks_solver.SparseMatrixData(n_row: int, nnz_col: int, data: list[int], data_size: int, positive_only: bool = ..., sparsity_offset: int = ...)[source]

Sparse matrix data for quantum simulation.

data: list[int][source]
data_size: int[source]
n_row: int[source]
nnz_col: int[source]
positive_only: bool[source]
sparsity_offset: int[source]
class PySparQ.pysparq.algorithms.cks_solver.TOperator(qram: pysparq.QRAMCircuit_qutrit, data_offset_reg: str, sparse_offset_reg: str, j_reg: str, b1_reg: str, k_reg: str, b2_reg: str, search_result_reg: str, nnz_col: int, data_size: int, mat: SparseMatrix)[source]

T operator for CKS algorithm.

clear_conditions() → None[source]
conditioned_by_all_ones(conds: str | int | list[str | int]) → TOperator[source]
conditioned_by_bit(reg: str | int, pos: int) → TOperator[source]
conditioned_by_nonzeros(cond: str | int | list[str | int]) → TOperator[source]
dag(state: pysparq.SparseState) → None[source]
b1_reg: str[source]
b2_reg: str[source]
data_offset_reg: str[source]
data_size: int[source]
j_reg: str[source]
k_reg: str[source]
mat: SparseMatrix[source]
nnz_col: int[source]
qram: pysparq.QRAMCircuit_qutrit[source]
search_result_reg: str[source]
sparse_offset_reg: str[source]
PySparQ.pysparq.algorithms.cks_solver.get_coef_common(mat_data_size: int, v: int, row: int, col: int) → list[complex][source]

Get rotation matrix coefficients for general (signed) matrix elements.

PySparQ.pysparq.algorithms.cks_solver.get_coef_positive_only(mat_data_size: int, v: int, row: int, col: int) → list[complex][source]

Get rotation matrix coefficients for positive-only matrix elements.

PySparQ.pysparq.algorithms.cks_solver.make_walk_angle_func(mat_data_size: int, positive_only: bool) → Callable[[int, int, int], list[complex]][source]

Create walk angle function for a matrix.