オペレータユーティリティ
qiskit_addon_obp.utils.operations
演算子バックプロパゲーションのユーティリティ関数。
apply_op_to
apply_op_to(op1, op1_qargs, op2, op2_qargs, *, apply_as_transform=False)
演算子 op2 を演算子 op1 に適用する。
これらの演算子は、より大きなシステムに作用すると仮定されているため、必ずしも同じ数の量子ビットに作用する必要はない。 各オペレーターのシステム内での位置は、対応する qargs によって定義される。 出力演算子は union(op1_qargs, op2_qargs) で定義される。
デフォルトでは、この関数は op1 を op2 に以下のように適用する:
op2 @ op1
apply_as_transform=True を設定することで、この機能は op1 から op2 を以下のように適用する:
op2.adjoint() @ op1 @ op2
パラメーター
- op1 (SparsePauliOp) –
op2が適用されるオペレーター。 - op1_qargs (list[int]) –
op1の量子ビット・インデックス。 - op2 (SparsePauliOp) –
op1。 - op2_qargs (list[int]) –
op2の量子ビット・インデックス。 - apply_as_transform (bool) –
op1に変換として を適用するかどうか。op2
戻り値
タプル (op, qargs) 。 op は入力 op1 に op2 を左から適用したもので、 qargs は新しい演算子 op のための量子ビットインデックスのリストである。 出力 op の量子ビットIDは、 qargs の同じインデックスのグローバル量子ビットIDに対応する。
例えば、出力 op が SparsePauliOp("YX") 、 qargs が [3, 4の]場合、演算子のqubit 0のX項はグローバルqubit ID 3に対応する。
レイズ
ValueError - 一意な演算子qargsの数は、対応する演算子の量子ビットの数と一致しなければならない。
戻りの型
タプル [*SparsePauliOp*, list[ int ]]
apply_reset_to
apply_reset_to(op, qubit_id, inplace=False)
パウリ演算子にリセット操作を適用する。
この機能は、以下の方法で op にリセット操作を適用する:
<0|op|0>
qubit-qubit_id 、パウリX項またはY項を含む項は、その重みが 0.0。 qubit_id 、パウリZを含む用語は、そのパウリZが恒等式で置き換えられる。
パラメーター
- op (SparsePauliOp) – リセットを適用するオペレータ。
- qubit_id (int) – リセットを適用する量子ビットのインデックス。
- inplace (bool) – 演算子をインプレースで修正するかどうか。
戻り値
変換された演算子
戻りの型
to_global_op
to_global_op(op, qargs, n_qubits)
使用されていない量子ビットに識別子を挿入することで、ローカル演算子をグローバル演算子に変換する。
パラメーター
- op (SparsePauliOp) – 地元企業が事業拡大へ
- qargs (list[int]) – 局所演算子のQubitインデックス。
- n_qubits (int) – グローバルシステムの量子ビット数。
戻り値
n_qubits 量子ビット上の演算子
レイズ
ValueError - Qubit IDが範囲外
戻りの型
reduce_op
reduce_op(global_op)
グローバルなパウリ演算子の無駄のない表現を作成する。
この関数は、パウリI項のみに関連するすべての量子ビットが取り除かれた、入力演算子のリーン表現を返します。 リーン演算子がどの量子ビットに作用するかを示すインデックスのリストも返される。
例:
>>> global_op = SparsePauliOp(["IXI", "IIZ"])
>>> reduced_op, qargs = reduce_op(global_op)
>>> reduced_op
SparsePauliOp(['XI', 'IZ'],
coeffs=[1.+0.j, 1.+0.j])
>>> qargs
[0, 1]パラメーター
global_op (SparsePauliOp) – リーン表現を生成するグローバル演算子
戻り値
- ID項のみに関連する量子ビットを取り除いた、入力演算子の無駄のない表現。
- リーン演算子が作用する量子ビットを指定するインデックスのリスト。
レイズ
ValueError - 入力演算子は同一演算子であってはならない。
戻りの型
タプル [*SparsePauliOp*, list[ int ]]