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

베이스: QuantumCircuit

큐비트 레지스터로 인코딩된 이진 변수에 2진법 형식을 구현합니다.

이진 변수에 대한 이차 형식은 nn 비트의 이진 변수, x=x0...xn1x = x_0 ... x_{n-1} 에 작용하는 이차 함수 QQ 입니다. 정수 행렬 AA, 정수 벡터 bb 및 정수 cc 의 경우 함수는 다음과 같이 작성할 수 있습니다

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

AA, bb 또는 cc 에 스칼라 값이 포함된 경우 이 회로는 이차식의 근사치만 계산합니다.

값을 인코딩하기 위해 mm 큐비트가 제공되면, 이 회로는 Q(x)mod2mQ(x) \mod 2^m [을 2의 보수] ( 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

예를 들어 Q(x)=3Q(x) = 3 값은 2의 보수를 사용하므로 값을 나타내는 데 2비트, 부호에 1비트가 필요합니다. 3 = '011'(첫 번째 0은 양수 값을 나타냄)입니다. 반면 Q(x)=3Q(x) = -3 = -3 = '101'이 되며, 여기서 첫 번째 1은 음수 값을 나타내고 01은 2의 3의 보수입니다.

Q(x)Q(x) 값이 너무 커서 m 큐비트로 표현할 수 없는 경우, 결과 비트 문자열은 (Q(x)+2m)mod2m)(Q(x) + 2^m) \mod 2^m) 입니다.

이 회로의 구현은 [1], 그림 6에 설명되어 있습니다.

참조 자료:

[1] 길리엄 외., 제약된 다항식 이진 최적화를 위한 Grover 적응형 검색. arXiv:1912.04088

버전부터 사용되지 않음 2.1

qiskit.circuit.library.arithmetic.quadratic_form.QuadraticForm 클래스는 키스킷 2.1 에서 더 이상 사용되지 않습니다. 제거됩니다 Qiskit 3.0. 대신 QuadraticFormGate 을 사용하세요.

매개변수

  • num_result_qubits (int | None) – 결과를 인코딩하는 데 필요한 큐비트의 수. 클래스 문서에서는 mm 라고 명명되어 있습니다.
  • quadratic (np.ndarray | list[list[float |ParameterExpression]] | None) – 2차 계수 AA 를 포함하는 행렬.
  • linear (np.ndarray | list[float |ParameterExpression] | None) – 선형 계수를 포함하는 배열, bb.
  • offset (float |ParameterExpression | None) – 상수 오프셋, cc.
  • little_endian (bool) – 결과를 작은 엔디안 단위로 인코딩합니다.

레이즈

  • ValueError - linearquadratic 의 크기가 일치하지 않는 경우.
  • ValueError - num_result_qubits 이 지정되지 않았지만 이차 형식의 일부 값이 매개변수화되어 있어 확인할 수 없는 경우.

속성

name

유형: str

사람이 읽을 수 있는 회로의 이름입니다.

예제

from qiskit import QuantumCircuit

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

메소드

required_result_qubits

static required_result_qubits(quadratic, linear, offset)

GitHub

필요한 결과 큐비트 수를 가져옵니다.

매개변수

리턴

이차함수의 값을 2진법으로 표현하는 데 필요한 큐비트 수입니다.

리턴 유형

int

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.