Skip to main content
IBM Quantum Platform

PauliEvolutionGate

class qiskit.circuit.library.PauliEvolutionGate(operator, time=1.0, label=None, synthesis=None)

GitHub

ベース: Gate

パウリからなる演算子の時間発展。

tt パウリ項と(実)進化時間からなるエルミート作用素 HH の場合、このゲートはユニタリーを表す

U(t)=eitH.U(t) = e^{-itH}.

進化ゲートは、パウリ回転ゲートとファクター2の関係にある。 例えば、パウリ XX 演算子の時間発展は、パウリ XX 回転 RXR_X と次のようにつながっている

U(t)=eitX=RX(2t).U(t) = e^{-itX} = R_X(2t).

コンピレーション:

このゲートは、正確な進化 U(t)U(t) を表している。しかし、この操作を正確に実装するには、一般に指数関数的な数のゲートが必要である。 したがって、コンパイラは通常、ユニタリー U(t)U(t)近似式を実装する。 LieTrotter. synthesis 引数を渡すことで、コンパイラが使用するメソッドを指定できます。 qiskit.synthesis を参照のこと。

のような近似と手法の順序に注意してください。 control()power() などが呼ばれる順番が重要である。 順番を変えることで、異なるユニタリーになることもある。

通勤手当の確認:

Qiskitは、他のパウリベースのゲート( PauliGate 例:NXなど)を用いた PauliEvolutionGate インスタンスの効率 PauliProductMeasurement的な交換チェックをサポートしています。 ただし、これらのチェックには演算子を SparseObservable 形式に変換する必要があるため、多数の交換性チェックが予想される場合(例:多数の連続 PauliEvolutionGateしたsを含む回路がある場合)には、この演算子クラスを使用して演算子を構築することを強く推奨します。

例:

from qiskit.circuit import QuantumCircuit
from qiskit.circuit.library import PauliEvolutionGate
from qiskit.quantum_info import SparsePauliOp

X = SparsePauliOp("X")
Z = SparsePauliOp("Z")
I = SparsePauliOp("I")

# build the evolution gate
operator = (Z ^ Z) - 0.1 * (X ^ I)
evo = PauliEvolutionGate(operator, time=0.2)

# plug it into a circuit
circuit = QuantumCircuit(2)
circuit.append(evo, range(2))
print(circuit.draw())

上記は印刷される( -0.1 係数は印刷されないことに注意!):

     ┌──────────────────────────┐
q_0: ┤0                         ├
     │  exp(-it (ZZ + XI))(0.2) │
q_1: ┤1                         ├
     └──────────────────────────┘

参照資料:

[1] G. Li et al. Paulihedral:量子シミュレーションカーネルのための一般化されたブロックワイズコンパイラ最適化フレームワーク (2021). arXiv:2109.03371

パラメーター

  • operator (qiskit.quantum_info.Pauli |SparsePauliOp |SparseObservable |list[qiskit.quantum_info.Pauli |SparsePauliOp |SparseObservable]) – 進化するオペレーター。 また、要素が通約演算子の和である非通約演算子のリストとして提供することもできる。 例: [XY + YX, ZZ + ZI + IZ, YY]
  • time (ParameterValueType) – 進化の時間。
  • label (str | None) – ビジュアライゼーションで表示するゲートのラベル。 デフォルトでは、ラベルは exp(-it <operators>) に設定されている。 <operators> はポーリの合計。 ラベルにはポーリスの係数は含まれていない。 例については、クラスのドキュメントを参照してください。
  • synthesis (EvolutionSynthesis | None) – 総合戦略。 Noneの場合、デフォルトの合成は1回の繰り返しによるリー・トロッター積の式となる。

属性

base_class

この命令の基本クラスを取得します。 これは self の継承ツリーにあることが保証されている。

命令の "基本クラス "とは、そのオブジェクトが回路アプリケーションのために完全 に互換性があると考えるべき、継承ツリーで最も低いクラスのことである。 これは通常、サブクラスが純粋にベースクラスよりもプログラマーの利便性を向上させるために定義され、ベースクラスが動作の観点から「真の」クラスであることを意味する。 特に、上書きしないでください base_class 代替測定戦略や、特定のパラメータセットを持つパラメータ化されたゲートのバージョンなど、ハードウェアによって異なる方法で実装される命令のカスタムバージョンを定義する場合、 Target 完全にパラメータ化されたゲートから。

これは、標準ライブラリ命令のシングルトン・インスタンスの場合を除き、 type(obj) と正確に等価であることが多い。 これらのシングルトン・インスタンスはベース・クラスの特別なサブクラスであり、このプロパティはそのベースを返す。 例:

>>> isinstance(XGate(), XGate)
True
>>> type(XGate()) is XGate
False
>>> XGate().base_class is XGate
True

一般的に、命令の正確なクラスは当てにすべきではない。与えられた回路内では、ほとんどの状況で Instruction.name

decompositions

SessionEquivalenceLibrary から命令の分解を取得する。

definition

他の基本ゲートの観点から定義を返す。

label

返品指示ラベル

mutable

このインスタンスはミュータブルなユニークインスタンスかどうか。

この属性が False である場合、ゲートのインスタンスは共有シングルトンであり、ミュータブルではありません。

name

名前を返す。

num_clbits

clbits の数を返す。

num_qubits

量子ビットの数を返す。

params

この Instruction のパラメーターは以下の通りである。 理想はゲートアングルだ。

time

ゲートパラメータに格納されている進化時間を返す。

戻り値

進化の時間。


方法

add_decomposition

add_decomposition(decomposition)

GitHub

SessionEquivalenceLibrary に命令の分解を追加する。

broadcast_arguments

broadcast_arguments(qargs, cargs)

