Skip to main content
IBM Quantum Platform

NLocal

class qiskit.circuit.library.NLocal(num_qubits=None, rotation_blocks=None, entanglement_blocks=None, entanglement=None, reps=1, insert_barriers=False, parameter_prefix='θ', overwrite_block_parameters=True, skip_final_rotation_layer=False, skip_unentangled_qubits=False, initial_state=None, name='nlocal', flatten=None)

GitHub

Basi: BlueprintCircuit

La classe di circuiti n-locali.

La struttura del circuito n-locale è costituita da strati di rotazione e di entanglement alternati. In entrambi i livelli, i blocchi di circuito parametrizzati agiscono sul circuito in modo definito. Nel layer di rotazione, i blocchi vengono applicati impilati l'uno sull'altro, mentre nel layer di entanglement secondo la strategia entanglement . I blocchi del circuito possono avere dimensioni arbitrarie (più piccole del numero di qubit del circuito). Ogni livello viene ripetuto reps volte e, per impostazione predefinita, viene aggiunto un livello di rotazione finale.

Ad esempio, un blocco di rotazione su 2 qubit e un blocco di entanglement su 4 qubit utilizzando l'entanglement di 'linear' produce il seguente circuito.

┌──────┐ ░ ┌──────┐                      ░ ┌──────┐
┤0     ├─░─┤0     ├──────────────── ... ─░─┤0     ├
│  Rot │ ░ │      │┌──────┐              ░ │  Rot │
┤1     ├─░─┤1     ├┤0     ├──────── ... ─░─┤1     ├
├──────┤ ░ │  Ent ││      │┌──────┐      ░ ├──────┤
┤0     ├─░─┤2     ├┤1     ├┤0     ├ ... ─░─┤0     ├
│  Rot │ ░ │      ││  Ent ││      │      ░ │  Rot │
┤1     ├─░─┤3     ├┤2     ├┤1     ├ ... ─░─┤1     ├
├──────┤ ░ └──────┘│      ││  Ent │      ░ ├──────┤
┤0     ├─░─────────┤3     ├┤2     ├ ... ─░─┤0     ├
│  Rot │ ░         └──────┘│      │      ░ │  Rot │
┤1     ├─░─────────────────┤3     ├ ... ─░─┤1     ├
└──────┘ ░                 └──────┘      ░ └──────┘

|                                 |
+---------------------------------+
       repeated reps times

Se specificato, le barriere possono essere inserite tra ogni blocco. Se viene fornito un oggetto di stato iniziale, questo viene aggiunto davanti a NLocal.

Vedi anche

La funzione n_local() costruisce un circuito funzionalmente equivalente, ma più velocemente.

Deprecato dalla versione 2.1

La classe qiskit.circuit.library.n_local.n_local.NLocal è deprecata a partire da Qiskit 2.1. Verrà rimosso in Qiskit 3.0. Questo vale anche per le sottoclassi di NLocal. Utilizzare invece la funzione corrispondente del modulo qiskit.circuit.library.n_local.

