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 circuit mettant en œuvre une fonction linéaire (par morceaux) sur les amplitudes des qubits.

Une fonction d'amplitude FF d'une fonction ff est une correspondance

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.

pour une fonction f^:{0,...,2n1}[0,1]\hat{f}: \{ 0, ..., 2^n - 1 \} \rightarrow [0, 1], où x|x\rangle est un état de qubit nn.

Ce circuit met en œuvre FF pour les fonctions linéaires par morceaux f^\hat{f}. Dans ce cas, la correspondance FF peut être approximativement mise en œuvre à l'aide d'une expansion de Taylor et de rotations de Pauli-Y contrôlées linéairement, voir [1, 2] pour plus de détails. Cette approximation utilise un site rescaling_factor pour déterminer la précision de l'expansion de Taylor.

En général, la fonction d'intérêt ff est définie à partir d'un certain intervalle [a,b][a,b], de domain à [c,d][c,d], de image, au lieu de {1,...,N}\{ 1, ..., N \} à [0,1][0, 1]. En utilisant une transformation affine, nous pouvons redéfinir l'échelle de ff à f^\hat{f} :

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

par

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

Si ff est une fonction linéaire par morceaux sur les intervalles mm [pi1,pi],i{1,...,m}[p_{i-1}, p_i], i \in \{1, ..., m\} avec des pentes αi\alpha_i et des décalages βi\beta_i, elle peut être écrite comme suit

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)

1[a,b]1_{[a, b]} est une fonction indicatrice qui prend la valeur 1 si l'argument appartient à l'intervalle [a,b][a, b] et 0 dans le cas contraire. Les points d'arrêt pip_i peuvent être spécifiés à l'aide de breakpoints l'argument.

Références :

[1] Woerner, S., et Egger, D. J. (2018). Analyse des risques quantiques. arXiv:1806.06893

[2] Gacon, J., Zoufal, C., & Woerner, S. (2020). Optimisation basée sur la simulation et améliorée par la physique quantique. arXiv:2005.10780

Déclassé depuis la version 2.2

La classe qiskit.circuit.library.arithmetic.linear_amplitude_function.LinearAmplitudeFunction est obsolète depuis Qiskit 2.2. Elle sera supprimée à Qiskit 3.0. Utilisez plutôt la classe qiskit.circuit.library.LinearAmplitudeFunctionGate.

Paramètres

  • num_state_qubits (int) – Le nombre de qubits utilisés pour coder la variable xx.
  • slope (float |list[float]) – La pente de la fonction linéaire. Peut être une liste de pentes s'il s'agit d'une fonction linéaire par morceaux.
  • offset (float |list[float]) – Le décalage de la fonction linéaire. Peut être une liste de décalages s'il s'agit d'une fonction linéaire par morceaux.
  • domain (tuple[float, float]) – Le domaine de la fonction en tant que tuple (xmin,xmax)(x_{\min}, x_{\max}).
  • image (tuple[float, float]) – L'image de la fonction en tant que tuple (fmin,fmax)(f_{\min}, f_{\max}).
  • rescaling_factor (float) – Le facteur de remise à l'échelle pour ajuster la précision de l'approximation de Taylor.
  • breakpoints (list[float] | None) – Les points de rupture si la fonction est linéaire par morceaux. Si None, la fonction n'est pas parcellaire.
  • name (str) – Nom du circuit.

Attributs

name

Type : str

Un nom lisible par l'homme pour le circuit.

Exemple

from qiskit import QuantumCircuit

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

Méthodes

post_processing

post_processing(scaled_value)

GitHub

Cartographier la valeur de la fonction de l'approximation f^\hat{f} sur ff.

Paramètres

scaled_value (float) – Valeur d'une fonction issue de l'expansion de Taylor de f^(x)\hat{f}(x).

Retours

Le site scaled_value a été remis dans le domaine de ff, en inversant d'abord la transformation utilisée pour l'approximation de Taylor, puis en remettant en correspondance le site [0,1][0, 1] avec le domaine d'origine.

Type de retour

Float

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.