Skip to main content
IBM Quantum Platform

MergeOrbitalRotations

class MergeOrbitalRotations

Basi: GenericPass[DAGCircuit, DAGCircuit]

Un passaggio di transpilazione che unisce sequenze di rotazioni orbitali consecutive in un’unica rotazione.

Due porte OrbitalRotation applicate in sequenza sulla stessa modalità si combinano in un’unica rotazione orbitale, che rotation_unitary è il prodotto matriciale delle due. Questo passaggio individua le sequenze massime di tali rotazioni consecutive in a e FermionicDAGCircuit le riscrive ciascuna in un unico OrbitalRotation, in modo che la fase di sintesi produca un'unica decomposizione (ancora quadrata) anziché una per ogni gate nella sequenza.

Una “corsa” è una catena massima di OrbitalRotation nodi che agiscono sullo stesso insieme di modalità, senza che nulla intervenga su quei collegamenti. Seguendo la convenzione OrbitalRotation aijUjiaja^\dagger_i \mapsto \sum_j U_{ji} a^\dagger_j, l'applicazione di una rotazione U1U_1 e poi di una rotazione U2U_2 produce aij(U2U1)jiaja^\dagger_i \mapsto \sum_j (U_2 U_1)_{ji} a^\dagger_j; pertanto, le rotazioni della sequenza vengono moltiplicate nell'ordine del circuito (la rotazione successiva a sinistra) per formare il risultato finale rotation_unitary. Poiché il gate combinato implementa esattamente quel cambiamento di base composto, la riscrittura lascia invariato il vettore di stato simulato.

Vengono unite solo le rotazioni appartenenti allo stesso insieme di modalità: due rotazioni appartenenti a insiemi di modalità diversi (anche se sovrapposti) o rotazioni separate da qualsiasi altra operazione su un cavo condiviso interrompono la sequenza e vengono lasciate invariate. Questa è la forma che si ottiene, ad esempio, con due rotazioni per-spin adiacenti sullo stesso semispin, oppure con strati UCJ consecutivi le cui rotazioni orbitali di coda e di testa si incontrano sugli stessi modi.

Attenzione

Si tratta di un prototipo in fase iniziale di sviluppo. Si prega di prestare attenzione alle modifiche all'interfaccia che potrebbero essere apportate senza preavviso durante la fase di sviluppo pre-rilascio di questo pacchetto.

Vedi anche

Metodi

run

run(dag)

Esegue questa fase di transpilazione.

Raccoglie ogni sequenza massima di porte OrbitalRotation consecutive nelle stesse modalità e sostituisce ogni sequenza di lunghezza pari o superiore a due con una singola porta il OrbitalRotation cui valore è rotation_unitary dato dal prodotto delle rotazioni della sequenza nell'ordine del circuito. Le esecuzioni di una singola rotazione (e di tutti gli altri nodi) rimangono invariate. Il DAG di input viene modificato in loco.

Parametri

dag (DAGCircuit) – il circuito di ingresso con istruzioni basate sui fermioni. Sono op supportate solo le istanze FermionicGate come quelle indicate DAGOpNode .

Risultati

Il circuito di uscita, che continua ad agire su un registro fermionico.

Tipo di restituzione

DAGCircuit

Metodi ereditati

execute

execute(passmanager_ir, state, callback=None)

Esegui l'operazione di ottimizzazione per l'IR di Qiskit in ingresso.

Parametri

  • passmanager_ir (IR) – Qiskit IR da ottimizzare.
  • state (PassManagerState) – Stato associato all'esecuzione del flusso di lavoro da parte dello stesso gestore dei passaggi.
  • callback (Callable[[Task, IR_OUT, PropertySet, float, int], None] | None) – Una funzione di callback che viene chiamata ad ogni esecuzione di un'attività di ottimizzazione.

Risultati

IR ottimizzato di Qiskit e stato del flusso di lavoro.

Tipo di restituzione

tupla [ IR_OUT, PassManagerState ]

name

name()

Nome del passo.

Tipo di restituzione

STR

update_status

update_status(state, run_state)

Aggiornare lo stato del flusso di lavoro.

Parametri

  • state (PassManagerState) – Passare lo stato del gestore per l'aggiornamento.
  • run_state (RunState) – Stato di completamento dell'attività corrente.

Risultati

Stato del gestore dei pass aggiornato.

Tipo di restituzione

PassManagerState

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