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)
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 quandoatomic_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, oSparsePauliOpsolo 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 diCXgate e in un singoloRZgate.- wrap (bool) – Se avvolgere le evoluzioni atomiche in oggetti gate personalizzati. Si noti che l'impostazione di
Trueè più lenta diFalse. Questo ha effetto solo quandoatomic_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_evolutionpersonalizzato, che non supporta ancora il formatoSparseObservablecome input, impostare questo argomento aFalseper applicare automaticamente una conversione aSparsePauliOp. Questo argomento è supportato fino a quando Qiskit 2.2, a quel punto tutte le evoluzioni atomiche devono supportareSparseObservables 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)
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
synthesize
synthesize(evolution)
Sintetizzare un PauliEvolutionGate.
Parametri
evolution (PauliEvolutionGate) – Il cancello di evoluzione per sintetizzare.
Risultati
Un circuito che implementa l'evoluzione.
Tipo di restituzione