Skip to main content
IBM Quantum Platform

qiskit.circuit.library.real_amplitudes

qiskit.circuit.library.real_amplitudes(num_qubits, entanglement='reverse_linear', reps=3, skip_unentangled_qubits=False, skip_final_rotation_layer=False, parameter_prefix='θ', insert_barriers=False, name='RealAmplitudes')

GitHub

Costruire un circuito 2-locale ad ampiezza reale.

Questo circuito è una funzione d'onda di prova euristica utilizzata, ad esempio, come ansatz in applicazioni di chimica, ottimizzazione o apprendimento automatico. Il circuito è costituito da strati alternati di YY rotazioni e CXCX intrecci. Il modello di entanglement può essere definito dall'utente o selezionato da un insieme predefinito. Questo circuito è "ad ampiezza reale", poiché gli stati quantistici preparati avranno solo ampiezze reali.

Ad esempio un circuito real_amplitudes con 2 ripetizioni su 3 qubit con "reverse_linear" entanglement è

┌──────────┐ ░            ░ ┌──────────┐ ░            ░ ┌──────────┐
Ry(θ[0]) ├─░────────■───░─┤ Ry(θ[3]) ├─░────────■───░─┤ Ry(θ[6])
├──────────┤ ░      ┌─┴─┐ ░ ├──────────┤ ░      ┌─┴─┐ ░ ├──────────┤
Ry(θ[1]) ├─░───■──┤ X ├─░─┤ Ry(θ[4]) ├─░───■──┤ X ├─░─┤ Ry(θ[7])
├──────────┤ ░ ┌─┴─┐└───┘ ░ ├──────────┤ ░ ┌─┴─┐└───┘ ░ ├──────────┤
Ry(θ[2]) ├─░─┤ X ├──────░─┤ Ry(θ[5]) ├─░─┤ X ├──────░─┤ Ry(θ[8])
└──────────┘ ░ └───┘      ░ └──────────┘ ░ └───┘      ░ └──────────┘

L'entanglement può essere impostato usando la parola chiave entanglement come stringa o come elenco di coppie di indici. Vedere la documentazione di n_local(). Le opzioni aggiuntive che possono essere impostate includono il numero di ripetizioni, il salto delle porte di rotazione sui qubit che non sono entanglement, l'esclusione dello strato finale di rotazione e l'inserimento di barriere tra gli strati di rotazione e di entanglement.

Esempi:

from qiskit.circuit.library import real_amplitudes

ansatz = real_amplitudes(3, reps=2)  # create the circuit on 3 qubits
ansatz.draw("mpl")
Schema del circuito prodotto dal codice precedente.
ansatz = real_amplitudes(3, entanglement="full", reps=2)  # it is the same unitary as above
ansatz.draw("mpl")
Schema del circuito prodotto dal codice precedente.
ansatz = real_amplitudes(3, entanglement="linear", reps=2, insert_barriers=True)
ansatz.draw("mpl")
Schema del circuito prodotto dal codice precedente.
ansatz = real_amplitudes(4, reps=2, entanglement=[[0,3], [0,2]], skip_unentangled_qubits=True)
ansatz.draw("mpl")
Schema del circuito prodotto dal codice precedente.

Parametri

  • num_qubits (int) – Il numero di qubit del circuito RealAmplitudes.
  • 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 ad ampiezza reale.

Tipo di restituzione

QuantumCircuit

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