SubstitutePi4Rotations
class qiskit.transpiler.passes.SubstitutePi4Rotations(*args, **kwargs)
ベース: TransformationPass
角度が の整数倍である回転ゲートを、クリフォードゲート、 TGate および TdgGate ゲートの離散集合に変換する。
単一量子ビットの回転ゲート(RXGate, RYGate, RZGate, PhaseGate)および2量子ビットの回転ゲート(RXXGate, RYYGate, RZZGate, RZXGate)について、角度が の倍数である場合、その分解には単一の TGate または TdgGate ゲートに加え、いくつかのクリフォードゲートが必要となる。 2量子ビットの制御回転ゲート(CPhaseGate, CRXGate, CRYGate, CRZGate)について、角度が の倍数である場合、その分解には CPhaseGate 、の場合には3つの TGate または TdgGate ゲートが必要であり、それ以外の場合は2つが必要となるほか、いくつかのクリフォードゲートも必要となる。 なお、 (制御回転の場合は )の倍数、あるいは同等の (制御回転の場合は )の整数倍であっても、クリフォードゲートのみを用いて記述できることに注意されたい。
例:
from qiskit.circuit import QuantumCircuit
from qiskit.transpiler.passes import SubstitutePi4Rotations
from qiskit.quantum_info import Operator
# The following quantum circuit consists of 5 Clifford gates,
# four rotation gates whose angles are integer multiples of pi/4,
# and one controlled rotation gate whose angle is an integer multiple of pi/2
qc = QuantumCircuit(3)
qc.cx(0, 1)
qc.rz(pi/4, 0)
qc.cz(0, 1)
qc.rx(3*pi/4, 1)
qc.h(1)
qc.s(2)
qc.ry(2*pi/4, 2)
qc.cz(2, 0)
qc.rzz(pi/4, 0, 2)
qc.cry(3*pi/2, 2, 1)
# The transformed circuit consists of Clifford, T and Tdg gates
qct = SubstitutePi4Rotations()(qc)
clifford_t_names = get_clifford_gate_names() + ["t"] + ["tdg"]
assert(set(qct.count_ops().keys()).issubset(set(clifford_t_names)))
# The circuits before and after the transformation are equivalent
assert Operator(qc) == Operator(qct)パラメーター
近似精度 – 許容差計算に使用される。 これは平均ゲート忠実度の閾値を与える。
属性
is_analysis_pass
パスが解析パスかどうかを確認する。
パスが AnalysisPass, である場合、そのパスはDAGを解析し、その解析結果をプロパティセットに書き込むことができることを意味します。 この種のパスでは、DAGへの変更は許可されません。
is_transformation_pass
パスが変換パスであるかどうかを確認する。
パスが TransformationPass, の場合、そのパスはDAGを操作できますが、プロパティセットを変更することはできません(ただし読み取りは可能です)。
方法
execute
execute(passmanager_ir, state, callback=None)
入力Qiskit IRに対して最適化タスクを実行する。
パラメーター
- passmanager_ir (Any) – Qiskit IR を最適化します。
- state (PassManagerState) – パスマネージャー自身によるワークフロー実行に関連付けられた状態。
- callback (Callable | None) – 最適化タスクの実行ごとに呼び出されるコールバック関数。
戻り値
最適化されたQiskit IRとワークフローの現状。
戻りの型
タプル [ Any, PassManagerState ]
name
run
update_status
update_status(state, run_state)
ワークフローのステータスを更新する。
パラメーター
- state (PassManagerState) – 更新するパスワードマネージャーの状態を送信します。
- run_state (RunState) – 現在のタスクの完了状況。
戻り値
更新されたパスワードマネージャーの状態。
戻りの型