Skip to main content
IBM Quantum Platform

qiskit.circuit.library.excitation_preserving

qiskit.circuit.library.excitation_preserving(num_qubits, mode='iswap', entanglement='full', reps=3, skip_unentangled_qubits=False, skip_final_rotation_layer=False, parameter_prefix='θ', insert_barriers=False, name='ExcitationPreserving')

GitHub

Il surrogato euristico della funzione d'onda che preserva l'eccitazione.

Il circuito excitation_preserving conserva il rapporto tra gli stati 00|00\rangle, 01+10|01\rangle + |10\rangle e 11|11\rangle. A tal fine, questo circuito utilizza interazioni a due qubit della forma

(10000cos(θ/2)isin(θ/2)00isin(θ/2)cos(θ/2)0000eiϕ)\providecommand{\rotationangle}{\theta/2} \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & \cos\left(\rotationangle\right) & -i\sin\left(\rotationangle\right) & 0 \\ 0 & -i\sin\left(\rotationangle\right) & \cos\left(\rotationangle\right) & 0 \\ 0 & 0 & 0 & e^{-i\phi} \end{pmatrix}

per la modalità "fsim" o con eiϕ=1e^{-i\phi} = 1 per la modalità "iswap".

Si noti che anche altre funzioni d'onda, come le UCC-ansatzes, conservano l'eccitazione. Tuttavia, questi possono diventare rapidamente complessi, mentre questo circuito euristicamente motivato segue uno schema più semplice.

Questa funzione d'onda di prova è costituita da strati di rotazioni di tipo « ZZ » con intrecci a 2 qubit. L'entanglement viene creato utilizzando rotazioni di tipo « XX+YYXX+YY » e, facoltativamente, un gate a fase controllata per la modalità "fsim".

Esempi:

Con l'entanglement lineare, questo circuito è dato da:

from qiskit.circuit.library import excitation_preserving

ansatz = excitation_preserving(3, reps=1, insert_barriers=True, entanglement="linear")
ansatz.draw("mpl")
Schema del circuito prodotto dal codice precedente.

La struttura di entanglement può essere specificata esplicitamente con l'argomento entanglement . La modalità "fsim" comprende un'ulteriore parametrizzazione CPhaseGate in ogni blocco:

ansatz = excitation_preserving(3, reps=1, mode="fsim", entanglement=[[0, 2]])
ansatz.draw("mpl")
Schema del circuito prodotto dal codice precedente.Schema del circuito prodotto dal codice precedente.

Parametri

  • num_qubits (int) – Il numero di qubit.
  • mode (str) – Scegliere la modalità di entangler, che può essere "iswap" o "fsim".
  • reps (int) – Specifica la frequenza con cui viene ripetuta la struttura di uno strato di rotazione seguito da uno strato di entanglement.
  • entanglement (str |Iterable[Iterable[int]] | Iterable[str |Iterable[Iterable[int]]] | Callable[[int], str |Iterable[Iterable[int]] | Iterable[str |Iterable[Iterable[int]]]]) – Gli indici che specificano su quali qubit agiscono i blocchi di input. Per informazioni n_local() dettagliate, consultare.
  • skip_final_rotation_layer (bool) – Se viene aggiunto al circuito uno strato di rotazione finale.
  • skip_unentangled_qubits (bool) – Se True, le porte di rotazione agiscono solo sui qubit che sono entangled. Se False, le porte di rotazione agiscono su tutti i qubit.
  • parameter_prefix (str) – Il nome dei parametri liberi.
  • insert_barriers (bool) – Se Vero, le barriere vengono inserite tra ogni strato. Se Falso, non vengono inserite barriere.
  • name (str) – Il nome del circuito.

Risultati

Un circuito che preserva l'eccitazione.

Tipo di restituzione

QuantumCircuit

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