Skip to main content
IBM Quantum Platform

LinearAmplitudeFunction

class qiskit.circuit.library.LinearAmplitudeFunction(num_state_qubits, slope, offset, domain, image, rescaling_factor=1, breakpoints=None, name='F')

GitHub

Bases: QuantumCircuit

Un circuito que implementa una función lineal (a trozos) sobre las amplitudes de los qubits.

Una función de amplitud FF de una función ff es un mapeo

Fx0=1f^(x)x0+f^(x)x1.F|x\rangle|0\rangle = \sqrt{1 - \hat{f}(x)} |x\rangle|0\rangle + \sqrt{\hat{f}(x)} |x\rangle|1\rangle.

para una función f^:{0,...,2n1}[0,1]\hat{f}: \{ 0, ..., 2^n - 1 \} \rightarrow [0, 1], donde x|x\rangle es un estado qubit nn.

Este circuito implementa FF para funciones lineales a trozos f^\hat{f}. En este caso, el mapeo FF puede implementarse aproximadamente usando una expansión Taylor y rotaciones Pauli-Y linealmente controladas, ver [1, 2] para más detalles. Esta aproximación utiliza un rescaling_factor para determinar la precisión de la expansión de Taylor.

En general, la función de interés ff se define a partir de algún intervalo [a,b][a,b], el domain a [c,d][c,d], el image, en lugar de {1,...,N}\{ 1, ..., N \} a [0,1][0, 1]. Utilizando una transformación afín podemos reescalar ff a f^\hat{f} :

f^(x)=f(ϕ(x))cdc\hat{f}(x) = \frac{f(\phi(x)) - c}{d - c}

con

ϕ(x)=a+ba2n1x.\phi(x) = a + \frac{b - a}{2^n - 1} x.

Si ff es una función lineal a trozos en mm intervalos [pi1,pi],i{1,...,m}[p_{i-1}, p_i], i \in \{1, ..., m\} con pendientes αi\alpha_i y desplazamientos βi\beta_i puede escribirse como

f(x)=i=1m1[pi1,pi](x)(αix+βi)f(x) = \sum_{i=1}^m 1_{[p_{i-1}, p_i]}(x) (\alpha_i x + \beta_i)

donde 1[a,b]1_{[a, b]} es una función indicadora que toma el valor 1 si el argumento se encuentra en el intervalo [a,b][a, b] y 0 en cualquier otro caso. Los puntos de interrupción pip_i se pueden especificar mediante el breakpoints argumento.

Referencias:

[1] Woerner, S., y Egger, D. J. (2018). Análisis de riesgos cuánticos. arXiv:1806.06893

[2] Gacon, J., Zoufal, C., y Woerner, S. (2020). Optimización basada en simulación potenciada por la cuántica. arXiv:2005.10780

Obsoleto desde la versión 2.2

La clase qiskit.circuit.library.arithmetic.linear_amplitude_function.LinearAmplitudeFunction está obsoleta a partir de Qiskit 2.2. Se eliminará en Qiskit 3.0. En su lugar, utilice la clase qiskit.circuit.library.LinearAmplitudeFunctionGate.

Parámetros

  • num_state_qubits (int) – El número de qubits utilizados para codificar la variable xx.
  • slope (float |list[float]) – La pendiente de la función lineal. Puede ser una lista de pendientes si es una función lineal a trozos.
  • offset (float |list[float]) – El desplazamiento de la función lineal. Puede ser una lista de desplazamientos si es una función lineal a trozos.
  • domain (tuple[float, float]) – El dominio de la función como tupla (xmin,xmax)(x_{\min}, x_{\max}).
  • image (tuple[float, float]) – La imagen de la función como tupla (fmin,fmax)(f_{\min}, f_{\max}).
  • rescaling_factor (float) – El factor de reescalado para ajustar la precisión en la aproximación de Taylor.
  • breakpoints (list[float] | None) – Los puntos de ruptura si la función es lineal a trozos. Si es Ninguno, la función no es a trozos.
  • name (str) – Nombre del circuito.

Atributos

name

Tipo: str

Un nombre legible para el circuito.

Ejemplo

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit

Métodos

post_processing

post_processing(scaled_value)

GitHub

Asigne el valor de la función de la f^\hat{f} aproximada a ff.

Parámetros

scaled_value (float) – Un valor de función de la expansión de Taylor de f^(x)\hat{f}(x).

Devuelve

El scaled_value mapeado de nuevo al dominio de ff, invirtiendo primero la transformación utilizada para la aproximación Taylor y luego mapeando de nuevo desde [0,1][0, 1] al dominio original.

Tipo de retorno

Float

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