QuadraticForm
class qiskit.circuit.library.QuadraticForm(num_result_qubits=None, quadratic=None, linear=None, offset=None, little_endian=True)
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 que actúa sobre una variable binaria de bits, . Para una matriz entera , un vector entero y un entero la función puede escribirse como
Si , o contienen valores escalares, este circuito sólo calcula una aproximación de la forma cuadrática.
Provisto de qubits para codificar el valor, este circuito computa en [complemento a dos] ( https://stackoverflow.com/questions/1049722/what-is-twos-complement ).
Dado que utilizamos el complemento a dos, por ejemplo, el valor de 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, 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 es demasiado grande para representarlo con m qubits, la cadena de bits resultante es .
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
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 « ».
- quadratic (np.ndarray | list[list[float |ParameterExpression]] | None) – Una matriz que contiene los coeficientes cuadráticos, .
- linear (np.ndarray | list[float |ParameterExpression] | None) – Una matriz que contiene los coeficientes lineales, .
- offset (float |ParameterExpression | None) – Un desplazamiento constante, .
- little_endian (bool) – Codifica el resultado con poca endianidad.
Eleva
- ValueError - Si
linearyquadratictienen tamaños que no coinciden. - ValueError - Si
num_result_qubitsno 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_circuitMétodos
required_result_qubits
static required_result_qubits(quadratic, linear, offset)
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