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

Implementa una forma cuadrática en variables binarias codificadas en registros qubit.

Una forma cuadrática sobre variables binarias es una función cuadrática QQ que actúa sobre una variable binaria de nn bits, x=x0...xn1x = x_0 ... x_{n-1}. Para una matriz entera AA, un vector entero bb y un entero cc la función puede escribirse como

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

Si AA, bb o cc contienen valores escalares, este circuito sólo calcula una aproximación de la forma cuadrática.

Provisto de mm qubits para codificar el valor, este circuito computa Q(x)mod2mQ(x) \mod 2^m en [complemento a dos] ( 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

Dado que utilizamos el complemento a dos, por ejemplo, el valor de Q(x)=3Q(x) = 3 requiere 2 bits para representar el valor y 1 bit para el signo: 3 = '011', donde el primer 0 indica un valor positivo. Por otro lado, Q(x)=3Q(x) = -3 sería -3 = '101', donde el primer 1 indica un valor negativo y 01 es el complemento a dos de 3.

Si el valor de Q(x)Q(x) es demasiado grande para representarlo con m qubits, la cadena de bits resultante es (Q(x)+2m)mod2m)(Q(x) + 2^m) \mod 2^m).

La implementación de este circuito se describe en [1], Fig. 6.

Referencias:

[1] Gilliam et al., Grover Adaptive Search for Constrained Polynomial Binary Optimization. arXiv:1912.04088

Obsoleto desde la versión 2.1

La clase qiskit.circuit.library.arithmetic.quadratic_form.QuadraticForm está obsoleta a partir de Qiskit 2.1. Se eliminará Qiskit 3.0. En su lugar, utilice QuadraticFormGate.

Parámetros

  • num_result_qubits (int | None) – El número de qubits necesarios para codificar el resultado. En la documentación de la clase se denomina « mm ».
  • quadratic (np.ndarray | list[list[float |ParameterExpression]] | None) – Una matriz que contiene los coeficientes cuadráticos, AA.
  • linear (np.ndarray | list[float |ParameterExpression] | None) – Una matriz que contiene los coeficientes lineales, bb.
  • offset (float |ParameterExpression | None) – Un desplazamiento constante, cc.
  • little_endian (bool) – Codifica el resultado con poca endianidad.

Eleva

  • ValueError - Si linear y quadratic tienen tamaños que no coinciden.
  • ValueError - Si num_result_qubits no se especifica pero no se puede determinar porque algunos valores de la forma cuadrática están parametrizados.

Atributos

name

Tipo: str

Un nombre legible para el circuito.

Ejemplo

from qiskit import QuantumCircuit

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

Métodos

required_result_qubits

static required_result_qubits(quadratic, linear, offset)

GitHub

Obtener el número de qubits de resultado necesarios.

Parámetros

  • quadratic (ndarray |list[list[float]]) – Una matriz que contiene los coeficientes de segundo grado.
  • linear (ndarray |list[float]) – Una matriz que contiene los coeficientes lineales.
  • offset (float) – Un desplazamiento constante.

Devuelve

Número de qubits necesarios para representar el valor de la forma cuadrática en complemento a dos.

Tipo de retorno

int

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.