Skip to main content
IBM Quantum Platform
Esta página corresponde a una versión anterior de Qiskit SDK Ir a la última versión

QuadraticForm

class qiskit.circuit.library.QuadraticForm(num_result_qubits=None, quadratic=None, linear=None, offset=None, little_endian=True)

GitHub

Bases: QuantumCircuit

Implements a quadratic form on binary variables encoded in qubit registers.

A quadratic form on binary variables is a quadratic function QQ acting on a binary variable of nn bits, x=x0...xn1x = x_0 ... x_{n-1}. For an integer matrix AA, an integer vector bb and an integer cc the function can be written as

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

If AA, bb or cc contain scalar values, this circuit computes only an approximation of the quadratic form.

Provided with mm qubits to encode the value, this circuit computes Q(x)mod2mQ(x) \mod 2^m in [two’s complement](https://stackoverflow.com/questions/1049722/what-is-twos-complement) representation.

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

Since we use two’s complement e.g. the value of Q(x)=3Q(x) = 3 requires 2 bits to represent the value and 1 bit for the sign: 3 = ‘011’ where the first 0 indicates a positive value. On the other hand, Q(x)=3Q(x) = -3 would be -3 = ‘101’, where the first 1 indicates a negative value and 01 is the two’s complement of 3.

If the value of Q(x)Q(x) is too large to be represented with m qubits, the resulting bitstring is (Q(x)+2m)mod2m)(Q(x) + 2^m) \mod 2^m).

The implementation of this circuit is discussed in [1], Fig. 6.

References

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

arXiv:1912.04088

Deprecated since version 2.1

The class qiskit.circuit.library.arithmetic.quadratic_form.QuadraticForm is deprecated as of Qiskit 2.1. It will be removed Qiskit 3.0. Use the QuadraticFormGate instead.

Parameters

  • num_result_qubits (Optional[int]) – The number of qubits to encode the result. Called mm in the class documentation.
  • quadratic (Optional[Union[np.ndarray, List[List[Union[float, ParameterExpression]]]]]) – A matrix containing the quadratic coefficients, AA.
  • linear (Optional[Union[np.ndarray, List[Union[float, ParameterExpression]]]]) – An array containing the linear coefficients, bb.
  • offset (Optional[Union[float, ParameterExpression]]) – A constant offset, cc.
  • little_endian (bool) – Encode the result in little endianness.

Raises

  • ValueError – If linear and quadratic have mismatching sizes.
  • ValueError – If num_result_qubits is unspecified but cannot be determined because some values of the quadratic form are parameterized.

Attributes

name

Tipo: str

A human-readable name for the circuit.

Example

from qiskit import QuantumCircuit

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

Methods

required_result_qubits

static required_result_qubits(quadratic, linear, offset)

GitHub

Get the number of required result qubits.

Parameters

  • quadratic (ndarray |List[List[float]]) – A matrix containing the quadratic coefficients.
  • linear (ndarray |List[float]) – An array containing the linear coefficients.
  • offset (float) – A constant offset.

Returns

The number of qubits needed to represent the value of the quadratic form in twos complement.

Return type

int

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