Skip to main content
IBM Quantum Platform

Verificações

qiskit_paulice.checks

Funcionalidade para encontrar verificações de Pauli eficazes no espaço-tempo.

add_pauli_checks

add_pauli_checks(circuit, target_qubits, noise_model, cost='gamma', cost_nshots=10000, method='windowed', ancilla_qubits=None, check_creg_name='checks_c', check_qreg_name='checks_q', seed=None)

GitHub

Adicione verificações de Pauli no espaço-tempo a um circuito de Clifford.

O algoritmo de seleção de verificações identifica verificações válidas e de baixo peso em cada qubit-alvo, na ordem em que são especificadas em target_qubits , e escolhe a verificação que oferece a maior cobertura de detecção de erros (ou seja, que minimiza o cost valor de ). Assim que um cheque for confirmado em target_qubits[0], ele será definido para o restante do algoritmo e terá início a busca por um cheque válido em target_qubits[1] . Por esse motivo, a ordem dos elementos target_qubits pode ter algum impacto no conjunto de verificações geradas pela função.

Essa função gera qiskit_paulice.CheckedCircuit instâncias contendo um número de verificações que varia de 0 até uma verificação por qubit-alvo. Pode ser esclarecedor observar a convergência da função de custo à medida que mais verificações são adicionadas, já que é possível observar a convergência do custo com um número menor de verificações.

Para obter mais detalhes sobre como encontrar verificações de Pauli eficazes no espaço-tempo, consulte Seção Complementar II-VI, de Martiel e Javadi.

Parâmetros

  • circuit (QuantumCircuit) – O circuito de Clifford para ser representado com padrões de Pauli no espaço-tempo. O circuito deve ser concluído com uma medição em pelo menos um qubit. O circuito pode ser definido em qubits virtuais ou físicos. ancilla_qubitsSe o circuito tiver um layout, o usuário deve fornecê-lo.

  • target_qubits (Sequence[int]) – Índices dos circuit qubits que serão utilizados para entrelaçar os qubits de verificação com a carga útil. Quando circuit possui um layout (modo ISA), esses são índices de qubits físicos, no mesmo espaço de índices que ancilla_qubits.

  • noise_model (NoiseModel) – Um modelo de ruído que descreve o efeito do ruído no dispositivo alvo. Esse modelo será utilizado para estimar o efeito de uma determinada verificação durante o processo de seleção de itens. Embora seja possível gerar um modelo de ruído a partir do ruído de Pauli-Lindblad aprendido, muitas vezes basta uma aproximação mais grosseira do ruído gerado a partir dos dados de benchmark do backend. As bordas de ancilla/alvo introduzidas pela inserção de verificação que não constam nos dados fornecidos GateWiseNoise ou LayeredNoise são inferidas automaticamente (taxa mediana por par de Pauli nos dados fornecidos); forneça-as explicitamente para substituir essa inferência.

  • cost (Literal['gamma', 'LER']) –

    Métrica a ser otimizada. Pode ser "gamma" ou "LER" (taxa de erro lógico).

    • "gamma": O valor gama associado ao canal de ruído lógico inverso (ou seja, o canal de ruído constituído por erros dentro do cone de luz de medição que são indetectáveis pelas verificações).
    • "LER": A taxa de erro lógico empírico após a pós-seleção. Realiza simulações de Monte Carlo para calcular a fração de disparos pós-selecionados afetados por ruído lógico não detectado.
  • cost_nshots (int) – Número de simulações de Monte Carlo utilizadas pelas métricas de custo baseadas em Monte Carlo (atualmente apenas "LER").

  • method (Literal['windowed', 'genetic', 'windowed_genetic']) –

    Selecione o método de separação ("windowed", "genetic", ou "windowed_genetic"). target_qubits Cada método irá adicionar verificações sequencialmente. Uma vez que uma verificação seja confirmada em um determinado qubit-alvo, ela não será revertida à medida que mais verificações forem adicionadas. Cada método seleciona as verificações que oferecem a máxima capacidade de detecção de erros (ou seja, o menor cost).

    • "windowed": Amostrar pequenos subconjuntos dos fios em cada qubit-alvo para encontrar boas verificações
    • "genetic": Desenvolver um conjunto de verificações candidatas a partir do espaço de conexões completo de cada qubit-alvo
    • "windowed_genetic": Realizar uma busca genética em janelas aleatórias de fios em cada qubit-alvo
  • ancilla_qubits (Sequence[int] | None) – Lista de índices de qubits físicos (um por índice em target_qubits) que especificam onde colocar os ancillas de verificação no circuito de saída. NoneÉ necessário quando circuit.layout não é. ancilla_qubits[i] compartilhará portas de entrelaçamento com target_qubits[i] ao implementar a i-ésima verificação.

  • check_creg_name (str) – Nome do registro clássico para medições de verificação (padrão: “checks_c”)

  • check_qreg_name (str) – Nome do registro quântico que contém as ancilas de verificação nos circuitos de saída (padrão: “checks_q”). Ignorado no modo ISA.

  • seed (int | None) – Semente aleatória para controlar a aleatoriedade durante a busca por verificações válidas. Embora essa semente controle parte da aleatoriedade do algoritmo, ainda existe algum não determinismo ao se utilizar LER a função de custo ou qualquer uma das variantes do método de seleção genética. NoneA combinação de cost="gamma" e method="windowed" é totalmente determinística se seed não for.

Retorna

Uma lista de qiskit_paulice.CheckedCircuit instâncias – instâncias que contêm o circuito básico, sem verificações, e uma para cada verificação adicionada. O elemento final na saída contém o qiskit_paulice.CheckedCircuit com verificações em cada qubit-alvo, supondo que tenha sido possível encontrar um conjunto válido de verificações.

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