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 uma forma quadrática em variáveis binárias codificadas em registros de qubit.

Uma forma quadrática em variáveis binárias é uma função quadrática QQ que atua em uma variável binária de nn bits, x=x0...xn1x = x_0 ... x_{n-1}. Para uma matriz inteira AA, um vetor inteiro bb e um inteiro cc, a função pode ser escrita como

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

Se AA, bb ou cc contiverem valores escalares, esse circuito calculará apenas uma aproximação da forma quadrática.

Fornecido com mm qubits para codificar o valor, esse circuito calcula Q(x)mod2mQ(x) \mod 2^m em uma representação [de complemento de dois] ( 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

Como usamos o complemento de dois, por exemplo, o valor de Q(x)=3Q(x) = 3 requer 2 bits para representar o valor e 1 bit para o sinal: 3 = '011', em que o primeiro 0 indica um valor positivo. Por outro lado, Q(x)=3Q(x) = -3 seria -3 = '101', em que o primeiro 1 indica um valor negativo e 01 é o complemento de dois de 3.

Se o valor de Q(x)Q(x) for muito grande para ser representado com m qubits, a cadeia de bits resultante será (Q(x)+2m)mod2m)(Q(x) + 2^m) \mod 2^m).

A implementação desse circuito é discutida em [1], Fig. 6.

Referências

[1] Gilliam et al, Grover Adaptive Search for Constrained Polynomial Binary Optimization (Pesquisa adaptativa de Grover para otimização binária polinomial restrita). arXiv:1912.04088

Descontinuado desde a versão 2.1

A classe qiskit.circuit.library.arithmetic.quadratic_form.QuadraticForm está obsoleta desde o Qiskit 2.1. Ele será removido do Qiskit 3.0. Em vez disso, use o site QuadraticFormGate.

Parâmetros

  • num_result_qubits (int | None) – O número de qubits necessários para codificar o resultado. Chamado de mm na documentação da classe.
  • quadratic (np.ndarray | list[list[float |ParameterExpression]] | None) – Uma matriz contendo os coeficientes quadráticos, AA.
  • linear (np.ndarray | list[float |ParameterExpression] | None) – Uma matriz contendo os coeficientes lineares, bb.
  • offset (float |ParameterExpression | None) – Um deslocamento constante, cc.
  • little_endian (bool) – Codificar o resultado com pouca endianidade.

Aumentos

  • ValueError - Se linear e quadratic tiverem tamanhos incompatíveis.
  • ValueError - Se num_result_qubits não for especificado, mas não puder ser determinado porque alguns valores da forma quadrática são parametrizados.

Atributos

name

Tipo: str

Um nome legível por humanos para o circuito.

Exemplo

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

Obtenha o número de qubits de resultado necessários.

Parâmetros

  • quadratic (ndarray |list[list[float]]) – Uma matriz que contém os coeficientes quadráticos.
  • linear (ndarray |list[float]) – Uma matriz que contém os coeficientes lineares.
  • offset (float) – Um deslocamento constante.

Retorna

O número de qubits necessários para representar o valor da forma quadrática no complemento de dois.

Tipo de retorno

int

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.