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

Bases : QuantumCircuit

Met en œuvre une forme quadratique sur des variables binaires encodées dans des registres de qubits.

Une forme quadratique sur les variables binaires est une fonction quadratique QQ agissant sur une variable binaire de nn bits, x=x0...xn1x = x_0 ... x_{n-1}. Pour une matrice entière AA, un vecteur entier bb et un entier cc, la fonction peut être écrite comme suit

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

Si AA, bb ou cc contiennent des valeurs scalaires, ce circuit ne calcule qu'une approximation de la forme quadratique.

Muni de mm qubits pour coder la valeur, ce circuit calcule Q(x)mod2mQ(x) \mod 2^m en représentation [complémentaire à deux] ( https://stackoverflow.com/questions/1049722/what-is-twos-complement ).

xn0mxn(Q(x)+2m)mod2mm|x\rangle_n |0\rangle_m \mapsto |x\rangle_n |(Q(x) + 2^m) \mod 2^m \rangle_m

Comme nous utilisons le complément à deux, par exemple la valeur de Q(x)=3Q(x) = 3 nécessite 2 bits pour représenter la valeur et 1 bit pour le signe : 3 = '011' où le premier 0 indique une valeur positive. En revanche, Q(x)=3Q(x) = -3 serait -3 = '101', où le premier 1 indique une valeur négative et 01 est le complément à deux de 3.

Si la valeur de Q(x)Q(x) est trop grande pour être représentée par m qubits, la chaîne de bits résultante est (Q(x)+2m)mod2m)(Q(x) + 2^m) \mod 2^m).

La mise en œuvre de ce circuit est décrite au point [1], Fig. 6.

Références :

[1] Gilliam et al, Grover Adaptive Search for Constrained Polynomial Binary Optimization (Recherche adaptative de Grover pour l'optimisation binaire polynomiale contrainte). arXiv:1912.04088

Déclassé depuis la version 2.1

La classe qiskit.circuit.library.arithmetic.quadratic_form.QuadraticForm est obsolète depuis Qiskit 2.1. Il sera supprimé Qiskit 3.0. Utilisez plutôt le site QuadraticFormGate.

Paramètres

  • num_result_qubits (int | None) – Le nombre de qubits nécessaires pour coder le résultat. Appelée « mm » dans la documentation de la classe.
  • quadratic (np.ndarray | list[list[float |ParameterExpression]] | None) – Une matrice contenant les coefficients quadratiques, AA.
  • linear (np.ndarray | list[float |ParameterExpression] | None) – Un tableau contenant les coefficients linéaires, bb.
  • offset (float |ParameterExpression | None) – Un décalage constant, cc.
  • little_endian (bool) – Encoder le résultat en peu d'endianness.

Augmentations

  • ValueError - Si linear et quadratic ont des tailles différentes.
  • ValueError - Si num_result_qubits n'est pas spécifié mais ne peut être déterminé parce que certaines valeurs de la forme quadratique sont paramétrées.

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

required_result_qubits

static required_result_qubits(quadratic, linear, offset)

GitHub

Obtenir le nombre de qubits de résultat requis.

Paramètres

  • quadratic (ndarray |list[list[float]]) – Une matrice contenant les coefficients du second degré.
  • linear (ndarray |list[float]) – Un tableau contenant les coefficients linéaires.
  • offset (float) – Un décalage constant.

Retours

Le nombre de qubits nécessaires pour représenter la valeur de la forme quadratique en complément à deux.

Type de retour

int

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