GitHub

引数とその関係の検証と処理。

例えば、 cx([q[0],q[1]], q[2])cx(q[0], q[2]); cx(q[1], q[2]) を意味する。 このメソッドでは、正しいグループ分けの引数が得られる。 与えられた例では

in: [[q[0],q[1]], q[2]],[]
outs: [q[0], q[2]], []
      [q[1], q[2]], []

一般的な放送ルールは以下の通り:

  • len(qargs) == 1:

    [q[0], q[1]] -> [q[0]],[q[1]]
  • len(qargs) == 2:

    [[q[0], q[1]], [r[0], r[1]]] -> [q[0], r[0]], [q[1], r[1]]
    [[q[0]], [r[0], r[1]]]       -> [q[0], r[0]], [q[0], r[1]]
    [[q[0], q[1]], [r[0]]]       -> [q[0], r[0]], [q[1], r[0]]
  • len(qargs) >= 3:

    [q[0], q[1]], [r[0], r[1]],  ...] -> [q[0], r[0], ...], [q[1], r[1], ...]

パラメーター

  • qargs (list) – 量子ビット引数のリスト。
  • cargs (list) – 古典的なビット引数のリスト。

戻り値

単一の引数を持つタプル。

レイズ

CircuitError - 入力が有効でない場合。 例えば、引数の数がゲートの予想と一致しない。

戻りの型

Iterable [ tuple [ list, list ]]

control

control(num_ctrl_qubits=1, label=None, ctrl_state=None, annotated=None)

GitHub

それ自身のコントロールされたバージョンを返す。

結果は、指定された制御されたバージョンの eitHe^{-itH} である。返されたゲートは eitHCe^{-it H_C} を表し、 HCH_C は元の演算子 HH であり、 00|0\rangle\langle 0|11|1\rangle\langle 1| のプロジェクター(制御状態による)で調整されたものである。

制御ゲートは、の値にかかわらず annotatedPauliEvolutionGateとして実装される。

パラメーター

  • num_ctrl_qubits (int) – 追加するコントロールの数。 デフォルトは1です。
  • label (str | None) – 結果として得られるパウリ進化ゲートのラベル(可視化時に表示するため)。 デフォルトでは、ラベルは に設定される exp(-it <operators>) 。ここで <operators> はパウリ演算子の和である。 なお、ラベルにはパウリの係数は含まれていないことに注意してください。 クラスのドキュメント文字列を参照してください。
  • ctrl_state (int |str | None) – ゲートの制御状態。整数またはビット列(例: "110")で指定されます。 の場合 None、デフォルトでは全1の状態になります 2**num_ctrl_qubits - 1
  • annotated (bool | None) – 無視された。

戻り値

このゲートの制御版。

戻りの型

ゲート

copy

copy(name=None)

GitHub

インストラクションのコピー

パラメーター

name (str) – コピーされた回路に与えられる名前。 None の場合、名前はそのまま。

戻り値

現在の命令のコピーで、名前が与えられていればそれを更新する

戻りの型

qiskit.circuit.Instruction

inverse

inverse(annotated=False)

GitHub

進化時間の符号を反転させた逆数を返す。

パラメーター

annotated (bool)

is_parameterized

is_parameterized()

GitHub

Instructionコンパイル時のパラメータが含まれているかどうかを返す。

power

power(exponent, annotated=False)

GitHub

このゲートを exponent のパワーに引き上げる。

結果は eitpHe^{-i tp H} を表し、 ppexponent と等しい。

パラメーター

  • exponent (float) – ゲートを上げる力。
  • annotated (bool) – このクラスには適用されない。 通常、 TrueAnnotatedOperation を返します。 Gate. しかし、パウリ進化のべき乗を次のように効率的に表すことができる。 PauliEvolutionGateと表すことができる。

戻り値

gate^exponent を実装する操作。

戻りの型

ゲート

repeat

repeat(n)

GitHub

nnself を回繰り返す命令を作成します。

パラメーター

n (int) – 命令を繰り返す回数

戻り値

定義を含む。

戻りの型

qiskit.circuit.Instruction

レイズ

CircuitError - もしn<1なら。

reverse_ops

reverse_ops()

GitHub

複合命令の場合は、サブ命令の順序を逆にする。

これは、すべてのサブ命令を再帰的に反転させることによって行われる。 ゲートを反転させることはない。

戻り値

を持つ新しい命令である。

サブ・インストラクションが逆。

戻りの型

qiskit.circuit.Instruction

soft_compare

soft_compare(other)

GitHub

ゲート間のソフトな比較。 それらの名前、量子ビット数、古典的なビット番号は一致していなければならない。 パラメータの数は一致しなければならない。 各パラメーターが比較される。 ParameterExpression、それは考慮されない。

パラメーター

other (instruction) – その他の指導

戻り値

はパラメータ式まで自己と他者が等しい。

戻りの型

bool

to_matrix

to_matrix()

GitHub

行列 eitHe^{-it H}numpy.ndarray として返す.

戻り値

このゲートが表す行列。

レイズ

ValueError - time パラメーターが数値でない場合。

戻りの型

ndarray

to_mutable

to_mutable()

GitHub

このゲートの変更可能なコピーを返す。

このメソッドは、このゲート・インスタンスの新しい変更可能なコピーを返す。 シングルトンインスタンスが使用されている場合、これは新しいユニークなインスタンスとなり、変異させることができる。 インスタンスがすでにミュータブルであれば、そのインスタンスのディープコピーとなる。

validate_parameter

validate_parameter(parameter)

GitHub

ゲートパラメータは、int、float、または ParameterExpression

パラメーター

parameter (ParameterExpression |float)

戻りの型

ParameterExpression | フロート

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