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の他の近さチェックとの一貫性のために選ばれている。

可能であれば、整流関係はルックアップテーブルから照会される。 これは、パラメータのない標準的なゲート(例えば XGateHGateなど)、あるいは自由パラメータを持つゲート(たとえば RXGateParameterExpression を角度として持つような)。 そうでない場合は、マトリックス・ベースのチェックが行われ、2つの演算の平均的なゲート・フィデリティがある閾値以上であれば、その演算はコミュートしているとみなされる( approximation_degree 参照)。 この整流の結果は、キャッシュされたルックアップテーブルに追加される。


方法

パラメーター

  • 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

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

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]) – 第二操作の量子ビット。
  • 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) – 行列表現の計算が許可される量子ビットの最大数。 これは、例えばカスタムゲートなど、すぐに利用できる効率的なチェック機能がない場合に必要となります。

戻り値

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

戻りの型

bool

commute_nodes

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

GitHub

二つの DAGOpNodes が通勤しているかどうかをチェックする。

パラメーター

  • max_num_qubits (int)
  • approximation_degree (float)

戻りの型

bool

num_cached_entries

num_cached_entries()

GitHub

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

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