QFT
class qiskit.circuit.library.QFT(num_qubits=None, approximation_degree=0, do_swaps=True, inverse=False, insert_barriers=False, name=None)
Bases: BlueprintCircuit
Circuito de transformação quântica de Fourier.
A Transformada Quântica de Fourier (QFT) em qubits é a operação
O circuito que implementa essa transformação pode ser implementado usando portas Hadamard em cada qubit, uma série de portas controlled-U1 (ou Z, dependendo da fase) e uma camada de portas Swap. A camada de portas Swap pode, em princípio, ser descartada se o QFT aparecer no final do circuito, já que então a reordenação pode ser feita de forma clássica. Eles podem ser desativados usando o atributo do_swaps .
Para 4 qubits, o circuito que implementa essa transformação é:

A QFT inversa pode ser obtida chamando o método inverse nessa classe. O respectivo diagrama de circuito é:

Um método para reduzir a profundidade do circuito é implementar o QFT aproximadamente ignorando as rotações de fase controlada em que o ângulo está abaixo de um limite. Isso é discutido em mais detalhes em https://arxiv.org/abs/quant-ph/9601018 ou https://arxiv.org/abs/quant-ph/0403071.
Aqui, isso pode ser ajustado usando o atributo approximation_degree : os menores ângulos de rotação approximation_degree são retirados da QFT. Por exemplo, um QFT em 5 qubits com grau de aproximação 2 produz (as barreiras são eliminadas neste exemplo):

A classe qiskit.circuit.library.basis_change.qft.QFT está obsoleta desde o Qiskit 2.1. Ele será removido no Qiskit 3.0. ('Use qiskit.circuit.library.QFTGate ou qiskit.synthesis.qft.synth_qft_full em vez disso, para acessar todos os argumentos anteriores.',)
Parâmetros
- num_qubits (int | None) – O número de qubits nos quais a QFT atua.
- approximation_degree (int) – O grau de aproximação (0 para nenhuma aproximação).
- do_swaps (bool) – Se deve incluir os swaps finais no QFT.
- inverse (bool) – Se for True, a transformada inversa de Fourier será construída.
- insert_barriers (bool) – Se for True, as barreiras serão inseridas como aprimoramento da visualização.
- name (str) – O nome do circuito.
Atributos
approximation_degree
O grau de aproximação da QFT.
Retorna
O grau de aproximação definido atualmente.
do_swaps
Se as trocas finais do QFT são aplicadas ou não.
Retorna
True, se as trocas finais forem aplicadas; False, se não forem.
insert_barriers
Se as barreiras são inseridas para melhor visualização ou não.
Retorna
True, se as barreiras forem inseridas; False, se não forem.
num_qubits
O número de qubits no circuito QFT.
Retorna
O número de qubits no circuito.
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_circuitMétodos
inverse
inverse(annotated=False)
Inverta esse circuito.
Parâmetros
annotated (bool) – indica se a porta inversa pode ser implementada como uma porta anotada. O valor desse argumento é ignorado, pois o inverso de uma QFT é uma IQFT, que é apenas outra instância de QFT.
Retorna
O circuito invertido.
Tipo de retorno