Skip to main content
IBM Quantum Platform

Backends

qiskit_addon_mpf.backends

Backends opcionais para o algoritmo DynamicMPF algoritmo.


Disponibilidade

O fato de um determinado backend poder ser usado depende da disponibilidade da biblioteca de rede de tensores subjacente. Isso pode ser facilmente afirmado em tempo de execução usando os seguintes indicadores:

HAS_QUIMB

Indica se a dependência opcional quimb opcional está instalada.

HAS_TENPY

Indica se a dependência opcional tenpy opcional está instalada.


Backends

Dependendo da disponibilidade (veja acima), os seguintes backends estão disponíveis:

quimb_tebdA quimb-com base no backend TEBD.
quimb_layersUm backend de evolução de tempo em camadas usando quimb.
quimb_circuitUm backend de evolução de tempo baseado em circuito usando quimb.
tenpy_tebdA tenpy-com base no backend TEBD.
tenpy_layersUm backend de evolução de tempo em camadas usando tenpy.

Interface

A interface implementada por qualquer um desses backends opcionais é composta pelas seguintes classes:

Evolver

class Evolver

GitHub

Bases: ABC

A interface para os algoritmos de evolução temporal usados no DynamicMPF.

Essa interface de evolução temporal é usada pelos aplicativos DynamicMPF.lhs e DynamicMPF.rhs e deve evoluir no tempo um objeto State sob seu capô. O mecanismo exato do algoritmo é descrito com mais detalhes em DynamicMPF, State, e setup_dynamic_lse().

conjugate

abstract property

Tipo: bool

Retorna se essa instância do time-evolver atua no lado direito.

evolved_time

abstract property

Tipo: float

Retorna o tempo de evolução atual.

step

abstract step()

GitHub

Execute uma única etapa de tempo desse algoritmo de evolução no tempo.

Isso deve agir sobre o objeto State (para o qual nenhum nome é prescrito por essa interface). Se essa instância do algoritmo de evolução no tempo deve evoluir o State do lado esquerdo ou direito, depende do valor de conjugate.

Tipo de retorno

Nenhum

Estado

class State

GitHub

Bases: ABC

A interface para o DynamicMPF.evolution_state.

Esse estado de evolução temporal é compartilhado entre as instâncias LHS e RHS Evolver da instância DynamicMPF instância. Na maioria dos casos em que um backend concreto que implementa essa interface é baseado em redes de tensores, esse estado será um operador de produto matricial (MPO). Isso se deve ao fato de que a maioria dos algoritmos de evolução temporal normalmente evoluiria um estado de produto de matriz (MPS), conforme mostrado na figura abaixo, em que os blocos de evolução temporal (U#) são aplicados sucessivamente a um MPS unidimensional (S#). Aqui, a rede de tensores cresce para a direita com o passar do tempo.

MPS Evolution

S0┄┄┲━━━━┱┄┄┄┄┄┄┄┄┲━━━━┱┄
│   ┃ U1 ┃        ┃ U5 ┃
S1┄┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄
│          ┃ U3 ┃
S2┄┄┲━━━━┱┄┺━━━━┹┄┲━━━━┱┄ ...
│   ┃ U2 ┃        ┃ U6 ┃
S3┄┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄
│          ┃ U4 ┃
S4┄┄┄┄┄┄┄┄┄┺━━━━┹┄┄┄┄┄┄┄┄

No entanto, no nosso caso, queremos que dois mecanismos de evolução temporal compartilhem um único estado. Para conseguir isso, podemos fazer com que um deles desenvolva o estado a partir da direita (exatamente como antes, U#), mas fazer com que o segundo desenvolva o estado a partir da esquerda (V#). Isso exige que o estado também tenha ligações indo nessa direção, tornando-o um MPO bidimensional (M#) em vez do MPS unidimensional de antes.

MPO Evolution

    ┄┲━━━━┱┄┄┄┄┄┄┄┄┲━━━━┱┄┄M0┄┄┲━━━━┱┄┄┄┄┄┄┄┄┲━━━━┱┄
     ┃ V5 ┃        ┃ V1 ┃  │   ┃ U1 ┃        ┃ U5 ┃
    ┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄┄M1┄┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄
            ┃ V3 ┃         │          ┃ U3 ┃
... ┄┲━━━━┱┄┺━━━━┹┄┲━━━━┱┄┄M2┄┄┲━━━━┱┄┺━━━━┹┄┲━━━━┱┄ ...
     ┃ V6 ┃        ┃ V2 ┃  │   ┃ U2 ┃        ┃ U6 ┃
    ┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄┄M3┄┄┺━━━━┹┄┲━━━━┱┄┺━━━━┹┄
            ┃ V4 ┃         │          ┃ U4 ┃
    ┄┄┄┄┄┄┄┄┺━━━━┹┄┄┄┄┄┄┄┄┄M4┄┄┄┄┄┄┄┄┄┺━━━━┹┄┄┄┄┄┄┄┄

overlap

abstract overlap(initial_state)

GitHub

Calcule a sobreposição desse estado com o estado inicial fornecido.

Aviso

Uma implementação concreta desse método deve gerar um erro TypeError se o objeto initial_state fornecido não for compatível com o backend de implementação.

Parâmetros

initial_state (Any) – o estado inicial com o qual será calculada a sobreposição.

Aumentos

TypeError - se o estado inicial fornecido tiver um tipo incompatível.

Retorna

A sobreposição desse estado com o estado fornecido.

Tipo de retorno

complexo

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