janus.encode#

量子态编码模块。

编码函数#

schmidt_encode#

janus.encode.schmidt_encode(q_size, data, cutoff=0.0, add_measure=False)[源代码]#

Schmidt编码实现

基于量子态制备和Schmidt分解理论实现数据编码 采用迭代约简策略将经典数据编码到量子态

参数:
  • q_size (int) -- 量子比特总数

  • data (List[float]) -- 输入数据向量(需要归一化)

  • cutoff (float) -- Schmidt分解的截断阈值(默认0.0)

  • add_measure (bool) -- 是否添加测量操作(默认False)

返回:

编码结果,包含量子电路和输出比特索引

返回类型:

SchmidtEncodeResult

bidrc_encode#

janus.encode.bidrc_encode(data, split=0, mode='full')[源代码]#

双向振幅编码

使用分裂的二进制树方法进行量子状态编码,相比于标准的振幅编码方法, 这种方法在门数量和电路深度上更为高效。

参数:

data: 表示量子状态的归一化振幅列表 split: 树分裂点(0表示自动计算)

返回:

Circuit: 包含编码操作的量子电路

异常:

ValueError: 如果数据未归一化或参数不合法

参数:
返回类型:

Circuit

efficient_sparse#

janus.encode.efficient_sparse(q_size, data, add_measure=False)[源代码]#

高效稀疏编码 (Efficient Sparse Encoding)

通过一系列合并操作将状态简化为基态,然后对整个电路求逆。

参数:

q_size: 可用的量子比特总数 data: 量子态数据(列表、数组或字典格式) add_measure: 是否在输出比特上添加测量(默认 False)

返回:
EfficientSparseResult: 包含电路和输出比特信息的结果对象
  • result.circuit: 编码电路

  • result.out_qubits: 输出比特索引列表

  • result.measure(): 返回带测量的电路副本

参数:
返回类型:

EfficientSparseResult

结果类#

SchmidtEncodeResult#

class janus.encode.SchmidtEncodeResult(circuit, out_qubits)[源代码]#

Schmidt编码结果封装类

__init__(circuit, out_qubits)[源代码]#
property circuit#
property out_qubits#
measure()[源代码]#

EfficientSparseResult#

class janus.encode.EfficientSparseResult(circuit, out_qubits)[源代码]#

高效稀疏编码结果类,包含电路和输出比特信息

参数:
__init__(circuit, out_qubits)[源代码]#

初始化编码结果

参数:

circuit: 编码电路 out_qubits: 输出比特索引列表

参数:
property circuit: Circuit#

获取编码电路

property out_qubits: List[int]#

获取输出比特索引列表

get_circuit()[源代码]#

获取编码电路(兼容方法)

返回类型:

Circuit

get_out_qubits()[源代码]#

获取输出比特(兼容方法)

返回类型:

List[int]

measure()[源代码]#

在输出比特上添加测量,返回带测量的电路副本

返回:

Circuit: 带测量操作的电路

返回类型:

Circuit

工具函数#

janus.encode._schmidt(circuit, qubits, data, cutoff)[源代码]#

Schmidt 分解

对量子态进行 Schmidt 分解并生成对应的电路。

参数:

circuit: Janus 量子电路对象 qubits: 量子比特索引列表 data: 量子态振幅列表 cutoff: 奇异值截断阈值

参数:
janus.encode._build_state_dict(data)[源代码]#

将振幅列表转换为状态字典

将一维的振幅列表转换为状态向量的字典表示。

参数:

data: 振幅值列表或数组

返回:

Dict[str, complex]: 状态字典,格式为 {'binary_string': amplitude}

参数:

data (List[float] | List[complex] | ndarray)

返回类型:

Dict[str, complex]

janus.encode._complete_to_unitary(matrix, target_num_qubits)[源代码]#

完成矩阵为幺正矩阵(已弃用,仅保留以兼容)

此函数在 Janus 框架中不使用,因为我们不需要显式的幺正操作。

参数:
返回类型:

ndarray

janus.encode._apply_unitary(circuit, qubits, matrix, cutoff=None)[源代码]#

应用幺正操作(已弃用,仅保留以兼容)

此函数在 Janus 框架中已被简化实现替代。 使用单比特旋转门来近似幺正操作。

参数:

使用示例#

Schmidt 编码#

from janus.encode import schmidt_encode
import numpy as np

data = [1/np.sqrt(2), 1/np.sqrt(2), 0, 0]
circuit = schmidt_encode(q_size=4, data=data, cutoff=1e-4)

高效稀疏编码#

from janus.encode import efficient_sparse

result = efficient_sparse(data, n_qubits=4)