Qドリフト
class qiskit.synthesis.QDrift(reps=1, insert_barriers=False, cx_structure='chain', atomic_evolution=None, seed=None, wrap=False, preserve_order=True, *, atomic_evolution_sparse_observable=False)
ベース: ProductFormula
QDrift Trotterization法は、Trotterizationの各項を、その重みに比例した確率でランダムに選択する。 文献のアール・キャンベルの研究に基づいている。 [1].
参考文献
[1] : E. Campbell, "A random compiler for fast Hamiltonian simulation" (2018). arXiv:quant-ph/1811.08017
パラメーター
- reps (int) – トロッター化回路の繰り返し回数。
- insert_barriers (bool) – 原子進化の間にバリアを挿入するかどうか。
- cx_structure (str) – パウリ進化のためにCXゲートをどのように配置するかは、
"chain"、隣同士の接続を使うか、"fountain"、すべての量子ビットを1つに接続するかである。 これは、atomic_evolution is None。 - atomic_evolution (Callable[[QuantumCircuit, qiskit.quantum_info.Pauli |SparsePauliOp, float], None] | None) – の進化を適用する関数。
PauliまたはSparsePauliOpの展開を回路に適用する関数。 この関数は3つの引数を取る:進化を加える回路、進化させるパウリ演算子、進化時間。 デフォルトでは、1つのパウリ進化は、CXゲートの連鎖と、RZゲートの1つに分解される。 - seed (int | None) – 無作為抽出プロセスの再現性を高めるためのオプションのシード。
- wrap (bool) – アトミック進化をカスタムゲートオブジェクトにラップするかどうか。 これは、
atomic_evolution is None。 - preserve_order (bool) –
Falseの場合、演算子の項を並べ替えることで、より浅い進化回路が得られる可能性がある。 単項で演算子を合成する場合は関係ない。 - atomic_evolution_sparse_observable (bool) – カスタム
atomic_evolution。SparseObservableへの変換を自動的に適用するには、この引数をFalseに設定する。SparsePauliOp. この引数はQiskit 2.2 までサポートされている。SparseObservableをサポートする必要があります。
属性
settings
オブジェクトを再構築するために使用できる、辞書内の設定を返します。
戻り値
この製品式の設定を含む辞書。
レイズ
NotImplementedError - カスタム・アトミック進化が設定されている場合、シリアライズできない。
方法
expand
expand(evolution)
積の公式を適用して、進化ゲートのハミルトニアンを展開する。
パラメーター
evolution (PauliEvolutionGate) – そのハミルトニアンは PauliEvolutionGateそのハミルトニアンを展開する。
戻り値
各要素は (paulistring, qubits, coefficient) である。 例えば、 H = XI + ZZ のLie-Trotter展開は、 [("X", [1], 1), ("ZZ", [0, 1], 1)] を返す。
戻りの型
synthesize
synthesize(evolution)
を合成する。 PauliEvolutionGate.
パラメーター
evolution (PauliEvolutionGate) – 合成する進化の門。
戻り値
進化を実装した回路。
戻りの型