Skip to main content
IBM Quantum Platform

Decomposição Quase-Probabilística (QPD)

qiskit_addon_cutting.qpd

Funcionalidade principal de decomposição de quasiprobabilidade.

QPDBasisBase na qual se decompõe uma operação.
BaseQPDGateClasse base para uma porta a ser decomposta usando a decomposição de quasiprobabilidade.
SingleQubitQPDGatePorta de qubit único a ser decomposta usando a decomposição de quasiprobabilidade.
TwoQubitQPDGatePorta de dois qubits a ser decomposta usando a decomposição de quasiprobabilidade.

WeightType

class WeightType(value)

GitHub

Bases: Enum

Tipo de peso associado a uma amostra QPD.

EXATA

Valor Padrão: 1

Um peso dado em proporção ao seu peso exato

amostragem

Valor Padrão: 2

Um peso que foi determinado por meio de algum procedimento de amostragem

generate_qpd_weights

generate_qpd_weights(qpd_bases, num_samples=1000)

GitHub

Gerar pesos a partir da distribuição de quase-robabilidade conjunta.

Cada peso cujo valor absoluto estiver acima de um limite de 1 / num_samples será avaliado exatamente. Os pesos restantes - aqueles na cauda da distribuição - serão então amostrados, resultando em no máximo num_samples pesos exclusivos.

Parâmetros

  • qpd_bases (Sequence[QPDBasis]) – Os QPDBasis objetos a partir dos quais serão gerados os pesos
  • num_samples (float) – Controla o número de pesos a serem gerados

Tipo de retorno

dict[tuple[int, ...], tuple[float, WeightType]]

Retorna

Um mapeamento de uma determinada decomposição para seu peso. As chaves são tuplas de índices - um índice por entrada QPDBasis. Os índices correspondem a um mapeamento de decomposição específico na base.

Os valores são tuplas. O primeiro elemento é um número que corresponde ao peso da contribuição. O segundo elemento é o WeightTypeEXACT ou SAMPLED.

decompose_qpd_instructions

decompose_qpd_instructions(circuit, instruction_ids, map_ids=None, *, inplace=False)

GitHub

Substitua todas as instruções QPD no circuito por operações e medições locais do Qiskit.

Parâmetros

  • circuit (QuantumCircuit) – O circuito que contém instruções QPD
  • instruction_ids (Sequence[Sequence[int]]) – Uma sequência 2D, de modo que cada sequência interna corresponda a índices de instruções que compreendam uma decomposição no circuito. Os elementos em uma sequência comum pertencem a uma decomposição comum e devem ser amostrados juntos.
  • map_ids (Sequence[int] | None) – Índices para um mapeamento linear específico a ser aplicado às decomposições no circuito. Se nenhuma ID de mapa for fornecida, o circuito será decomposto aleatoriamente de acordo com a distribuição de probabilidade conjunta das decomposições.
  • inplace (bool) – Se for True, o circuit será modificado no lugar.

Tipo de retorno

QuantumCircuit

Retorna

Circuito que teve todas as suas BaseQPDGate instâncias decompostas em operações locais.

O circuito conterá um novo registro clássico final para conter os resultados da medição do QPD (acessível em retval.cregs[-1]).

Aumentos

  • ValueError - Um índice em instruction_ids corresponde a uma porta que não é uma BaseQPDGate instância.
  • ValueError - Uma lista dentro de instruction_ids não tem comprimento 1 ou 2.
  • ValueError - O número total de índices em instruction_ids não é igual ao número de instâncias no circuito BaseQPDGate instâncias no circuito.
  • ValueError - As portas dentro da mesma decomposição têm bases QPD diferentes.
  • ValueError - O comprimento do site map_ids não é igual ao número de decomposições no circuito.

qpdbasis_from_instruction

qpdbasis_from_instruction(gate, /)

GitHub

Gera um objeto QPDBasis objeto, dada uma operação compatível.

Todas as portas de dois qubits que implementam o método to_matrix() são compatíveis. Isso deve incluir a grande maioria dos portões sem parâmetros não vinculados, mas há alguns casos especiais (consulte, por exemplo, o problema nº 10396 do qiskit ).

A operação Move que pode ser usada para especificar um corte de fio, também é suportada.

Tipo de retorno

QPDBasis

Retorna

O objeto recém-instanciado QPDBasis objeto

Aumentos

  • ValueError - Instrução não suportada.
  • ValueError - Não é possível decompor a instrução com parâmetros não vinculados.
  • ValueError - to_matrix conversão da porta de dois qubits falhou.

Parâmetros

gate (Instruction)

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