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

Basen: QuantumCircuit

Eine Schaltung, die eine (stückweise) lineare Funktion auf Qubit-Amplituden implementiert.

Eine Amplitudenfunktion FF einer Funktion ff ist eine Abbildung

F∣x⟩∣0⟩=1−f^(x)∣x⟩∣0⟩+f^(x)∣x⟩∣1⟩.F|x\rangle|0\rangle = \sqrt{1 - \hat{f}(x)} |x\rangle|0\rangle + \sqrt{\hat{f}(x)} |x\rangle|1\rangle.

für eine Funktion f^:{0,...,2n−1}→[0,1]\hat{f}: \{ 0, ..., 2^n - 1 \} \rightarrow [0, 1], wobei ∣x⟩|x\rangle ein nn Qubit-Zustand ist.

Diese Schaltung implementiert FF für stückweise lineare Funktionen f^\hat{f}. In diesem Fall kann die Abbildung FF näherungsweise durch eine Taylor-Erweiterung und linear gesteuerte Pauli-Y-Drehungen implementiert werden, siehe [1, 2] für weitere Einzelheiten. Bei dieser Annäherung wird eine rescaling_factor verwendet, um die Genauigkeit der Taylor-Erweiterung zu bestimmen.

Im Allgemeinen wird die interessierende Funktion ff von einem Intervall [a,b][a,b], dem domain bis [c,d][c,d], dem image, statt {1,...,N}\{ 1, ..., N \} bis [0,1][0, 1] definiert. Mit einer affinen Transformation können wir ff bis f^\hat{f} umskalieren:

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

mit

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

Wenn ff eine stückweise lineare Funktion auf mm Intervallen [pi−1,pi],i∈{1,...,m}[p_{i-1}, p_i], i \in \{1, ..., m\} mit Steigungen αi\alpha_i und Offsets βi\beta_i ist, kann sie wie folgt geschrieben werden

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

wobei 1[a,b]1_{[a, b]} eine Indikatorfunktion ist, die den Wert 1 annimmt, wenn das Argument im Intervall [a,b][a, b] liegt, und andernfalls den Wert 0. Die Haltepunkte pip_i können über das breakpoints Argument angegeben werden.

Quellenangaben:

[1] Woerner, S., & Egger, D. J. (2018). Quantenrisikobewertung. arXiv:1806.06893

[2] Gacon, J., Zoufal, C., & Woerner, S. (2020). Quantum-gestützte, simulationsbasierte Optimierung. arXiv:2005.10780

Veraltet seit Version 2.2

Die Klasse qiskit.circuit.library.arithmetic.linear_amplitude_function.LinearAmplitudeFunction ist ab Qiskit 2.2 veraltet. Sie wird in Qiskit 3.0 entfernt. Verwenden Sie stattdessen die Klasse qiskit.circuit.library.LinearAmplitudeFunctionGate.

Parameter

  • num_state_qubits (int) – Die Anzahl der Qubits, die zur Kodierung der Variablen xx verwendet werden.
  • slope (float |list[float]) – Die Steigung der linearen Funktion. Kann eine Liste von Steigungen sein, wenn es sich um eine stückweise lineare Funktion handelt.
  • offset (float |list[float]) – Der Offset der linearen Funktion. Kann eine Liste von Offsets sein, wenn es sich um eine stückweise lineare Funktion handelt.
  • domain (tuple[float, float]) – Der Bereich der Funktion als Tupel (xmin⁡,xmax⁡)(x_{\min}, x_{\max}).
  • image (tuple[float, float]) – Das Bild der Funktion als Tupel (fmin⁡,fmax⁡)(f_{\min}, f_{\max}).
  • rescaling_factor (float) – Der Skalierungsfaktor zur Anpassung der Genauigkeit bei der Taylor-Approximation.
  • breakpoints (list[float] | None) – Die Haltepunkte, wenn die Funktion stückweise linear ist. Wenn Keine, ist die Funktion nicht stückweise.
  • name (str) – Name der Schaltung.

Attribute

name

Typ: str

Ein von Menschen lesbarer Name für den Stromkreis.

Beispiel

from qiskit import QuantumCircuit

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

Methoden

post_processing

post_processing(scaled_value)

GitHub

Ordnen Sie den Funktionswert der approximierten f^\hat{f} auf ff zu.

Parameter

scaled_value (float) – Ein Funktionswert aus der Taylor-Erweiterung von f^(x)\hat{f}(x).

Rückgabe

Die Website scaled_value wird auf den Bereich von ff zurückgeführt, indem zunächst die für die Taylor-Approximation verwendete Transformation umgekehrt und dann von [0,1][0, 1] auf den ursprünglichen Bereich zurückgeführt wird.

Rückgabetyp

Gleitkomma

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.