Skip to main content
IBM Quantum Platform

qiskit.circuit.library.evolved_operator_ansatz

qiskit.circuit.library.evolved_operator_ansatz(operators, reps=1, evolution=None, insert_barriers=False, name='EvolvedOps', parameter_prefix='t', remove_identities=True, flatten=None)

GitHub

演算子の展開からアナザッツを構築する。

演算子 [O1,...,OJ][O_1, ..., O_J]RR の繰り返し(reps)のセットに対して、この回路は次のように定義される

r=1R(j=J1eiθj,rOj)\prod_{r=1}^{R} \left( \prod_{j=J}^1 e^{-i\theta_{j, r} O_j} \right)

ここで、指数 exp(iθOj)exp(-i\theta O_j) は、 evolution で指定されている積の公式を使って展開される。

例:

from qiskit.circuit.library import evolved_operator_ansatz
from qiskit.quantum_info import Pauli

ops = [Pauli("ZZI"), Pauli("IZZ"), Pauli("IXI")]
ansatz = evolved_operator_ansatz(ops, reps=3, insert_barriers=True)
ansatz.draw("mpl")
先のコードで出力された回路図。

パラメーター

  • operators (BaseOperator | Sequence[BaseOperator]) – 進化するオペレーターたち 単一の演算子でも、一連の演算子でもよい。
  • reps (int) – 進化した演算子を繰り返す回数。
  • evolution (EvolutionSynthesis | None) – どの進化合成を使うかの指定。 PauliEvolutionGate. デフォルトは1次のトロッター化。 型の演算子は OperatorHamiltonianGateトロッター化では展開するハミルトニアンの項がないからである。
  • insert_barriers (bool) – 各進化の間にバリアを挿入するかどうか。
  • name (str) – 回路の名前。
  • parameter_prefix (str | Sequence[str]) – 回路パラメータの名前を設定します。 文字列の場合、各パラメータに同じ接頭辞が使用されます。 演算子ごとに接頭辞を指定するためのリストとしても使用できます。
  • remove_identities (bool) – True の場合、同一性演算子は無視する。 Operator 入力をチェックしないことに注意)。 これにより、IDに関連するパラメータも削除される。
  • flatten (bool | None) – True の場合、ゲート・オブジェクトの複数のレイヤーの中に入れ子にするのではなく、フラットな回路が返される。 これを False に設定すると、特にパラメーター・バインディングのパフォーマンスが著しく低下するが、よりきれいに視覚化するためには望ましい。

戻りの型

QuantumCircuit

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