qft
class qiskit.circuit.library.QFT(num_qubits=None, approximation_degree=0, do_swaps=True, inverse=False, insert_barriers=False, name=None)
베이스: BlueprintCircuit
양자 푸리에 변환 회로.
양자 푸리에 변환(QFT)은 큐비트에서 다음과 같은 연산을 수행합니다
이 변환을 구현하는 회로는 각 큐비트에 있는 Hadamard 게이트, 일련의 controlled-U1 (또는 위상에 따라 Z) 게이트, 스왑 게이트 레이어를 사용하여 구현할 수 있습니다. 스왑 게이트 레이어는 원칙적으로 회로 끝에 QFT가 나타나면 삭제할 수 있으며, 그러면 재주문은 고전적으로 수행될 수 있기 때문입니다. do_swaps 속성을 사용하여 해제할 수 있습니다.
4 큐비트의 경우, 이 변환을 구현하는 회로는 다음과 같습니다:

이 클래스에서 inverse 메서드를 호출하면 역 QFT를 얻을 수 있습니다. 각 회로도는 다음과 같습니다:

회로 깊이를 줄이는 한 가지 방법은 각도가 임계값 미만인 제어 위상 회전을 무시하여 대략적으로 QFT를 구현하는 것입니다. 이에 대한 자세한 내용은 https://arxiv.org/abs/quant-ph/9601018 또는 https://arxiv.org/abs/quant-ph/0403071.
여기서는 approximation_degree 속성을 사용하여 조정할 수 있습니다. 가장 작은 approximation_degree 회전 각도가 QFT에서 삭제됩니다. 예를 들어, 근사도 2의 5 큐비트에 대한 QFT가 산출됩니다(이 예에서는 배리어가 제거됨):

qiskit.circuit.library.basis_change.qft.QFT 클래스는 키스킷 2.1 에서 더 이상 사용되지 않습니다. 키스킷 3.0 에서 제거됩니다. ('모든 이전 인수에 액세스하려면 qiskit.circuit.library.QFTGate 또는 qiskit.synthesis.qft.synth_qft_full 대신 사용하세요.',)
매개변수
- num_qubits (int | None) – QFT가 작동하는 큐비트 수입니다.
- approximation_degree (int) – 근사치 정도입니다(근사치가 없는 경우 0).
- do_swaps (bool) – QFT에 최종 스왑을 포함할지 여부입니다.
- inverse (bool) – True이면 역 푸리에 변환이 구성됩니다.
- insert_barriers (bool) – True이면 시각화 개선 사항으로 장벽이 삽입됩니다.
- name (str) – 회로의 이름.
속성
approximation_degree
QFT의 근사도입니다.
리턴
현재 설정된 근사도입니다.
do_swaps
QFT의 최종 스왑이 적용되는지 여부입니다.
리턴
최종 스왑이 적용되면 참이고, 적용되지 않으면 거짓입니다.
insert_barriers
더 나은 시각화를 위해 장벽을 삽입했는지 여부.
리턴
장벽이 삽입되면 참이고, 삽입되지 않으면 거짓입니다.
num_qubits
QFT 회로의 큐비트 수입니다.
리턴
회로의 큐비트 수입니다.
name
유형: str
사람이 읽을 수 있는 회로의 이름입니다.
예제
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)my_circuit메소드
inverse
inverse(annotated=False)
이 회로를 뒤집습니다.
매개변수
annotated (bool) – 는 역 게이트가 주석이 달린 게이트로 구현될 수 있는지 여부를 나타냅니다. 이 인수의 값은 QFT의 역이 IQFT이므로 무시됩니다 QFT.
리턴
반전된 회로.
리턴 유형