mindquantum.algorithm.compiler.GateReplacer

查看源文件
class mindquantum.algorithm.compiler.GateReplacer(ori_example_gate: BasicGate, wanted_example_circ: Circuit)[源代码]

将给定的量子门替换成给定的量子线路。

参数:
  • ori_example_gate (BasicGate) - 想要替换的量子门。请注意,相同类型且拥有相同个数的作用为和控制为的量子门会被替换。

  • wanted_example_circ (Circuit) - 想要的量子线路。

样例:

>>> from mindquantum.algorithm.compiler import GateReplacer, compile_circuit
>>> from mindquantum.core.circuit import Circuit
>>> from mindquantum.core.gates import X
>>> circ = Circuit().x(1, 0).h(1).x(1, 2)
>>> circ
q0: ────■─────────────────

      ┏━┻━┓ ┏━━━┓ ┏━━━┓
q1: ──┨╺╋╸┠─┨ H ┠─┨╺╋╸┠───
      ┗━━━┛ ┗━━━┛ ┗━┳━┛

q2: ────────────────■─────
>>> equivalent_cnot = Circuit().h(0).z(0, 1).h(0)
>>> equivalent_cnot
      ┏━━━┓ ┏━━━┓ ┏━━━┓
q0: ──┨ H ┠─┨ Z ┠─┨ H ┠───
      ┗━━━┛ ┗━┳━┛ ┗━━━┛

q1: ──────────■───────────
>>> compiler = GateReplacer(X.on(0, 1), equivalent_cnot)
>>> compiler
GateReplacer<
        ┏━━━┓
  q0: ──┨╺╋╸┠───
        ┗━┳━┛

  q1: ────■─────
   ->
        ┏━━━┓ ┏━━━┓ ┏━━━┓
  q0: ──┨ H ┠─┨ Z ┠─┨ H ┠───
        ┗━━━┛ ┗━┳━┛ ┗━━━┛

  q1: ──────────■───────────
>
>>> compile_circuit(compiler, circ)
q0: ──────────■───────────────────────────────────

      ┏━━━┓ ┏━┻━┓ ┏━━━┓ ┏━━━┓ ┏━━━┓ ┏━━━┓ ┏━━━┓
q1: ──┨ H ┠─┨ Z ┠─┨ H ┠─┨ H ┠─┨ H ┠─┨ Z ┠─┨ H ┠───
      ┗━━━┛ ┗━━━┛ ┗━━━┛ ┗━━━┛ ┗━━━┛ ┗━┳━┛ ┗━━━┛

q2: ──────────────────────────────────■───────────
do(dag_circuit: DAGCircuit)[源代码]

执行门替换规则。

参数:
  • dag_circuit (DAGCircuit) - 想要编译的量子线路的 DAG 图。