Parametri

  • num_qubits (int | None) – Il numero di qubit del circuito.
  • rotation_blocks (QuantumCircuit |list[QuantumCircuit] | qiskit.circuit.Instruction |list[qiskit.circuit.Instruction] | None) – I blocchi utilizzati negli strati di rotazione. Se ne vengono passati più di uno, questi verranno applicati uno dopo l'altro (come nuovi sottolivelli).
  • entanglement_blocks (QuantumCircuit |list[QuantumCircuit] | qiskit.circuit.Instruction |list[qiskit.circuit.Instruction] | None) – I blocchi utilizzati negli strati di entanglement. Se ne vengono passati più di uno, questi verranno applicati in sequenza. Per utilizzare diversi tipi di intrecci per i sottolivelli, vedere get_entangler_map().
  • entanglement (list[int] | list[list[int]] | None) – Gli indici che specificano su quali qubit agiscono i blocchi di ingresso. Se None, i blocchi di entanglement sono applicati all'inizio del circuito.
  • reps (int) – Specifica la frequenza di ripetizione dei blocchi di rotazione e di entanglement.
  • insert_barriers (bool) – Se True, tra ogni strato vengono inserite delle barriere. Se False, non vengono inserite barriere.
  • parameter_prefix (str) – Il prefisso utilizzato se vengono generati parametri predefiniti.
  • overwrite_block_parameters (bool |list[list[Parameter]]) – Se i parametri dei blocchi aggiunti devono essere sovrascritti. Se False, i parametri dei blocchi non vengono modificati.
  • 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.
  • initial_state (QuantumCircuit | None) – Un QuantumCircuit oggetto che può essere utilizzato per descrivere uno stato iniziale anteposto al circuito NLocal.
  • name (str) – Il nome del circuito.
  • flatten (bool | None) – Impostare questo valore su True per produrre un circuito piatto invece di annidarlo all'interno di più strati di oggetti gate. Per impostazione predefinita, il contenuto del circuito di uscita viene avvolto in oggetti annidati per una visualizzazione più pulita. Tuttavia, se si usa questo circuito per qualcosa di diverso dalla visualizzazione, si raccomanda vivamente di impostare questo flag a True per evitare un grande sovraccarico di prestazioni per il binding dei parametri.

Aumenti

  • ValueError - Se il parametro reps è inferiore o uguale a 0.
  • TypeError - Se il parametro reps non è un valore int.

Attributi

entanglement

Ottenere la strategia di entanglement.

Risultati

La strategia di entanglement, vedere get_entangler_map() per maggiori dettagli sull'interpretazione del formato.

entanglement_blocks

I blocchi negli strati di entanglement.

Risultati

I blocchi negli strati di entanglement.

flatten

Restituisce se il circuito è avvolto in porte/istruzioni annidate o appiattito.

initial_state

Restituisce lo stato iniziale che viene aggiunto davanti al circuito n-locale.

Risultati

Lo stato iniziale.

insert_barriers

Se le barriere sono inserite o meno tra gli strati.

Risultati

True, se le barriere sono inserite tra gli strati, False in caso contrario.

num_layers

Restituisce il numero di strati del circuito locale n.

Risultati

Il numero di strati del circuito.

num_parameters_settable

Il numero di parametri totali che possono essere impostati su valori distinti.

Questo dato non cambia quando i parametri sono vincolati o scambiati con gli stessi parametri, e quindi è diverso da num_parameters che conta il numero di oggetti unici attualmente presenti nel circuito Parameter oggetti unici attualmente presenti nel circuito.

Risultati

Il numero di parametri originariamente disponibili nel circuito.

Nota

Questa quantità non richiede la costruzione del circuito.

num_qubits

Restituisce il numero di qubit in questo circuito.

Risultati

Il numero di qubit.

ordered_parameters

I parametri utilizzati nel circuito sottostante.

Questo include i valori fluttuanti e i duplicati.

Esempi

>>> # prepare circuit ...
>>> print(nlocal)
     ┌───────┐┌──────────┐┌──────────┐┌──────────┐
q_0:Ry(1) ├┤ Ry(θ[1]) ├┤ Ry(θ[1]) ├┤ Ry(θ[3])
     └───────┘└──────────┘└──────────┘└──────────┘
>>> nlocal.parameters
{Parameter(θ[1]), Parameter(θ[3])}
>>> nlocal.ordered_parameters
[1, Parameter(θ[1]), Parameter(θ[1]), Parameter(θ[3])]

Risultati

Gli oggetti dei parametri utilizzati nel circuito.

parameter_bounds

I limiti dei parametri non vincolati del circuito.

Risultati

Un elenco di coppie che indicano i limiti, come (inferiore, superiore). Nessuno indica un parametro non limitato nella direzione corrispondente. Se viene restituito None , il problema è completamente slegato.

preferred_init_points

I punti iniziali dei parametri. Può essere memorizzato come ipotesi iniziale nell'ottimizzazione.

Risultati

