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

Bases: BlueprintCircuit

La clase de circuito n-local.

La estructura del circuito n-local son capas alternas de rotación y entrelazamiento. En ambas capas, los bloques de circuitos parametrizados actúan sobre el circuito de forma definida. En la capa de rotación, los bloques se aplican apilados unos sobre otros, mientras que en la capa de enredo según la estrategia entanglement . Los bloques del circuito pueden tener tamaños arbitrarios (menor igual al número de qubits del circuito). Cada capa se repite reps veces, y por defecto se añade una capa final de rotación.

Por ejemplo, un bloque de rotación en 2 qubits y un bloque de entrelazamiento en 4 qubits utilizando 'linear' entanglement produce el siguiente 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

Si se especifica, se pueden insertar barreras entre cada bloque. Si se proporciona un objeto de estado inicial, se añade delante del NLocal.

Consulte también

La función n_local() construye un circuito funcionalmente equivalente, pero más rápido.

Obsoleto desde la versión 2.1

La clase qiskit.circuit.library.n_local.n_local.NLocal está obsoleta a partir de Qiskit 2.1. Se eliminará en Qiskit 3.0. Esto también se aplica a las subclases NLocal. Utilice en su lugar la función correspondiente del módulo qiskit.circuit.library.n_local.

Parámetros

  • num_qubits (int | None) – El número de qubits del circuito.
  • rotation_blocks (QuantumCircuit |list[QuantumCircuit] | qiskit.circuit.Instruction |list[qiskit.circuit.Instruction] | None) – Los bloques utilizados en las capas de rotación. Si se pasan varias, éstas se aplicarán una tras otra (como nuevas subcapas).
  • entanglement_blocks (QuantumCircuit |list[QuantumCircuit] | qiskit.circuit.Instruction |list[qiskit.circuit.Instruction] | None) – Los bloques utilizados en las capas de enredo. Si se pasan varios, se aplicarán uno tras otro. Para utilizar enredos diferentes para las subcapas, véase get_entangler_map().
  • entanglement (list[int] | list[list[int]] | None) – Los índices que especifican sobre qué qubits actúan los bloques de entrada. Si None, los bloques de enredo se aplican en la parte superior del circuito.
  • reps (int) – Especifica la frecuencia con la que se repiten los bloques de rotación y los bloques de enredo.
  • insert_barriers (bool) – Si True, se insertan barreras entre cada capa. Si False, no se inserta ninguna barrera.
  • parameter_prefix (str) – El prefijo utilizado si se generan parámetros por defecto.
  • overwrite_block_parameters (bool |list[list[Parameter]]) – Si los parámetros de los bloques añadidos deben sobrescribirse. Si False, los parámetros de los bloques no se modifican.
  • skip_final_rotation_layer (bool) – Si se añade una capa de rotación final al circuito.
  • skip_unentangled_qubits (bool) – Si True, las puertas de rotación sólo actúan sobre los qubits que están enredados. Si False, las puertas de rotación actúan sobre todos los qubits.
  • initial_state (QuantumCircuit | None) – A QuantumCircuit que puede utilizarse para describir un estado inicial añadido al circuito NLocal.
  • name (str) – El nombre del circuito.
  • flatten (bool | None) – Establézcalo en True para obtener un circuito plano en lugar de anidarlo dentro de múltiples capas de objetos puerta. Por defecto actualmente el contenido del circuito de salida se envolverá en objetos anidados para una visualización más limpia. Sin embargo, si está utilizando este circuito para algo más que la visualización, se recomienda encarecidamente establecer esta bandera en True para evitar una gran sobrecarga de rendimiento para la vinculación de parámetros.

Eleva

  • ValueError - Si el parámetro reps es menor o igual que 0.
  • TypeError - Si el parámetro reps no es un valor int.

Atributos

entanglement

Consigue la estrategia de enredo.

Devuelve

La estrategia de enredo, véase get_entangler_map() para más detalles sobre cómo se interpreta el formato.

entanglement_blocks

Los bloques en las capas de enredo.

Devuelve

Los bloques en las capas de enredo.

flatten

Devuelve si el circuito está envuelto en puertas/instrucciones anidadas o aplanado.

initial_state

Devuelve el estado inicial que se añade delante del circuito n-local.

Devuelve

El estado inicial.

insert_barriers

Si se insertan o no barreras entre las capas.

Devuelve

Truesi se intercalan barreras entre las capas, False en caso contrario.

num_layers

Devuelve el número de capas del circuito n-local.

Devuelve

El número de capas del circuito.

