"""矩阵块编码算法(三对角和基于 QRAM)。"""
from __future__ import annotations
from typing import Union
import numpy as np
[文档]
def get_tridiagonal_matrix(alpha: float, beta: float, dim: int) -> np.ndarray:
"""返回 dim x dim 的三对角矩阵 alpha*I + beta*T。"""
...
[文档]
def get_u_plus(size: int) -> np.ndarray:
"""返回 size x size 的下移(次对角线)矩阵。"""
...
[文档]
def get_u_minus(size: int) -> np.ndarray:
"""返回 size x size 的上移(超对角线)矩阵。"""
...
[文档]
class PlusOneAndOverflow:
"""将寄存器加 1 并跟踪溢出。"""
def __init__(self, main_reg: str, overflow: str) -> None: ...
[文档]
def conditioned_by_nonzeros(
self, conds: Union[str, list[str]]
) -> "PlusOneAndOverflow": ...
[文档]
def conditioned_by_all_ones(
self, conds: Union[str, list[str]]
) -> "PlusOneAndOverflow": ...
[文档]
def conditioned_by_bit(
self, reg: Union[str, int], pos: int
) -> "PlusOneAndOverflow": ...
[文档]
def conditioned_by_value(
self, reg: Union[str, int], value: int
) -> "PlusOneAndOverflow": ...
[文档]
def clear_conditions(self) -> None: ...
def __call__(self, state: "SparseState") -> None: ...
[文档]
def dag(self, state: "SparseState") -> None: ...
[文档]
class BlockEncodingTridiagonal:
"""三对角矩阵 alpha*I + beta*T 的块编码。"""
[文档]
prep_state: list[complex]
def __init__(
self, main_reg: str, anc_UA: str, alpha: float, beta: float
) -> None: ...
[文档]
def conditioned_by_nonzeros(
self, conds: Union[str, list[str]]
) -> "BlockEncodingTridiagonal": ...
[文档]
def conditioned_by_all_ones(
self, conds: Union[str, list[str]]
) -> "BlockEncodingTridiagonal": ...
[文档]
def conditioned_by_bit(
self, reg: Union[str, int], pos: int
) -> "BlockEncodingTridiagonal": ...
[文档]
def clear_conditions(self) -> None: ...
def __call__(self, state: "SparseState") -> None: ...
[文档]
def dag(self, state: "SparseState") -> None: ...
[文档]
class UR:
"""基于 QRAM 块编码的右乘算子。"""
[文档]
qram: "QRAMCircuit_qutrit"
def __init__(
self,
qram: "QRAMCircuit_qutrit",
column_index: str,
data_size: int,
rational_size: int,
) -> None: ...
[文档]
def conditioned_by_nonzeros(
self, conds: Union[str, list[str]]
) -> "UR": ...
[文档]
def conditioned_by_all_ones(
self, conds: Union[str, list[str]]
) -> "UR": ...
[文档]
def conditioned_by_bit(
self, reg: Union[str, int], pos: int
) -> "UR": ...
[文档]
def clear_conditions(self) -> None: ...
def __call__(self, state: "SparseState") -> None: ...
[文档]
def dag(self, state: "SparseState") -> None: ...
[文档]
class UL:
"""基于 QRAM 块编码的左乘算子。"""
[文档]
qram: "QRAMCircuit_qutrit"
def __init__(
self,
qram: "QRAMCircuit_qutrit",
row_index: str,
column_index: str,
data_size: int,
rational_size: int,
) -> None: ...
[文档]
def conditioned_by_nonzeros(
self, conds: Union[str, list[str]]
) -> "UL": ...
[文档]
def conditioned_by_all_ones(
self, conds: Union[str, list[str]]
) -> "UL": ...
[文档]
def conditioned_by_bit(
self, reg: Union[str, int], pos: int
) -> "UL": ...
[文档]
def clear_conditions(self) -> None: ...
def __call__(self, state: "SparseState") -> None: ...
[文档]
def dag(self, state: "SparseState") -> None: ...
[文档]
class BlockEncodingViaQRAM:
"""通过 QRAM 对任意矩阵进行块编码。"""
[文档]
qram: "QRAMCircuit_qutrit"
def __init__(
self,
qram: "QRAMCircuit_qutrit",
column_index: str,
row_index: str,
data_size: int,
rational_size: int,
) -> None: ...
[文档]
def conditioned_by_nonzeros(
self, conds: Union[str, list[str]]
) -> "BlockEncodingViaQRAM": ...
[文档]
def conditioned_by_all_ones(
self, conds: Union[str, list[str]]
) -> "BlockEncodingViaQRAM": ...
[文档]
def conditioned_by_bit(
self, reg: Union[str, int], pos: int
) -> "BlockEncodingViaQRAM": ...
[文档]
def clear_conditions(self) -> None: ...
def __call__(self, state: "SparseState") -> None: ...
[文档]
def dag(self, state: "SparseState") -> None: ...
[文档]
def create_block_encoding_demo() -> str:
"""返回块编码用法的演示脚本字符串。"""
...