Skip to main content
IBM Quantum Platform

LieTrotter

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

GitHub

Basi: SuzukiTrotter

La formula del prodotto di Lie-Trotter.

La formula di Lie-Trotter approssima l'esponenziale di due operatori non commutativi con i prodotti dei loro esponenziali fino a un errore del secondo ordine:

eA+BeAeB.e^{A + B} \approx e^{A}e^{B}.

In questa implementazione, gli operatori sono forniti come termini di somma di un operatore di Pauli. Ad esempio, approssimiamo

eit(XI+ZZ)=eitXIeitZZ+O(t2).e^{-it(XI + ZZ)} = e^{-it XI}e^{-it ZZ} + \mathcal{O}(t^2).

Riferimenti

[1] : D. Berry, G. Ahokas, R. Cleve e B. Sanders, "Efficient quantum algorithms for simulating sparse Hamiltonians" (2006). arXiv:quant-ph/0508139 [2] : N. Hatano e M. Suzuki, "Trovare formule di prodotti esponenziali di ordine superiore" (2005). arXiv:math-ph/0506007

Parametri

  • 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. 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

Espandere l'hamiltoniana in una sequenza Suzuki-Trotter di porte rade.

Ad esempio, l'hamiltoniana H = IX + ZZ per un tempo di evoluzione t e 1 ripetizione per una formula di ordine 2 verrebbe decomposta in una lista di 3 tuple contenenti (pauli, indices, rz_rotation_angle), ovvero:

("X", [0], t), ("ZZ", [0, 1], 2t), ("X", [0], t)

Si noti che l'angolo di rotazione contiene un fattore 2, per cui l'evoluzione nel tempo di un' PP e di Pauli tt, che è eitPe^{itP}, è rappresentata da (P, indices, 2 * t).

Per N ripetizioni, questa sequenza viene ripetuta N volte e i coefficienti vengono divisi per N.

Parametri

evolution (PauliEvolutionGate) – Il cancello dell'evoluzione per espandersi.

Risultati

La rete di Pauli che implementa l'espansione di Trotter.

Tipo di restituzione

list[ tuple[ str, list[ 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.