I valori iniziali dei parametri o Nessuno, se non sono stati impostati.

reps

Il numero di volte in cui la rotazione e il blocco di entanglement vengono ripetuti.

Risultati

Il numero di ripetizioni.

rotation_blocks

I blocchi nei livelli di rotazione.

Risultati

I blocchi nei livelli di rotazione.

name

Tipo: str

Un nome leggibile per il circuito.

Esempio

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit

Metodi

add_layer

add_layer(other, entanglement=None, front=False)

GitHub

Aggiungere un altro livello all'NLocal.

Parametri

  • other (QuantumCircuit |qiskit.circuit.Instruction) – Il livello da comporre può essere un altro NLocal, un’istruzione o un gate, oppure un’ QuantumCircuit e.
  • entanglement (list[int] | str |list[list[int]] | None) – Gli indici di entanglement o di qubit.
  • front (bool) – Se è vero, other viene aggiunto alla parte anteriore, altrimenti alla parte posteriore.

Risultati

self, in modo che siano possibili composizioni concatenate.

Aumenti

TypeError - Se l'altro non è compatibile, cioè non è un'istruzione e non ha un metodo to_instruction.

Tipo di restituzione

NLocale

assign_parameters

assign_parameters(parameters, inplace=False, **kwargs)

GitHub

Assegnare i parametri al circuito n-locale.

Questo metodo supporta anche il passaggio di un elenco invece che di un dizionario. Se viene passato un elenco, questo deve avere la stessa lunghezza del numero di parametri non vincolati del circuito. I parametri sono assegnati nell'ordine dei parametri in ordered_parameters().

Risultati

Una copia del circuito NLocal con i parametri specificati.

Aumenti

AttributeError - Se i parametri sono forniti come elenco e non corrispondono al numero di parametri.

Parametri

Tipo di restituzione

QuantumCircuit | Nessuno

get_entangler_map

get_entangler_map(rep_num, block_num, num_block_qubits)

GitHub

Ottenere la mappa entangler per la ripetizione rep_num e il blocco block_num.

La mappa entangler per il blocco corrente viene ricavata dal valore di self.entanglement. Di seguito sono elencati i diversi casi, dove i e j indicano rispettivamente il numero di ripetizioni e il numero di blocchi, e n il numero di qubit nel blocco.

tipo di entanglement
mappa del groviglio
None[[0, ..., n - 1]]
str (ad es. 'full')la connettività specificata sui n qubit
List[int][entanglement]
List[List[int]]entanglement
List[List[List[int]]]entanglement[i]
List[List[List[List[int]]]]entanglement[i][j]
List[str]la connettività specificata in entanglement[i]
List[List[str]]la connettività specificata in entanglement[i][j]
Callable[int, str]Come List[str]
Callable[int, List[List[int]]]Come List[List[List[int]]]

Si noti che tutti gli indici devono essere presi modulo per modulo della lunghezza dell'array su cui agiscono; in altre parole, non verrà sollevato alcun errore di indice fuori limite, ma si ripeterà l'iter dall'inizio dell'elenco.

Parametri

  • rep_num (int) – L'attuale ripetizione in cui ci troviamo.
  • block_num (int) – Il numero di blocco all'interno degli strati di entanglement.
  • num_block_qubits (int) – Il numero di qubit nel blocco.

Risultati

La mappa entangler per il blocco corrente nella ripetizione corrente.

Aumenti

ValueError - Se il valore di entanglement non può essere lanciato in una mappa entangler corrispondente.

Tipo di restituzione

Sequenza[* Sequenza*[ int ]]

get_unentangled_qubits

get_unentangled_qubits()

GitHub

Ottiene gli indici dei qubit non entrati in un insieme.

Risultati

I qubit non entrati in contatto tra loro.

Tipo di restituzione

set[ int ]

print_settings()

GitHub

Restituisce informazioni sull'impostazione.

Risultati

Il nome della classe e gli attributi/parametri dell'istanza come str.

Tipo di restituzione

STR

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