Skip to main content
IBM Quantum Platform

Utilitários de truncagem

qiskit_addon_obp.utils.truncating

Funções para truncar operadores Pauli dentro de determinados orçamentos de erro.

TruncationErrorBudget

class TruncationErrorBudget(per_slice_budget=<factory>, max_error_total=0.0, p_norm=1, tol=1e-08)

GitHub

Bases: object

Uma classe para armazenar as constantes que determinam o orçamento de erro de truncamento.

Consulte o guia prático para obter uma explicação detalhada sobre o truncamento de termos de operadores durante a retropropagação e a limitação do erro resultante.

Parâmetros

is_active

is_active()

GitHub

Retorna se o truncamento está ativo, ou seja, se o orçamento é diferente de zero.

Tipo de retorno

bool

max_error_total

Tipo: float

Valor Padrão: 0.0

O erro de truncamento total máximo a ser permitido para cada observável durante toda a retropropagação. Esse valor pode ser numpy.infpor exemplo, quando o erro máximo não foi especificado durante setup_budget().

p_norm

Tipo: int

Valor Padrão: 1

Indica qual norma Lp é usada para calcular os erros de truncamento.

Consulte o guia prático para obter uma explicação detalhada sobre como limitar o erro de truncamento utilizando normas Lp mais elevadas.

per_slice_budget

Tipo: list[float]

O valor máximo de erro de truncamento permitido por fatia retropropagada. Essa lista será repetida durante a retropropagação das partes do circuito.

tol

Tipo: float

Valor Padrão: 1e-08

Tolerância absoluta usada durante o truncamento. Quando um limite de truncamento ideal, até essa tolerância, tiver sido encontrado, a busca por um limite ideal será interrompida.

setup_budget

setup_budget(*, max_error_per_slice=None, max_error_total=None, num_slices=None, p_norm=1)

GitHub

Calcule o orçamento disponível para cada fatia para truncamento de termos observáveis.

Esse método facilita a criação de um para o usuário final TruncationErrorBudget . Esse orçamento de erro pode ser fornecido ao método backpropagate() para permitir o truncamento dos termos de Pauli de baixo peso. Consulte o guia prático para obter uma explicação detalhada sobre como truncar termos do operador de saída e limitar o erro resultante.

A lógica de construção é a seguinte:

  • se max_error_per_slice for fornecido, seu valor será convertido em uma lista e usado imediatamente para TruncationErrorBudget.per_slice_budget
  • se o acima exposto não for o caso, max_error_total deve ser definido
  • se num_slices não for set,:attr:.TruncationErrorBudget.per_slice_budget é definido como [max_error_total] , o que faz com que todo o orçamento seja consumido avidamente
  • entretanto, se num_slices for fornecido, então TruncationErrorBudget.per_slice_budget assume uma distribuição uniforme do erro total máximo no número especificado de fatias: [max_error_total / num_slices]

Por fim, se max_error_total for definido, isso colocará um limite rígido no erro máximo total a ser acumulado em toda a retropropagação. Portanto, a configuração de max_error_per_slice e max_error_total pode ser útil.

Nota

O orçamento não gasto durante uma iteração anterior será transferido para as iterações subsequentes, o que significa que o orçamento máximo para qualquer fatia durante a retropropagação pode, de fato, exceder TruncationErrorBudget.per_slice_budget.

Parâmetros

  • max_error_per_slice (float |Sequence[float] | None) – Especifica o erro máximo por fatia retropropagada. Consulte acima para obter mais detalhes.
  • max_error_total (float | None) – Especifica o erro máximo total para toda a retropropagação. Consulte acima para obter mais detalhes.
  • num_slices (int | None) – O número de fatias sobre as quais distribuir o orçamento. Consulte acima para obter mais detalhes.
  • p_norm (int) – A norma Lp do erro. Isso afeta a distribuição gradual de max_error_total no caso de também num_slices estar definido (ver acima). Consulte o guia prático para obter uma explicação detalhada sobre como limitar o erro de truncamento utilizando normas Lp mais elevadas.

Retorna

O resultado TruncationErrorBudget.

Aumentos

ValueError - Se max_error_per_slice e max_error_total forem ambos None.

Tipo de retorno

TruncationErrorBudget

truncate_binary_search(observable, budget, *, p_norm=1, tol=1e-08)

GitHub

Execute a pesquisa binária para encontrar um limite de truncamento observável ideal.

Remove os termos de Pauli de um SparsePauliOp cuja soma dos valores de seus coeficientes absolutos não excede o erro fornecido budget.

Parâmetros

  • observable (SparsePauliOp) – o SparsePauliOp para truncar os termos.
  • budget (float) – o erro de truncamento máximo permitido.
  • p_norm (int) – um número inteiro que especifica a norma p a ser usada.
  • tol (float) – quando os limites de pesquisa binária diferirem em um valor menor que tol, a pesquisa de limite será interrompida.

Retorna

O observável truncado e um limite para o erro de truncamento incorrido.

Nota

O limite do erro de truncamento incorrido, EE, é calculado como o p-norm das magnitudes do coeficiente dos termos truncados, cc, de modo que E=cpE = \|c\|_p.

Tipo de retorno

tupla [*SparsePauliOp*, float ]

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