RGQFTMultiplicador
class qiskit.circuit.library.RGQFTMultiplier(num_state_qubits, num_result_qubits=None, name='RGQFTMultiplier')
Bases: Multiplier
Un circuito de multiplicación QFT para almacenar el producto de dos registros de entrada fuera de lugar.
La multiplicación en este circuito se lleva a cabo mediante el procedimiento de la figura 3 de [la referencia 1], en el que las rotaciones de la suma ponderada se implementan tal y como se muestra en la figura 5 de [la referencia 1]. La QFT se aplica al registro de salida y va seguida de rotaciones controladas por los registros de entrada. Las rotaciones transforman el estado en el producto de dos registros de entrada en la base QFT, que se reconvierte desde dicha base mediante la QFT inversa.
A modo de ejemplo, un circuito que realiza una multiplicación modular en el marco de la teoría cuántica de campos (QFT) sobre dos registros de entrada de 2 qubits con un registro de salida de 2 qubits es el siguiente:
a_0: ────────────────────────────────────────■───────■──────■──────■────────────────
│ │ │ │
a_1: ─────────■───────■───────■───────■──────┼───────┼──────┼──────┼────────────────
│ │ │ │ │ │ │ │
b_0: ─────────┼───────┼───────■───────■──────┼───────┼──────■──────■────────────────
│ │ │ │ │ │ │ │
b_1: ─────────■───────■───────┼───────┼──────■───────■──────┼──────┼────────────────
┌──────┐ │P(4π) │ │P(2π) │ │P(2π) │ │P(π) │ ┌───────┐
out_0: ┤0 ├─■───────┼───────■───────┼──────■───────┼──────■──────┼───────┤0 ├
│ qft │ │P(2π) │P(π) │P(π) │P(π/2) │ iqft │
out_1: ┤1 ├─────────■───────────────■──────────────■─────────────■───────┤1 ├
└──────┘ └───────┘El MultiplierGate objeto representa una multiplicación, al igual que esta clase de circuito, pero permite al compilador seleccionar la descomposición óptima en función del contexto. Las implementaciones concretas se pueden configurar a través de HLSConfig, por ejemplo, este circuito se puede seleccionar mediante Multiplier=["qft_r17"].
Referencias:
[1] Ruiz-Perez et al., Aritmética cuántica con la transformada cuántica de Fourier, 2017. arXiv:1411.5949
Parámetros
- num_state_qubits (int) – El número de qubits en cualquiera de los registros de entrada para el estado o . Los dos registros de entrada deben tener el mismo número de qubits.
- num_result_qubits (int | None) – El número de qubits de resultado al que limitar la salida. Si el número de qubits resultantes es , se realiza la multiplicación módulo para limitar la salida al número especificado de qubits. El valor por defecto es
2 * num_state_qubitspara representar cualquier resultado posible de la multiplicación de las dos entradas. - name (str) – El nombre del objeto circuito.
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