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 transformada cuántica de Fourier.

La transformada cuántica de Fourier (QFT) en nn qubits es la operación

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

El circuito que implementa esta transformación puede implementarse utilizando puertas Hadamard en cada qubit, una serie de puertas controlled-U1 (o Z, dependiendo de la fase) y una capa de puertas Swap. En principio, la capa de puertas Swap puede suprimirse si la QFT aparece al final del circuito, ya que entonces la reordenación puede hacerse de forma clásica. Pueden desactivarse mediante el atributo do_swaps .

Para 4 qubits, el circuito que implementa esta transformación es:

Diagrama que ilustra el circuito descrito anteriormente.

La QFT inversa puede obtenerse llamando al método inverse de esta clase. El diagrama del circuito respectivo es:

Diagrama que ilustra el circuito descrito anteriormente.

Un método para reducir la profundidad del circuito es implementar la QFT aproximadamente ignorando las rotaciones de fase controlada cuando el ángulo está por debajo de un umbral. Este tema se trata con más detalle en https://arxiv.org/abs/quant-ph/9601018 o https://arxiv.org/abs/quant-ph/0403071.

Esto se puede ajustar con el atributo approximation_degree : los ángulos de rotación más pequeños de approximation_degree se eliminan de la QFT. Por ejemplo, una QFT sobre 5 qubits con grado de aproximación 2 da como resultado (las barreras se eliminan en este ejemplo):

Diagrama que ilustra el circuito descrito anteriormente.
Obsoleto desde la versión 2.1

La clase qiskit.circuit.library.basis_change.qft.QFT está obsoleta a partir de Qiskit 2.1. Se eliminará en Qiskit 3.0. ('Utilice qiskit.circuit.library.QFTGate o qiskit.synthesis.qft.synth_qft_full en su lugar, para acceder a todos los argumentos anteriores.',)

Parámetros

  • num_qubits (int | None) – El número de qubits sobre los que actúa la QFT.
  • approximation_degree (int) – El grado de aproximación (0 para ninguna aproximación).
  • do_swaps (bool) – Si se incluyen los swaps finales en la QFT.
  • inverse (bool) – Si es True, se construye la transformada inversa de Fourier.
  • insert_barriers (bool) – Si es True, las barreras se insertan como mejora de la visualización.
  • name (str) – El nombre del circuito.

Atributos

approximation_degree

El grado de aproximación de la QFT.

Devuelve

El grado de aproximación establecido actualmente.

do_swaps

Si se aplican o no los swaps finales de la QFT.

Devuelve

True, si se aplican los intercambios finales, False en caso contrario.

insert_barriers

Tanto si se insertan barreras para una mejor visualización como si no.

Devuelve

True, si se insertan barreras, False en caso contrario.

num_qubits

El número de qubits en el circuito QFT.

Devuelve

El número de qubits del circuito.

name

Tipo: str

Un nombre legible para el circuito.

Ejemplo

from qiskit import QuantumCircuit

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

Métodos

inverse

inverse(annotated=False)

GitHub

Invierte este circuito.

Parámetros

annotated (bool) – indica si la puerta inversa puede implementarse como una puerta anotada. El valor de este argumento se ignora ya que la inversa de una QFT es una IQFT que no es más que otra instancia de QFT.

Devuelve

El circuito invertido.

Tipo de retorno

QFT

is_inverse

is_inverse()

GitHub

Si se aplica la transformada inversa de Fourier.

Devuelve

True, si se implementa la transformada inversa de Fourier, False en caso contrario.

Tipo de retorno

bool

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.