Skip to main content
IBM Quantum Platform

ProductFormula

class qiskit.synthesis.ProductFormula(order, reps=1, insert_barriers=False, cx_structure='chain', atomic_evolution=None, wrap=False, preserve_order=True, *, atomic_evolution_sparse_observable=False)

GitHub

Bases : EvolutionSynthesis

Classe de base de la formule de produit pour la décomposition des exponentielles d'opérateurs non commutatifs.

LieTrotter et SuzukiTrotter héritent de cette classe.

Paramètres

  • order (int) – L'ordre de la formule du produit.
  • reps (int) – Le nombre de pas de temps.
  • insert_barriers (bool) – Insérer ou non des barrières entre les évolutions atomiques.
  • cx_structure (str) – La façon de disposer les portes CX pour les évolutions de Pauli peut être "chain", où les connexions avec le voisin le plus proche sont utilisées, ou "fountain", où tous les qubits sont connectés à un seul. Cela ne prend effet que lorsque atomic_evolution is None.
  • Pauliatomic_evolution (Callable[[QuantumCircuit, qiskit.quantum_info.Pauli |SparsePauliOp, float], None] | None) – Une fonction permettant d'appliquer l'évolution d'un seul terme, ou SparsePauliOp uniquement de termes commutatifs, à un circuit. La fonction prend trois arguments : le circuit auquel ajouter l'évolution, l'opérateur de Pauli à faire évoluer et le temps d'évolution. Par défaut, une évolution de Pauli unique est décomposée en une chaîne de CX portes et en une seule RZ porte.
  • wrap (bool) – Indique s'il faut envelopper les évolutions atomiques dans des objets de porte personnalisés. Notez que la valeur True est plus lente que la valeur False. Cela ne prend effet que lorsque atomic_evolution is None.
  • preserve_order (bool) – Si False, il est possible de réorganiser les termes de l'opérateur afin d'obtenir un circuit d'évolution moins profond. Non pertinent lors de la synthèse d'un opérateur avec un seul terme.
  • atomic_evolution_sparse_observable (bool) – Si un atomic_evolution personnalisé est transmis, qui ne supporte pas encore les SparseObservableen entrée, donnez à cet argument la valeur False pour appliquer automatiquement une conversion en SparsePauliOp. Cet argument est pris en charge jusqu'à ce que Qiskit 2.2, date à laquelle toutes les évolutions atomiques doivent prendre en charge SparseObservableen entrée.

Attributs

settings

Renvoie les paramètres dans un dictionnaire, qui peut être utilisé pour reconstruire l'objet.

Retours

Un dictionnaire contenant les paramètres de cette formule de produit.

Augmentations

NotImplementedError - Si une évolution atomique personnalisée est définie, qui ne peut pas être sérialisée.


Méthodes

expand

expand(evolution)

GitHub

Appliquez la formule du produit pour développer l'hamiltonien dans la porte d'évolution.

Paramètres

evolution (PauliEvolutionGate) – Le PauliEvolutionGatedont nous développons l'hamiltonien.

Retours

Une liste de rotations de Pauli dans un format clairsemé, où chaque élément est (paulistring, qubits, coefficient). Par exemple, l'expansion de Lie-Trotter de H = XI + ZZ renverrait [("X", [1], 1), ("ZZ", [0, 1], 1)].

Type de retour

list[ tuple[ str, tuple[ int ], ParameterValueType ]]]

synthesize

synthesize(evolution)

GitHub

Synthétiser a PauliEvolutionGate.

Paramètres

evolution (PauliEvolutionGate) – La porte d'évolution pour synthétiser.

Retours

Un circuit mettant en œuvre l'évolution.

Type de retour

QuantumCircuit

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.