QuadraticForm
class qiskit.circuit.library.QuadraticForm(num_result_qubits=None, quadratic=None, linear=None, offset=None, little_endian=True)
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 , die auf eine Binärvariable mit Bits, , wirkt. Für eine ganzzahlige Matrix , einen ganzzahligen Vektor und eine ganze Zahl kann die Funktion geschrieben werden als
Wenn , oder Einzelwerte enthalten, berechnet diese Schaltung nur eine Approximation der quadratischen Form.
Ausgestattet mit Qubits zur Codierung des Wertes, berechnet diese Schaltung in [Zweierkomplement] ( https://stackoverflow.com/questions/1049722/what-is-twos-complement ) Darstellung.
Da wir das Zweierkomplement verwenden, erfordert z. B. der Wert von 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 -3 = '101', wobei die erste 1 einen negativen Wert angibt und 01 das Zweierkomplement von 3 ist.
Wenn der Wert von zu groß ist, um mit m Qubits dargestellt zu werden, lautet die resultierende Bitfolge .
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
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 „ “ bezeichnet.
- quadratic (np.ndarray | list[list[float |ParameterExpression]] | None) – Eine Matrix, die die Koeffizienten des quadratischen Terms enthält: .
- linear (np.ndarray | list[float |ParameterExpression] | None) – Ein Array, das die linearen Koeffizienten enthält: .
- offset (float |ParameterExpression | None) – Ein konstanter Versatz, .
- little_endian (bool) – Codieren Sie das Ergebnis in kleiner Endianness.
Erhöht
- ValueError - Wenn
linearundquadraticnicht übereinstimmende Größen haben. - ValueError - Wenn
num_result_qubitsnicht 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_circuitMethoden
required_result_qubits
static required_result_qubits(quadratic, linear, offset)
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