num_parameters_settable

El número total de parámetros que pueden ajustarse a valores distintos.

Esto no cambia cuando los parámetros están vinculados o se intercambian por los mismos parámetros, y por lo tanto es diferente de num_parameters que cuenta el número de objetos únicos en el circuito Parameter en el circuito.

Devuelve

El número de parámetros disponibles originalmente en el circuito.

Nota

Esta cantidad no requiere que el circuito esté construido todavía.

num_qubits

Devuelve el número de qubits de este circuito.

Devuelve

El número de qubits.

ordered_parameters

Los parámetros utilizados en el circuito subyacente.

Esto incluye valores flotantes y duplicados.

Ejemplos

>>> # 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])]

Devuelve

Los parámetros objetos utilizados en el circuito.

parameter_bounds

Los límites de los parámetros no vinculados en el circuito.

Devuelve

Una lista de pares que indican los límites, como (inferior, superior). Ninguno indica un parámetro no limitado en la dirección correspondiente. Si se devuelve None , el problema es totalmente ilimitado.

preferred_init_points

Los puntos iniciales de los parámetros. Puede almacenarse como conjetura inicial en la optimización.

Devuelve

Los valores iniciales de los parámetros, o Ninguno, si no se ha establecido ninguno.

reps

El número de veces que se repiten la rotación y el bloque de enredo.

Devuelve

El número de repeticiones.

rotation_blocks

Los bloques de las capas de rotación.

Devuelve

Los bloques de las capas de rotación.

name

Tipo: str

Un nombre legible para el circuito.

Ejemplo

from qiskit import QuantumCircuit

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

Métodos

add_layer

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

GitHub

Añade otra capa a la NLocal.

Parámetros

Devuelve

self, de modo que es posible realizar composiciones encadenadas.

Eleva

TypeError - Si otro no es compatible, es decir, no es una Instrucción y no tiene un método to_instruction.

Tipo de retorno

NLocal

assign_parameters

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

GitHub

Asignar parámetros al circuito n-local.

Este método también permite pasar una lista en lugar de un diccionario. Si se pasa una lista, ésta debe tener la misma longitud que el número de parámetros no vinculados del circuito. Los parámetros se asignan en el orden de los parámetros en ordered_parameters().

Devuelve

Una copia del circuito NLocal con los parámetros especificados.

Eleva

AttributeError - Si los parámetros se dan como lista y no coinciden con el número de parámetros.

Parámetros

Tipo de retorno

QuantumCircuit | Ninguno

get_entangler_map

get_entangler_map(rep_num, block_num, num_block_qubits)

GitHub

Obtenga el mapa de enredos para en la repetición rep_num y el bloque block_num.

El mapa de enredos del bloque actual se obtiene a partir del valor de self.entanglement. A continuación se enumeran los distintos casos, donde i y j denotan el número de repetición y el número de bloque, respectivamente, y n el número de qubits del bloque.

tipo de enredo
mapa de enredos
None[[0, ..., n - 1]]
str (p. ej 'full'.)la conectividad especificada en n los qubits
List[int][entanglement]
List[List[int]]entanglement
List[List[List[int]]]entanglement[i]
List[List[List[List[int]]]]entanglement[i][j]
List[str]la conectividad especificada en entanglement[i]
List[List[str]]la conectividad especificada en entanglement[i][j]
Callable[int, str]Igual que List[str]
Callable[int, List[List[int]]]Igual que List[List[List[int]]]

Tenga en cuenta que todos los índices deben tomarse modulando la longitud de la matriz sobre la que actúan, es decir, no se producirá ningún error de índice fuera de los límites, sino que se reitera desde el principio de la lista.

Parámetros

  • rep_num (int) – La repetición actual en la que nos encontramos.
  • block_num (int) – El número de bloque dentro de las capas de enredo.
  • num_block_qubits (int) – El número de qubits del bloque.

Devuelve

El mapa de enredos para el bloque actual en la repetición actual.

Eleva

ValueError - Si el valor de entanglement no se ha podido asignar a un mapa de enredos correspondiente.

Tipo de retorno

Secuencia[* Secuencia*[ int ]]

get_unentangled_qubits

get_unentangled_qubits()

GitHub

Obtiene los índices de qubits no enredados en un conjunto.

Devuelve

Los qubits no enredados.

Tipo de retorno

set[ int ]

print_settings()

GitHub

Devuelve información sobre la configuración.

Devuelve

El nombre de la clase y los atributos/parámetros de la instancia como str.

Tipo de retorno

str

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.