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

A classe de circuito n-local.

A estrutura do circuito n-local é composta por camadas alternadas de rotação e emaranhamento. Em ambas as camadas, os blocos de circuito parametrizados atuam no circuito de uma maneira definida. Na camada de rotação, os blocos são aplicados empilhados uns sobre os outros, enquanto na camada de emaranhamento, de acordo com a estratégia entanglement . Os blocos do circuito podem ter tamanhos arbitrários (menor igual ao número de qubits no circuito). Cada camada é repetida reps vezes e, por padrão, uma camada de rotação final é anexada.

Por exemplo, um bloco de rotação em 2 qubits e um bloco de emaranhamento em 4 qubits usando o emaranhamento 'linear' produz o seguinte 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 especificado, as barreiras podem ser inseridas entre cada bloco. Se um objeto de estado inicial for fornecido, ele será adicionado na frente do NLocal.

Veja Também

A função n_local() constrói um circuito funcionalmente equivalente, porém mais rápido.

Descontinuado desde a versão 2.1

A classe qiskit.circuit.library.n_local.n_local.NLocal está obsoleta desde o Qiskit 2.1. Ele será removido no Qiskit 3.0. Isso também se aplica às subclasses NLocal. Em vez disso, use a função correspondente do módulo qiskit.circuit.library.n_local.

Parâmetros

  • num_qubits (int | None) – O número de qubits do circuito.
  • rotation_blocks (QuantumCircuit |list[QuantumCircuit] | qiskit.circuit.Instruction |list[qiskit.circuit.Instruction] | None) – Os blocos usados nas camadas de rotação. Se várias forem passadas, elas serão aplicadas uma após a outra (como novas subcamadas).
  • entanglement_blocks (QuantumCircuit |list[QuantumCircuit] | qiskit.circuit.Instruction |list[qiskit.circuit.Instruction] | None) – Os blocos usados nas camadas de emaranhamento. Se vários forem passados, eles serão aplicados um após o outro. Para usar diferentes emaranhados para as subcamadas, consulte get_entangler_map().
  • entanglement (list[int] | list[list[int]] | None) – Os índices que especificam em quais qubits os blocos de entrada atuam. Se None, os blocos de emaranhamento são aplicados na parte superior do circuito.
  • reps (int) – Especifica a frequência com que os blocos de rotação e os blocos de entrelaçamento são repetidos.
  • insert_barriers (bool) – Se True, são inseridas barreiras entre cada camada. Se for False, nenhuma barreira será inserida.
  • parameter_prefix (str) – O prefixo usado se forem gerados parâmetros padrão.
  • overwrite_block_parameters (bool |list[list[Parameter]]) – Se os parâmetros nos blocos adicionados devem ser substituídos. Se False, os parâmetros nos blocos não serão alterados.
  • skip_final_rotation_layer (bool) – Se uma camada de rotação final é adicionada ao circuito.
  • skip_unentangled_qubits (bool) – Se True, as portas de rotação atuam somente nos qubits que estão emaranhados. Se False, as portas de rotação atuam em todos os qubits.
  • initial_state (QuantumCircuit | None) – A QuantumCircuit objeto que pode ser usado para descrever um estado inicial anexado ao circuito NLocal.
  • name (str) – O nome do circuito.
  • flatten (bool | None) – Defina essa opção como True para gerar um circuito plano em vez de aninhá-lo em várias camadas de objetos de porta. Por padrão, atualmente, o conteúdo do circuito de saída será agrupado em objetos aninhados para uma visualização mais limpa. No entanto, se estiver usando esse circuito para qualquer coisa além de visualização, é altamente recomendável definir esse sinalizador como True para evitar uma grande sobrecarga de desempenho para a vinculação de parâmetros.

Aumentos

  • ValueError - Se o parâmetro reps for menor ou igual a 0.
  • TypeError - Se o parâmetro reps não for um valor int.

Atributos

entanglement

Obtenha a estratégia de emaranhamento.

Retorna

A estratégia de entrelaçamento, consulte get_entangler_map() para obter mais detalhes sobre como o formato é interpretado.

entanglement_blocks

Os blocos nas camadas de emaranhamento.

Retorna

Os blocos nas camadas de emaranhamento.

flatten

Retorna se o circuito está envolvido em portas/instruções aninhadas ou achatadas.

initial_state

Retorna o estado inicial que é adicionado na frente do circuito n-local.

Retorna

O estado inicial.

insert_barriers

Se as barreiras são inseridas entre as camadas ou não.

Retorna

Truese as barreiras forem inseridas entre as camadas, False caso contrário.

num_layers

Retorna o número de camadas no circuito n-local.

Retorna

O número de camadas no circuito.

num_parameters_settable

O número total de parâmetros que podem ser definidos com valores distintos.

