RGQFTM배율
class qiskit.circuit.library.RGQFTMultiplier(num_state_qubits, num_result_qubits=None, name='RGQFTMultiplier')
베이스: Multiplier
두 입력 레지스터의 곱셈을 제자리에 저장하는 QFT 곱셈 회로입니다.
이 회로에서 곱셈 연산은 [[1] ]의 그림 3에 제시된 절차를 사용하여 구현되며, 가중 합 회전 연산은 [[1]] 의 그림 5에 제시된 방식대로 구현된다. QFT는 출력 레지스터에 적용되며, 그 다음에는 입력 레지스터에 의해 제어되는 회전 연산이 수행됩니다. 회전 연산은 상태를 QFT 기저에서 두 입력 레지스터의 곱으로 변환하며, 이는 역 QFT를 사용하여 QFT 기저로 되돌려집니다.
예를 들어, 2 큐비트 크기의 두 입력 레지스터에 대해 모듈식 양자장론(QFT) 곱셈 연산을 수행하고 2 큐비트 크기의 출력 레지스터를 갖는 회로는 다음과 같습니다:
a_0: ────────────────────────────────────────■───────■──────■──────■────────────────
│ │ │ │
a_1: ─────────■───────■───────■───────■──────┼───────┼──────┼──────┼────────────────
│ │ │ │ │ │ │ │
b_0: ─────────┼───────┼───────■───────■──────┼───────┼──────■──────■────────────────
│ │ │ │ │ │ │ │
b_1: ─────────■───────■───────┼───────┼──────■───────■──────┼──────┼────────────────
┌──────┐ │P(4π) │ │P(2π) │ │P(2π) │ │P(π) │ ┌───────┐
out_0: ┤0 ├─■───────┼───────■───────┼──────■───────┼──────■──────┼───────┤0 ├
│ qft │ │P(2π) │P(π) │P(π) │P(π/2) │ iqft │
out_1: ┤1 ├─────────■───────────────■──────────────■─────────────■───────┤1 ├
└──────┘ └───────┘이 MultiplierGate 객체는 이 회로 클래스처럼 곱셈 연산을 나타내지만, 컴파일러가 문맥에 따라 최적의 분해 방식을 선택할 수 있도록 합니다. 구체적인 구현 방식은 을 통해 HLSConfig설정할 수 있으며, 예를 들어 이 회로는 을 통해 선택할 수 Multiplier=["qft_r17"] 있습니다.
참조 자료:
[1] 루이즈-페레즈 외., 양자 푸리에 변환을 이용한 양자 연산, 2017. arXiv:1411.5949
매개변수
- num_state_qubits (int) – 상태 또는 에 대한 입력 레지스터의 큐비트 수. 두 입력 레지스터는 동일한 수의 큐비트를 가져야 합니다.
- num_result_qubits (int | None) – 출력을 제한할 결과 큐비트 수입니다. 결과 큐비트 수가 인 경우 곱셈 모듈러 를 수행하여 출력을 지정된 큐비트 수로 제한합니다. 기본값은
2 * num_state_qubits으로 두 입력값의 곱셈으로 가능한 모든 결과를 나타냅니다. - name (str) – 회로 개체의 이름입니다.
속성
name
유형: str
사람이 읽을 수 있는 회로의 이름입니다.
예제
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)my_circuit