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

Basi: QuantumCircuit

Implementa una forma quadratica su variabili binarie codificate in registri di qubit.

Una forma quadratica su variabili binarie è una funzione quadratica QQ che agisce su una variabile binaria di nn bit, x=x0...xn1x = x_0 ... x_{n-1}. Per una matrice intera AA, un vettore intero bb e un intero cc la funzione può essere scritta come

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

Se AA, bb o cc contengono valori scalari, questo circuito calcola solo un'approssimazione della forma quadratica.

Dotato di mm qubit per codificare il valore, questo circuito calcola Q(x)mod2mQ(x) \mod 2^m nella rappresentazione [a complemento di due] ( 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

Poiché utilizziamo il complemento a due, ad esempio il valore di Q(x)=3Q(x) = 3 richiede 2 bit per rappresentare il valore e 1 bit per il segno: 3 = '011', dove il primo 0 indica un valore positivo. D'altra parte, Q(x)=3Q(x) = -3 sarebbe -3 = '101', dove il primo 1 indica un valore negativo e 01 è il complemento a due di 3.

Se il valore di Q(x)Q(x) è troppo grande per essere rappresentato con m qubit, la stringa di bit risultante è (Q(x)+2m)mod2m)(Q(x) + 2^m) \mod 2^m).

L'implementazione di questo circuito è illustrata nella [1], Fig. 6.

Riferimenti:

[1] Gilliam et al, Ricerca adattiva di Grover per l'ottimizzazione binaria polinomiale vincolata. arXiv:1912.04088

Deprecato dalla versione 2.1

La classe qiskit.circuit.library.arithmetic.quadratic_form.QuadraticForm è deprecata a partire da Qiskit 2.1. Verrà rimosso Qiskit 3.0. Utilizzate invece il sito QuadraticFormGate.

Parametri

  • num_result_qubits (int | None) – Il numero di qubit necessari per codificare il risultato. Chiamato " mm " nella documentazione del corso.
  • quadratic (np.ndarray | list[list[float |ParameterExpression]] | None) – Una matrice contenente i coefficienti quadratici, AA.
  • linear (np.ndarray | list[float |ParameterExpression] | None) – Un array contenente i coefficienti lineari, bb.
  • offset (float |ParameterExpression | None) – Un offset costante, cc.
  • little_endian (bool) – Codificare il risultato con poca endianness.

Aumenti

  • ValueError - Se linear e quadratic hanno dimensioni diverse.
  • ValueError - Se num_result_qubits non è specificato ma non può essere determinato perché alcuni valori della forma quadratica sono parametrizzati.

Attributi

name

Tipo: str

Un nome leggibile per il circuito.

Esempio

from qiskit import QuantumCircuit

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

Metodi

required_result_qubits

static required_result_qubits(quadratic, linear, offset)

GitHub

Ottenere il numero di qubit di risultato richiesti.

Parametri

  • quadratic (ndarray |list[list[float]]) – Una matrice contenente i coefficienti del secondo grado.
  • linear (ndarray |list[float]) – Un array contenente i coefficienti lineari.
  • offset (float) – Un offset costante.

Risultati

Il numero di qubit necessari per rappresentare il valore della forma quadratica in complemento a due.

Tipo di restituzione

int

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.