翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
回路の検査
Amazon Braket の量子回路には、 という擬似時間の概念がありますMoments
。各 は、 ごとに 1 つのゲートを経験qubitできますMoment
。の目的は、回路とそのゲートに対処しやすくし、時間的構造を提供することMoments
です。
注記
通常、モーメントは、 でゲートが実行されるリアルタイムに対応していませんQPU。
回路の深さは、その回路内のモーメントの総数によって与えられます。次の例circuit.depth
に示すように、 メソッドを呼び出す回路深度を表示できます。
# 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)-C----------X- | q1 : -Ry(0.2)--|-ZZ(0.15)--- | | q2 : ----------X-|---------- | q3 : ------------ZZ(0.15)--- T : | 0 | 1 |2| Total circuit depth: 3
上記の回路の合計回路深度は 3 です (モーメント 0
、1
、および として表示されます2
)。各モーメントのゲート動作を確認することができます。
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)])) Instruction('operator': Rx('angle': 0.15, 'qubit_count': 1), 'target': QubitSet([Qubit(0)])) MomentsKey(time=0, qubits=QubitSet([Qubit(1)])) Instruction('operator': Ry('angle': 0.2, 'qubit_count': 1), 'target': QubitSet([Qubit(1)])) MomentsKey(time=1, qubits=QubitSet([Qubit(0), Qubit(2)])) Instruction('operator': CNot('qubit_count': 2), 'target': QubitSet([Qubit(0), Qubit(2)])) MomentsKey(time=1, qubits=QubitSet([Qubit(1), Qubit(3)])) Instruction('operator': ZZ('angle': 0.15, 'qubit_count': 2), 'target': QubitSet([Qubit(1), Qubit(3)])) MomentsKey(time=2, qubits=QubitSet([Qubit(0)])) Instruction('operator': X('qubit_count': 1), 'target': QubitSet([Qubit(0)]))
また、Moments
を介して回路にゲートを追加することもできます。
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 : ---C-H- T : |0|1|2|