Skip to main content
IBM Quantum Platform

Utilidades de truncamiento

qiskit_addon_obp.utils.truncating

Funciones para truncar los operadores de Pauli dentro de unos márgenes de error dados.

TruncationErrorBudget

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

GitHub

Bases: object

Una clase para almacenar las constantes que determinan el presupuesto de error de truncamiento.

Consulta la guía práctica para obtener información detallada sobre cómo truncar los términos de los operadores durante la retropropagación y cómo limitar el error resultante.

Parámetros

is_active

is_active()

GitHub

Devuelve si el truncamiento está activo, es decir, si el presupuesto es distinto de cero.

Tipo de retorno

bool

max_error_total

Tipo: float

Valor predeterminado: 0.0

El máximo error de truncamiento total a permitir para cada observable durante toda la retropropagación. Este valor puede ser numpy.infpor ejemplo, si no se ha especificado el error máximo en setup_budget().

p_norm

Tipo: int

Valor predeterminado: 1

Indica qué norma Lp se utiliza para calcular los errores de truncamiento.

Consulta la guía práctica para obtener información detallada sobre cómo limitar el error de truncamiento utilizando normas Lp más altas.

per_slice_budget

Tipo: list[float]

La cantidad máxima de error de truncamiento a permitir por rebanada retropropagada. Esta lista se repite durante la retropropagación de los circuitos.

tol

Tipo: float

Valor predeterminado: 1e-08

Tolerancia absoluta utilizada durante el truncamiento. Una vez encontrado un umbral de truncamiento óptimo, hasta esta tolerancia, se detendrá la búsqueda de un umbral óptimo.

setup_budget

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

GitHub

Calcular el presupuesto disponible en cada tramo para el truncamiento de términos observables.

Este método facilita la creación de un al usuario final TruncationErrorBudget . Este margen de error se puede proporcionar al método backpropagate() para permitir el truncamiento de los términos de Pauli de bajo peso. Consulta la guía práctica para obtener información detallada sobre cómo truncar términos del operador de salida y limitar el error resultante.

La lógica de construcción es la siguiente:

  • si se proporciona max_error_per_slice su valor se convierte en una lista y se utiliza inmediatamente para TruncationErrorBudget.per_slice_budget
  • si no es el caso, hay que configurar max_error_total
  • si num_slices no es set,:attr:.TruncationErrorBudget.per_slice_budget se establece en [max_error_total] lo que resulta en que todo el presupuesto se consume con avidez
  • sin embargo, si se proporciona num_slices , entonces TruncationErrorBudget.per_slice_budget asume una distribución uniforme del error total máximo entre el número especificado de rebanadas: [max_error_total / num_slices]

Por último, si se establece max_error_total , se pone un límite duro al error máximo total que se acumulará a lo largo de toda la retropropagación. Por ello, puede ser útil configurar max_error_per_slice y max_error_total .

Nota

El presupuesto no gastado durante una iteración anterior se traspasará a iteraciones posteriores, lo que significa que el presupuesto máximo para cualquier rebanada durante la retropropagación puede exceder de hecho de TruncationErrorBudget.per_slice_budget.

Parámetros

  • max_error_per_slice (float |Sequence[float] | None) – Especifica el error máximo por rebanada retropropagada. Para más información, véase más arriba.
  • max_error_total (float | None) – Especifica el error máximo total para toda la retropropagación. Para más información, véase más arriba.
  • num_slices (int | None) – El número de trozos entre los que distribuir el presupuesto. Para más información, véase más arriba.
  • p_norm (int) – La norma Lp del error. Esto afecta a la distribución gradual de max_error_total en el caso de que también num_slices esté establecido (véase más arriba). Consulta la guía práctica para obtener información detallada sobre cómo limitar el error de truncamiento utilizando normas Lp más altas.

Devuelve

El resultado TruncationErrorBudget.

Eleva

ValueError - si max_error_per_slice y max_error_total son a la vez None.

Tipo de retorno

TruncationErrorBudget

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

GitHub

Realizar una búsqueda binaria para encontrar un umbral de truncamiento observable óptimo.

Elimina los términos de Pauli de un SparsePauliOp cuya suma de los valores absolutos de sus coeficientes no supere el error proporcionado budget.

Parámetros

  • observable (SparsePauliOp) – el SparsePauliOp del que truncar los términos.
  • budget (float) – el error de truncamiento máximo admisible.
  • p_norm (int) – un entero que especifica qué p-norma utilizar.
  • tol (float) – cuando los umbrales de búsqueda binaria difieran en una cantidad inferior a tol, la búsqueda de umbral se detendrá.

Devuelve

El observable truncado y un límite para el error de truncamiento incurrido.

Nota

El límite de error de truncamiento incurrido, EE, se calcula como el p-norm de las magnitudes de los coeficientes de los términos truncados, cc, tal que E=cpE = \|c\|_p.

Tipo de retorno

tupla [*SparsePauliOp*, float ]

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.