Skip to main content
IBM Quantum Platform

DraperQFTAdder

class qiskit.circuit.library.DraperQFTAdder(num_state_qubits, kind='fixed', name='DraperQFTAdder')

GitHub

Bases: Adder

Un circuito que utiliza la QFT para realizar sumas en su lugar en dos registros de qubits.

En el caso de los registros con qubits de tipo « nn », el sumador QFT puede realizar sumas módulo « 2n2^n » (con kind="fixed") o sumas ordinarias añadiendo un qubit de acarreo (con kind="half").

A modo de ejemplo, un circuito sumador QFT que realiza una suma ordinaria entre dos registros de 2 qubits tiene la siguiente forma:

 a_0: ─────────■──────■────────────────────────■────────────────
               │      │                        │
 a_1: ─────────┼──────┼────────■──────■────────┼────────────────
      ┌──────┐ │P(π)  │        │      │        │       ┌───────┐
 b_0: ┤0     ├─■──────┼────────┼──────┼────────┼───────┤0      ├
      │      │        │P(π/2)  │P(π)  │        │       │       │
 b_1: ┤1 QFT ├────────■────────■──────┼────────┼───────┤1 IQFT ├
      │      │                        │P(π/2)  │P(π/4) │       │
cout: ┤2     ├────────────────────────■────────■───────┤2      ├
      └──────┘                                         └───────┘
Nota

Los bloques de QFT y QFT inversa de esta implementación omiten sus redes de intercambio, lo que invierte el orden de los qubits para lograr una implementación más eficiente. Esto influye en los qubits sobre los que actúan las puertas de fase controlada. Este esquema muestra cómo se implementa el sumador en Qiskit; no debe utilizarse como guía para construir el circuito manualmente.

Consulte también

Los siguientes objetos puerta genéricos realizan adiciones, como esta clase de circuito, pero permiten al compilador seleccionar la descomposición óptima basada en el contexto. Las implementaciones específicas pueden establecerse a través de HLSConfigpor ejemplo, este circuito puede elegirse a través de Adder=["qft_d00"].

ModularAdderGate: Un sumador genérico, módulo 2n2^n. Este

es funcionalmente equivalente a kind="fixed".

AdderGate: Un sumador inplace genérico. Este

es funcionalmente equivalente a kind="half".

Referencias:

[1] T. G. Draper, Addition on a Quantum Computer, 2000. arXiv:quant-ph/0008033

[2] Ruiz-Perez et al., Aritmética cuántica con la transformada cuántica de Fourier, 2017. arXiv:1411.5949

[3] Vedral et al., Redes cuánticas para operaciones aritméticas elementales, 1995. arXiv:quant-ph/9511018

Parámetros

  • num_state_qubits (int) – El número de qubits en cualquiera de los registros de entrada para el estado a|a\rangle o b|b\rangle. Los dos registros de entrada deben tener el mismo número de qubits.
  • kind (str) – El tipo de sumador, puede ser 'half' para un medio sumador o 'fixed' para un sumador de tamaño fijo. Un sumador medio contiene un arrastre para representar el bit más significativo, pero el sumador de tamaño fijo no lo contiene y, por tanto, realiza la suma módulo 2 ** num_state_qubits.
  • name (str) – El nombre del objeto circuito.

Eleva

ValueError - Si num_state_qubits es inferior a 1.


Atributos

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
¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.