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 transformada cuántica de Fourier.
La transformada cuántica de Fourier (QFT) en qubits es la operación
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:

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

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

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_circuitMétodos
inverse
inverse(annotated=False)
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