Skip to main content
IBM Quantum Platform

QuadraticForm

class qiskit.circuit.library.QuadraticForm(num_result_qubits=None, quadratic=None, linear=None, offset=None, little_endian=True)

GitHub

Basen: QuantumCircuit

Implementiert eine quadratische Form auf binären Variablen, die in Qubit-Registern kodiert sind.

Eine quadratische Form auf Binärvariablen ist eine quadratische Funktion QQ, die auf eine Binärvariable mit nn Bits, x=x0...xn−1x = x_0 ... x_{n-1}, wirkt. Für eine ganzzahlige Matrix AA, einen ganzzahligen Vektor bb und eine ganze Zahl cc kann die Funktion geschrieben werden als

Q(x)=xTAx+xTb+cQ(x) = x^T A x + x^T b + c

Wenn AA, bb oder cc Einzelwerte enthalten, berechnet diese Schaltung nur eine Approximation der quadratischen Form.

Ausgestattet mit mm Qubits zur Codierung des Wertes, berechnet diese Schaltung Q(x)mod  2mQ(x) \mod 2^m in [Zweierkomplement] ( https://stackoverflow.com/questions/1049722/what-is-twos-complement ) Darstellung.

∣x⟩n∣0⟩m↦∣x⟩n∣(Q(x)+2m)mod  2m⟩m|x\rangle_n |0\rangle_m \mapsto |x\rangle_n |(Q(x) + 2^m) \mod 2^m \rangle_m

Da wir das Zweierkomplement verwenden, erfordert z. B. der Wert von Q(x)=3Q(x) = 3 2 Bits zur Darstellung des Wertes und 1 Bit für das Vorzeichen: 3 = '011', wobei die erste 0 einen positiven Wert angibt. Andererseits wäre Q(x)=−3Q(x) = -3 -3 = '101', wobei die erste 1 einen negativen Wert angibt und 01 das Zweierkomplement von 3 ist.

Wenn der Wert von Q(x)Q(x) zu groß ist, um mit m Qubits dargestellt zu werden, lautet die resultierende Bitfolge (Q(x)+2m)mod  2m)(Q(x) + 2^m) \mod 2^m).

Die Umsetzung dieser Schaltung wird in [1], Abb. 6 erläutert.

Quellenangaben:

[1] Gilliam et al., Grover Adaptive Suche für eingeschränkte polynomiale binäre Optimierung. arXiv:1912.04088

Veraltet seit Version 2.1

Die Klasse qiskit.circuit.library.arithmetic.quadratic_form.QuadraticForm ist ab Qiskit 2.1 veraltet. Es wird entfernt Qiskit 3.0. Verwenden Sie stattdessen die Website QuadraticFormGate.

Parameter

  • num_result_qubits (int | None) – Die Anzahl der Qubits, die zur Kodierung des Ergebnisses benötigt werden. In der Klassendokumentation als „ mm “ bezeichnet.
  • quadratic (np.ndarray | list[list[float |ParameterExpression]] | None) – Eine Matrix, die die Koeffizienten des quadratischen Terms enthält: AA.
  • linear (np.ndarray | list[float |ParameterExpression] | None) – Ein Array, das die linearen Koeffizienten enthält: bb.
  • offset (float |ParameterExpression | None) – Ein konstanter Versatz, cc.
  • little_endian (bool) – Codieren Sie das Ergebnis in kleiner Endianness.

Erhöht

  • ValueError - Wenn linear und quadratic nicht übereinstimmende Größen haben.
  • ValueError - Wenn num_result_qubits nicht spezifiziert ist, aber nicht bestimmt werden kann, weil einige Werte der quadratischen Form parametrisiert sind.

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

required_result_qubits

static required_result_qubits(quadratic, linear, offset)

GitHub

Ermittelt die Anzahl der erforderlichen Ergebnis-Qubits.

Parameter

  • quadratic (ndarray |list[list[float]]) – Eine Matrix, die die Koeffizienten des quadratischen Terms enthält.
  • linear (ndarray |list[float]) – Ein Array, das die linearen Koeffizienten enthält.
  • offset (float) – Eine konstante Verschiebung.

Rückgabe

Die Anzahl der Qubits, die benötigt werden, um den Wert der quadratischen Form im Zweierkomplement darzustellen.

Rückgabetyp

int

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