Skip to main content
IBM Quantum Platform

InitializeModes

class InitializeModes(occupation)

Bases: FermionicGate

Prepara (ou, em simulação, certifica) a ocupação de um modo fermiónico.

Essa porta declara a ocupação pretendida dos modos em que está configurada. Seu comportamento depende de como o circuito é utilizado:

  • Transpilado (sintetizado em portas de qubits): produz o estado – o plug-in de síntese emite as portas que definem os modos nomeados de acordo com sua ocupação, como seria de se esperar de uma porta de inicialização.
  • Simulado (_apply_unitary_()): atua como um validador, e não como um produtor. Dado um vetor de estado, ele verifica se a amplitude do vetor está restrita ao subespaço que ele define occupation e retorna o vetor inalterado, certificando — sem alterá-lo — que o estado recebido é a referência pretendida, de modo que as transformações seguintes atuem sobre ele.

Em ambos os modos, o gate restringe apenas os orbitais cujos nomes se referem à ocupação (e, por setor de spin, apenas ao longo do eixo desse setor); assim, vários InitializeModes gates podem ser colocados em paralelo para gerar fragmentos disjuntos de um estado de forma independente — por exemplo, um gate por setor de spin ou um por grupo orbital. Um portão de spinful pode abranger um único setor (ou qualquer fragmento dele) ou especificar integralmente ambos os setores, mas uma sobreposição parcial de ambos é rejeitada (ver _apply_unitary_placed_()).

Use from_hartree_fock() para construir a ocupação de uma referência de Hartree-Fock.

Cuidado

Este é um protótipo em fase inicial de desenvolvimento. Fique atento a possíveis alterações na interface, que podem ocorrer sem aviso prévio durante a fase de desenvolvimento pré-lançamento deste pacote.

A inicialização de uma instância desse gate pode ser feita com os argumentos listados abaixo.

Parâmetros

occupation (Sequence[bool]) – uma sequência de valores booleanos que indicam o estado de ocupação de cada modo no circuito que FermionicRegister está sendo inicializado por essa porta lógica.


Atributos

occupation

A sequência de valores booleanos que indica o estado de ocupação de cada modo no circuito que FermionicRegister está sendo inicializado por esta porta.


Métodos

from_hartree_fock

classmethod from_hartree_fock(norb, nelec)

Cria o portão para a ocupação de referência de Hartree-Fock de (norb, nelec).

O determinante de Hartree-Fock preenche os orbitais de índice mais baixo de cada setor de spin. O fato de a referência ser sem spin ou com spin é inferido a partir de ( nelec um int seleciona a interpretação sem spin dos modos norb ; um par (n_alpha, n_beta) seleciona a interpretação de spin em bloco com spin dos 2 * norb modos ). Coloque o gate retornado no registro correspondente para certificar um estado de referência de Hartree-Fock.

Parâmetros

  • norb (int) – o número de orbitais espaciais.
  • nelec (int |tuple[int, int]) – ou um único número inteiro, no caso de um sistema sem spin, ou um par de números inteiros que representam o número de férmions de spin alfa e de spin beta.

Retorna

Um InitializeModes portão cuja ocupação é o determinante de Hartree-Fock.

Aumentos

ValueError – se o número de elétrons exceder o número de orbitais norb disponíveis em um setor.

Tipo de retorno

Eu

Métodos do protocolo

_apply_unitary_placed_

_apply_unitary_placed_(vec, norb, nelec, copy, freg_indices)

Afirma que vec está restrito ao subespaço de ocupação dessa porta, devolvendo-o inalterado.

Ao contrário de um portão de transformação, este portão não modifica o estado: ele verifica se a amplitude vecde está inteiramente contida no subespaço definido occupation por, e, se for esse o caso, retorna vec inalterado. O subespaço é o conjunto de determinantes cuja ocupação está de acordo com esse portão nos orbitais que ele designa, ficando todos os orbitais não designados livres — de modo que uma ocupação parcial (um fragmento de um setor) aceita toda uma família de determinantes, e a verificação se combina com outros InitializeModes portões paralelos.

O modo local da porta ( occupation uma bandeira por modo local) é inserido no registro global por meio de freg_indices: o modo local i restringe o modo global freg_indices[i]. Os modos globais são então interpretados de acordo com a convenção (norb, nelec) :

  • Sem spin (nelec é um int): os modos norb são orbitais diretamente; a verificação é feita no espaço de C(norb, nelec)dimensão.
  • Spinful (nelec é um par): de acordo com a convenção de spin por bloco, os modos 0..norb são orbitais alfa e os modos norb..2*norb são orbitais beta. Uma porta que atinge um único setor restringe o eixo do estado (dim_a, dim_b) desse setor (um conjunto de linhas completas, no caso de uma porta alfa, ou colunas completas, no caso de uma porta beta) e deixa o outro eixo livre, de modo que ela se combina com portas paralelas no outro setor. Um gate também pode abranger ambos os setores, mas somente quando define um determinante completo (todos os orbitais de ambos os setores são nomeados, nenhum fica livre); um straddle parcial — que restringe alguns orbitais de ambos os setores enquanto deixa outros livres — é rejeitado, uma vez que não é um produto de subespaços por eixo e não pode ser composto (use um gate por setor, em vez disso).

A verificação diz respeito ao confinamento, não à igualdade: uma amplitude incidente pode ter qualquer fase e qualquer magnitude dentro do subespaço (uma fase global ou normalização é fisicamente irrelevante), o que valida a referência sem vinculá-la a um vetor determinante específico.

Parâmetros

  • vec (ndarray) – o vetor de estado a ser validado. Seu comprimento deve corresponder à dimensão do setor (norb, nelec) .
  • norb (int) – o número de orbitais espaciais do vetor de estado global.
  • nelec (int |tuple[int, int]) – ou um único número inteiro, no caso de um sistema sem spin, ou um par de números inteiros que representam o número de férmions de spin alfa e de spin beta. Um número inteiro seleciona a interpretação dos modos sem spin (os norb modos são orbitais); um par seleciona a interpretação dos modos 2 * norb com spin em blocos (orb, spin) .
  • copy (bool) – aceito por estar em conformidade com o protocolo, mas não tem efeito — essa porta não altera o estado, portanto, ele vec é retornado tal como está, independentemente disso.
  • freg_indices (list[int]) – os índices dos modos absolutos (globais) para os quais os modos locais dessa porta se mapeiam.

Retorna

A entrada vec, inalterada, uma vez verificado seu confinamento ao subespaço de ocupação.

Aumentos

ValueError – se um modo ocupado estiver fora do intervalo implícito por norb; se uma porta com spin se estender parcialmente por ambos os setores de spin (sem fixar um determinante completo); se o comprimento vecde não corresponder à dimensão do setor (norb, nelec) ; ou se vec tiver amplitude fora do subespaço definido pela ocupação.

Tipo de retorno

ndarray

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