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

Basi: EvolutionSynthesis

Classe base della formula prodotto per la decomposizione di esponenziali di operatori non commutativi.

LieTrotter e SuzukiTrotter ereditano da questa classe.

Parametri

  • order (int) – L'ordine della formula del prodotto.
  • reps (int) – Il numero di passi temporali.
  • insert_barriers (bool) – Inserire o meno barriere tra le evoluzioni atomiche.
  • cx_structure (str) – La disposizione delle porte CX per le evoluzioni di Pauli può essere "chain", in cui si utilizzano connessioni vicine, oppure "fountain", in cui tutti i qubit sono collegati a uno. Questo ha effetto solo quando atomic_evolution is None.
  • Pauliatomic_evolution (Callable[[QuantumCircuit, qiskit.quantum_info.Pauli |SparsePauliOp, float], None] | None) – Una funzione che applica l'evoluzione di un singolo termine, o SparsePauliOp solo dei termini commutativi, a un circuito. La funzione accetta tre argomenti: il circuito a cui aggiungere l'evoluzione, l'operatore di Pauli da far evolvere e il tempo di evoluzione. Per impostazione predefinita, una singola evoluzione di Pauli viene scomposta in una catena di CX gate e in un singolo RZ gate.
  • wrap (bool) – Se avvolgere le evoluzioni atomiche in oggetti gate personalizzati. Si noti che l'impostazione di True è più lenta di False. Questo ha effetto solo quando atomic_evolution is None.
  • preserve_order (bool) – Se False, permette di riordinare i termini dell'operatore per ottenere potenzialmente un circuito di evoluzione più breve. Non è rilevante quando si sintetizza l'operatore con un singolo termine.
  • atomic_evolution_sparse_observable (bool) – Se viene passato un atomic_evolution personalizzato, che non supporta ancora il formato SparseObservablecome input, impostare questo argomento a False per applicare automaticamente una conversione a SparsePauliOp. Questo argomento è supportato fino a quando Qiskit 2.2, a quel punto tutte le evoluzioni atomiche devono supportare SparseObservables come input.

Attributi

settings

Restituisce le impostazioni in un dizionario, che può essere usato per ricostruire l'oggetto.

Risultati

Un dizionario contenente le impostazioni di questa formula di prodotto.

Aumenti

NotImplementedError - Se viene impostata un'evoluzione atomica personalizzata, che non può essere serializzata.


Metodi

expand

expand(evolution)

GitHub

Applicare la formula del prodotto per espandere l'Hamiltoniana nella porta di evoluzione.

Parametri

evolution (PauliEvolutionGate) – Il PauliEvolutionGate, di cui espandiamo l'hamiltoniana.

Risultati

Un elenco di rotazioni Pauli in un formato rado, dove ogni elemento è (paulistring, qubits, coefficient). Ad esempio, l'espansione Lie-Trotter di H = XI + ZZ restituirebbe [("X", [1], 1), ("ZZ", [0, 1], 1)].

Tipo di restituzione

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

synthesize

synthesize(evolution)

GitHub

Sintetizzare un PauliEvolutionGate.

Parametri

evolution (PauliEvolutionGate) – Il cancello di evoluzione per sintetizzare.

Risultati

Un circuito che implementa l'evoluzione.

Tipo di restituzione

QuantumCircuit

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.