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)
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()
Retorna se o truncamento está ativo, ou seja, se o orçamento é diferente de zero.
Tipo de retorno
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)
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_slicefor fornecido, seu valor será convertido em uma lista e usado imediatamente paraTruncationErrorBudget.per_slice_budget - se o acima exposto não for o caso,
max_error_totaldeve ser definido - se
num_slicesnã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_slicesfor fornecido, entãoTruncationErrorBudget.per_slice_budgetassume 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.
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_totalno caso de tambémnum_slicesestar 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
truncate_binary_search
truncate_binary_search(observable, budget, *, p_norm=1, tol=1e-08)
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
SparsePauliOppara 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.
O limite do erro de truncamento incorrido, , é calculado como o p-norm das magnitudes do coeficiente dos termos truncados, , de modo que .
Tipo de retorno
tupla [*SparsePauliOp*, float ]