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)
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
circuitqubits que serão utilizados para entrelaçar os qubits de verificação com a carga útil. Quandocircuitpossui um layout (modo ISA), esses são índices de qubits físicos, no mesmo espaço de índices queancilla_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
GateWiseNoiseouLayeredNoisesã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_qubitsCada 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 menorcost)."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 quandocircuit.layoutnão é.ancilla_qubits[i]compartilhará portas de entrelaçamento comtarget_qubits[i]ao implementar ai-é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
LERa função de custo ou qualquer uma das variantes do método de seleção genética.NoneA combinação decost="gamma"emethod="windowed"é totalmente determinística seseednã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.