CommutationChecker
class qiskit.circuit.CommutationChecker(standard_gate_commutations=None, cache_max_entries=1000000, *, gates=None)
ベース: object
2つの操作のコミュテーションをチェックする。
量子ビット上の2つのユニタリー と は、以下の場合に交わる
ここで
また、少数量子ビット系の丸め誤差を考慮し、 を に設定した。 この指標は、Qiskitの他の近さチェックとの一貫性のために選ばれている。
可能であれば、整流関係はルックアップテーブルから照会される。 これは、パラメータのない標準的なゲート(例えば XGate や HGateなど)、あるいは自由パラメータを持つゲート(たとえば RXGate を ParameterExpression を角度として持つような)。 そうでない場合は、マトリックス・ベースのチェックが行われ、2つの演算の平均的なゲート・フィデリティがある閾値以上であれば、その演算はコミュートしているとみなされる( approximation_degree 参照)。 この整流の結果は、キャッシュされたルックアップテーブルに追加される。
方法
パラメーター
check_commutation_entries
check_commutation_entries(first_op, first_qargs, second_op, second_qargs)
もしあれば、保存されている転置関係を返します
パラメーター
- first_op (Operation) – 最初の手術
- first_qargs (list) – 最初の演算の量子ビット。
- second_op (Operation) – 回目の手術。
- second_qargs (list) – 2番目の演算の量子ビット。
戻り値
ゲートが通勤していれば真、そうでなければ偽。
戻りの型
clear_cached_commutations
commute
commute(op1, qargs1, cargs1, op2, qargs2, cargs2, max_num_qubits=None, approximation_degree=1.0, matrix_max_num_qubits=3)
二つの演算が可換であるかどうかを判定する。 の戻り値は、演算が真に True 可換であることを意味し、の戻り値は、演算が可換でないか、 False 可換性チェックがスキップされたことを意味します(例えば、演算に条件がある場合や量子ビット数が多すぎる場合など)。
パラメーター
- op1 (Operation) – 最初の手術
- qargs1 (Sequence[Qubit |int]) – 最初の操作の量子ビット
- cargs1 (Sequence[Qubit |int]) – 最初の操作のclbits。
- op2 (Operation) – 回目の手術。
- qargs2 (Sequence[Qubit |int]) – 第二操作の量子ビット。
- cargs2 (Sequence[Qubit |int]) – 第二操作のclbits。
- max_num_qubits (int | None) – 考慮すべき量子ビットの最大数。いずれかの演算における量子ビット数がこの数を超えた場合、チェックはスキップされる可能性がある。 デフォルトは
None、制限なしを意味します。 また、計算される行列のmatrix_max_num_qubits次元を制限する方法も参照してください。 - approximation_degree (float) – 2つの演算間の平均ゲート・フィデリティがこの数値以上であれば(
1e-12まで)、両者はコミュートすると仮定される。 - matrix_max_num_qubits (int) – 行列表現の計算が許可される量子ビットの最大数。 これは、例えばカスタムゲートなど、すぐに利用できる効率的なチェック機能がない場合に必要となります。
戻り値
二つの演算が可換であるかどうか。
戻りの型
commute_nodes
commute_nodes(op1, op2, max_num_qubits=3, approximation_degree=1.0)
二つの DAGOpNodes が通勤しているかどうかをチェックする。
パラメーター
戻りの型