Skip to main content
IBM Quantum Platform

CommutationChecker

class qiskit.circuit.CommutationChecker(standard_gate_commutations=None, cache_max_entries=1000000, *, gates=None)

GitHub

ベース: object

2つの操作のコミュテーションをチェックする。

nn 量子ビット上の2つのユニタリー AABB は、以下の場合に交わる

2nFprocess(AB,BA)+12n+1>1ε,\frac{2^n F_{\text{process}}(AB, BA) + 1}{2^n + 1} > 1 - \varepsilon,

ここで

Fprocess(U1,U2)=Tr(U1U2)2n2,F_{\text{process}}(U_1, U_2) = \left|\frac{\mathrm{Tr}(U_1 U_2^\dagger)}{2^n} \right|^2,

また、少数量子ビット系の丸め誤差を考慮し、 ε\varepsilon101210^{-12} に設定した。 この指標は、Qiskitの他の近さチェックとの一貫性のために選ばれている。

可能な場合は、置換関係はルックアップテーブルから照会されます。 HGateこれは、パラメータを持たない標準的なゲート(やなど XGate )や、自由パラメータを持つゲート(角度 ParameterExpression として を持つ RXGate など)の場合に当てはまります。 approximation_degreeそれ以外の場合は、行列ベースのチェックが行われます。このチェックでは、交換操作を実行した際のゲートの平均忠実度が特定の閾値を上回る場合、2つの演算は可換であると言われます(参照)。

バージョン 2.5.0 以降、非推奨となっています

qiskit.circuit.commutation_checker.CommutationChecker.__init__()の引 cache_max_entries 数は、Qiskit 2.5.0 以降、非推奨となっています。 Qiskit 3.0 で削除される予定です。


方法

パラメーター

  • standard_gate_commutations (dict | None)
  • cache_max_entries (int)
  • gates (set[str] | None)

check_commutation_entries

check_commutation_entries(first_op, first_qargs, second_op, second_qargs)

GitHub

もしあれば、保存されている転置関係を返します

パラメーター

  • first_op (Operation) – 最初の手術
  • first_qargs (list) – 最初の演算の量子ビット。
  • second_op (Operation) – 回目の手術。
  • second_qargs (list) – 2番目の演算の量子ビット。

戻り値

ゲートが通勤していれば真、そうでなければ偽。

戻りの型

bool

clear_cached_commutations

clear_cached_commutations()

GitHub

キャッシュされたコミュテーションを保持する辞書をクリアする

内部キャッシュがなくなったため、このメソッドは何も行わない(no-op)ものとなります

バージョン 2.5 以降、非推奨となっています

このメソッド qiskit.circuit.commutation_checker.CommutationChecker.clear_cached_commutations() は、Qiskit 2.5 以降、非推奨となっています。 Qiskit 3.0 で削除される予定です。

commute

commute(op1, qargs1, cargs1, op2, qargs2, cargs2, max_num_qubits=None, approximation_degree=1.0, matrix_max_num_qubits=3)

GitHub

二つの演算が可換であるかどうかを判定する。 の戻り値は、演算が真に True 可換であることを意味し、の戻り値は、演算が可換でないか、 False 可換性チェックがスキップされたことを意味します(例えば、演算に条件がある場合や量子ビット数が多すぎる場合など)。

パラメーター

  • op1 (Operation) – 最初の手術
  • qargs1 (Sequence[Qubit |int]) – 最初の演算の量子ビット。
  • cargs1 (Sequence[Qubit |int]) – 最初の演算のclbits。
  • op2 (Operation) – 回目の手術。
  • qargs2 (Sequence[Qubit |int]) – 2番目の演算の量子ビット。
  • cargs2 (Sequence[Qubit |int]) – 2番目の演算のclbits。
  • max_num_qubits (int | None) – 考慮すべき量子ビットの最大数。いずれかの演算における量子ビット数がこの数を超えた場合、チェックはスキップされる可能性がある。 デフォルトは None、制限なしを意味します。 また、計算される行列の matrix_max_num_qubits 次元を制限する方法も参照してください。
  • approximation_degree (float) – 2つの演算間の平均ゲート・フィデリティがこの数値以上であれば( 1e-12 まで)、両者はコミュートすると仮定される。
  • matrix_max_num_qubits (int) – 行列表現の計算が許可される量子ビットの最大数。 これは、例えばカスタムゲートなど、すぐに利用できる効率的なチェック機能がない場合に必要となります。

戻り値

二つの演算が可換であるかどうか。

戻りの型

bool

commute_nodes

commute_nodes(op1, op2, max_num_qubits=3, approximation_degree=1.0)

GitHub

2 DAGOpNode つのオブジェクトが可換であるかどうかを調べます。

これは と同等ですが、 commute() 演算、量子ビット、およびCLビットが オブジェクトに DAGOpNode まとめられています。 詳細については、こちらをご覧ください commute()

パラメーター

戻りの型

bool

num_cached_entries

num_cached_entries()

GitHub

キャッシュされたエントリーの数を返します

内部キャッシュがもはや存在しないため、このメソッドは常に0を返します。

バージョン 2.5 以降、非推奨となっています

このメソッド qiskit.circuit.commutation_checker.CommutationChecker.num_cached_entries() は、Qiskit 2.5 以降、非推奨となっています。 Qiskit 3.0 で削除される予定です。

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。