View a markdown version of this page

检查电路 - Amazon Braket

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

检查电路

Amazon Braket 中的量子电路有一个名为 Moments 的“伪时间”概念。每个 qubit 每 Moment 只能体验一个门。Moments 的目的是使电路及其门更易于寻址,并提供时间结构。

注意

时刻通常不对应于 QPU 上执行门的实时。

电路深度由该电路中的总时刻数给出。您可以查看调用 circuit.depth 方法的电路深度,如以下示例所示。

from braket.circuits import Circuit # Define a circuit with parametrized gates circ = Circuit().rx(0, 0.15).ry(1, 0.2).cnot(0, 2).zz(1, 3, 0.15).x(0) print(circ) print('Total circuit depth:', circ.depth)
T : │ 0 │ 1 │ 2 │ ┌──────────┐ ┌───┐ q0 : ─┤ Rx(0.15) ├───●────────────────┤ X ├─ └──────────┘ │ └───┘ ┌──────────┐ │ ┌──────────┐ q1 : ─┤ Ry(0.20) ├───┼───┤ ZZ(0.15) ├─────── └──────────┘ │ └────┬─────┘ ┌─┴─┐ │ q2 : ──────────────┤ X ├──────┼───────────── └───┘ │ ┌────┴─────┐ q3 : ────────────────────┤ ZZ(0.15) ├─────── └──────────┘ T : │ 0 │ 1 │ 2 │ Total circuit depth: 3

以上电路的总电路深度为 3(显示为时刻 012)。您可以查看每个时刻的门操作情况。

Moments 函数作为键值对的字典。

  • 键是 MomentsKey(),它包含伪时间和 qubit 信息。

  • 该值的分配类型为 Instructions()

moments = circ.moments for key, value in moments.items(): print(key) print(value, "\n")
MomentsKey(time=0, qubits=QubitSet([Qubit(0)]), moment_type=<MomentType.GATE: 'gate'>, noise_index=0, subindex=0) Instruction('operator': Rx('angle': 0.15, 'qubit_count': 1), 'target': QubitSet([Qubit(0)]), 'control': QubitSet([]), 'control_state': (), 'power': 1) MomentsKey(time=0, qubits=QubitSet([Qubit(1)]), moment_type=<MomentType.GATE: 'gate'>, noise_index=0, subindex=0) Instruction('operator': Ry('angle': 0.2, 'qubit_count': 1), 'target': QubitSet([Qubit(1)]), 'control': QubitSet([]), 'control_state': (), 'power': 1) MomentsKey(time=1, qubits=QubitSet([Qubit(0), Qubit(2)]), moment_type=<MomentType.GATE: 'gate'>, noise_index=0, subindex=0) Instruction('operator': CNot('qubit_count': 2), 'target': QubitSet([Qubit(0), Qubit(2)]), 'control': QubitSet([]), 'control_state': (), 'power': 1) MomentsKey(time=1, qubits=QubitSet([Qubit(1), Qubit(3)]), moment_type=<MomentType.GATE: 'gate'>, noise_index=0, subindex=0) Instruction('operator': ZZ('angle': 0.15, 'qubit_count': 2), 'target': QubitSet([Qubit(1), Qubit(3)]), 'control': QubitSet([]), 'control_state': (), 'power': 1) MomentsKey(time=2, qubits=QubitSet([Qubit(0)]), moment_type=<MomentType.GATE: 'gate'>, noise_index=0, subindex=0) Instruction('operator': X('qubit_count': 1), 'target': QubitSet([Qubit(0)]), 'control': QubitSet([]), 'control_state': (), 'power': 1)

您也可以通过 Moments 为电路添加门。

from braket.circuits import Instruction, Gate new_circ = Circuit() instructions = [Instruction(Gate.S(), 0), Instruction(Gate.CZ(), [1, 0]), Instruction(Gate.H(), 1) ] new_circ.moments.add(instructions) print(new_circ)
T : │ 0 │ 1 │ 2 │ ┌───┐ ┌───┐ q0 : ─┤ S ├─┤ Z ├─────── └───┘ └─┬─┘ │ ┌───┐ q1 : ─────────●───┤ H ├─ └───┘ T : │ 0 │ 1 │ 2 │