Isso não muda quando os parâmetros são vinculados ou trocados pelos mesmos parâmetros e, portanto, é diferente de num_parameters , que conta o número de objetos exclusivos atualmente no circuito Parameter objetos exclusivos atualmente no circuito.

Retorna

O número de parâmetros originalmente disponíveis no circuito.

Nota

Essa quantidade não requer que o circuito seja construído ainda.

num_qubits

Retorna o número de qubits nesse circuito.

Retorna

O número de qubits.

ordered_parameters

Os parâmetros usados no circuito subjacente.

Isso inclui valores flutuantes e duplicatas.

Exemplos

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

Retorna

Os objetos de parâmetros usados no circuito.

parameter_bounds

Os limites de parâmetros para os parâmetros não vinculados no circuito.

Retorna

Uma lista de pares indicando os limites, como (inferior, superior). Nenhum indica um parâmetro não limitado na direção correspondente. Se None for retornado, o problema é totalmente ilimitado.

preferred_init_points

Os pontos iniciais dos parâmetros. Pode ser armazenado como estimativa inicial na otimização.

Retorna

Os valores iniciais dos parâmetros, ou None, se nenhum tiver sido definido.

reps

O número de vezes que a rotação e o bloco de emaranhamento são repetidos.

Retorna

O número de repetições.

rotation_blocks

Os blocos nas camadas de rotação.

Retorna

Os blocos nas camadas de rotação.

name

Tipo: str

Um nome legível por humanos para o circuito.

Exemplo

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

Anexar outra camada ao NLocal.

Parâmetros

  • other (QuantumCircuit |qiskit.circuit.Instruction) – A camada a ser composta pode ser outro NLocal, uma instrução ou porta, ou um QuantumCircuit.
  • entanglement (list[int] | str |list[list[int]] | None) – Os índices de emaranhamento ou de qubit.
  • front (bool) – Se True, other será anexado na frente, caso contrário, na parte de trás.

Retorna

de modo que composições encadeadas sejam possíveis.

Aumentos

TypeError - Se o outro não for compatível, ou seja, não for uma instrução e não tiver um método to_instruction.

Tipo de retorno

NLocal

assign_parameters

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

GitHub

Atribuir parâmetros ao circuito n-local.

Esse método também suporta a passagem de uma lista em vez de um dicionário. Se uma lista for passada, ela deverá ter o mesmo comprimento que o número de parâmetros não vinculados no circuito. Os parâmetros são atribuídos na ordem dos parâmetros em ordered_parameters().

Retorna

Uma cópia do circuito NLocal com os parâmetros especificados.

Aumentos

AttributeError - Se os parâmetros forem fornecidos como lista e não corresponderem ao número de parâmetros.

Parâmetros

Tipo de retorno

QuantumCircuit | Nenhum

get_entangler_map

get_entangler_map(rep_num, block_num, num_block_qubits)

GitHub

Obtenha o mapa de emaranhamento para a repetição rep_num e o bloco block_num.

O mapa de emaranhamento do bloco atual é derivado do valor de self.entanglement. Abaixo estão listados os diferentes casos, onde i e j denotam o número de repetição e o número do bloco, respectivamente, e n o número de qubits no bloco.

tipo de emaranhamento
mapa de emaranhamento
None[[0, ..., n - 1]]
str (por exemplo 'full')a conectividade especificada nos n qubits
List[int][entanglement]
List[List[int]]entanglement
List[List[List[int]]]entanglement[i]
List[List[List[List[int]]]]entanglement[i][j]
List[str]a conectividade especificada em entanglement[i]
List[List[str]]a conectividade especificada em entanglement[i][j]
Callable[int, str]mesmo que List[str]
Callable[int, List[List[int]]]mesmo que List[List[List[int]]]

Observe que todos os índices devem ser tomados no módulo do comprimento da matriz em que atuam, ou seja, nenhum erro de índice fora dos limites será gerado, mas repetiremos a iteração desde o início da lista.

Parâmetros

  • rep_num (int) – A repetição atual em que nos encontramos.
  • block_num (int) – O número do bloco dentro das camadas de emaranhamento.
  • num_block_qubits (int) – O número de qubits no bloco.

Retorna

O mapa de emaranhamento para o bloco atual na repetição atual.

Aumentos

ValueError - Se o valor de entanglement não puder ser convertido em um mapa de emaranhamento correspondente.

Tipo de retorno

Sequência[* Sequência*[ int ]]

get_unentangled_qubits

get_unentangled_qubits()

GitHub

Obtenha os índices de qubits não emaranhados em um conjunto.

Retorna

Os qubits não emaranhados.

Tipo de retorno

set[ int ]

print_settings()

GitHub

Retorna informações sobre a configuração.

Retorna

O nome da classe e os atributos/parâmetros da instância como str.

Tipo de retorno

str

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.