RGQFTMultiplicateur
class qiskit.circuit.library.RGQFTMultiplier(num_state_qubits, num_result_qubits=None, name='RGQFTMultiplier')
Bases : Multiplier
Un circuit de multiplication QFT pour stocker le produit de deux registres d'entrée hors place.
Dans ce circuit, la multiplication est mise en œuvre selon la procédure décrite à la figure 3 de [la référence 1], où les rotations de la somme pondérée sont réalisées comme indiqué à la figure 5 de [la référence 1]. La fonction QFT est appliquée au registre de sortie et est suivie de rotations commandées par les registres d'entrée. Les rotations transforment l'état en produit de deux registres d'entrée dans la base QFT, qui est ensuite ramené à la base QFT à l'aide de la QFT inverse.
À titre d'exemple, voici un circuit qui effectue une multiplication modulaire en théorie quantique des champs sur deux registres d'entrée de 2 qubits, avec un registre de sortie de 2 qubits :
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 ├
└──────┘ └───────┘Cet MultiplierGate objet représente une multiplication, à l'instar de cette classe de circuit, mais permet au compilateur de choisir la décomposition optimale en fonction du contexte. Les implémentations spécifiques peuvent être définies via le HLSConfig, par exemple, ce circuit peut être sélectionné via Multiplier=["qft_r17"].
Références :
[1] Ruiz-Perez et al, Arithmétique quantique avec la transformée de Fourier quantique, 2017. arXiv:1411.5949
Paramètres
- num_state_qubits (int) – Le nombre de qubits dans l'un ou l'autre des registres d'entrée pour l'état ou . Les deux registres d'entrée doivent avoir le même nombre de qubits.
- num_result_qubits (int | None) – Le nombre de qubits de résultat à limiter à la sortie. Si le nombre de qubits de résultat est , une multiplication modulo est effectuée pour limiter la sortie au nombre de qubits spécifié. La valeur par défaut est
2 * num_state_qubitspour représenter tout résultat possible de la multiplication des deux entrées. - name (str) – Le nom de l'objet circuit.
Attributs
name
Type : str
Un nom lisible par l'homme pour le circuit.
Exemple
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)my_circuit