Skip to main content
IBM Quantum Platform

QFT

class qiskit.circuit.library.QFT(num_qubits=None, approximation_degree=0, do_swaps=True, inverse=False, insert_barriers=False, name=None)

GitHub

Bases: BlueprintCircuit

Circuito de transformação quântica de Fourier.

A Transformada Quântica de Fourier (QFT) em nn qubits é a operação

j12n/2k=02n1e2πijk/2nk|j\rangle \mapsto \frac{1}{2^{n/2}} \sum_{k=0}^{2^n - 1} e^{2\pi ijk / 2^n} |k\rangle

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 é:

Diagrama que ilustra o circuito descrito anteriormente.

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

Diagrama que ilustra o circuito descrito anteriormente.

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):

Diagrama que ilustra o circuito descrito anteriormente.
Descontinuado desde a versão 2.1

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_circuit

Métodos

inverse

inverse(annotated=False)

GitHub

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

QFT

is_inverse

is_inverse()

GitHub

Se a transformada inversa de Fourier está implementada.

Retorna

True, se a transformada inversa de Fourier estiver implementada; caso contrário, False.

Tipo de retorno

bool

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