组合操作

组合操作 (Composite) 由多个子操作构成,形成操作树的内部节点。

StandardComposite

默认行为:子操作 T-count 简单求和。

from pyqres.core.operation import StandardComposite

class MyComposite(StandardComposite):
    def __init__(self, reg_list, param_list=None):
        super().__init__(reg_list=reg_list, param_list=param_list)
        self.program_list = [
            Hadamard([self.reg_list[0]]),
            CNOT([self.reg_list[0], self.reg_list[1]]),
        ]
        self.declare_program_list()

AbstractComposite

自定义 T-count 聚合逻辑,重写 sum_t_count() 方法。

from pyqres.core.operation import AbstractComposite

class AmplitudeAmplification(AbstractComposite):
    def __init__(self, reg_list, param_list=None):
        super().__init__(reg_list=reg_list, param_list=param_list)
        # ... 构建 program_list

    def sum_t_count(self, t_count_list):
        # 自定义聚合公式
        t_oracle = t_count_list[0]
        t_diffusion = t_count_list[1]
        iterations = ...  # 迭代次数
        return (t_oracle + t_diffusion) * iterations

YAML 生成

组合操作通常通过 YAML DSL 定义,由 pyqres compile 自动生成 Python 代码。 详见 YAML DSL