Skip to main content
IBM Quantum Platform

RGQFTMoltiplicatore

class qiskit.circuit.library.RGQFTMultiplier(num_state_qubits, num_result_qubits=None, name='RGQFTMultiplier')

GitHub

Basi: Multiplier

Un circuito di moltiplicazione QFT per memorizzare il prodotto di due registri di ingresso fuori posto.

In questo circuito la moltiplicazione viene implementata utilizzando la procedura illustrata nella figura 3 del [documento 1], dove le rotazioni della somma ponderata sono realizzate come indicato nella figura 5 del [documento 1]. La QFT viene applicata al registro di uscita ed è seguita da rotazioni controllate dai registri di ingresso. Le rotazioni trasformano lo stato nel prodotto di due registri di ingresso nella base QFT, che viene poi riportato alla base QFT utilizzando la QFT inversa.

Ad esempio, un circuito che esegue una moltiplicazione modulare in QFT su due registri di ingresso da 2 qubit con un registro di uscita da 2 qubit è il seguente:

  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      ├
       └──────┘                                                              └───────┘
Vedi anche

L'oggetto MultiplierGate rappresenta una moltiplicazione, proprio come questa classe di circuiti, ma consente al compilatore di scegliere la scomposizione ottimale in base al contesto. È possibile impostare specifiche implementazioni tramite HLSConfig, ad esempio questo circuito può essere selezionato tramite Multiplier=["qft_r17"].

Riferimenti:

[1] Ruiz-Perez et al., Aritmetica quantistica con la trasformata di Fourier quantistica, 2017. arXiv:1411.5949

Parametri

  • num_state_qubits (int) – Il numero di qubit in uno dei due registri di ingresso per lo stato a|a\rangle o b|b\rangle. I due registri di ingresso devono avere lo stesso numero di qubit.
  • num_result_qubits (int | None) – Il numero di qubit di risultato a cui limitare l'uscita. Se il numero di qubit del risultato è nn, viene eseguita la moltiplicazione modulo 2n2^n per limitare l'uscita al numero di qubit specificato. Il valore predefinito è 2 * num_state_qubits per rappresentare ogni possibile risultato della moltiplicazione dei due ingressi.
  • name (str) – Il nome dell'oggetto circuito.

Attributi

name

Tipo: str

Un nome leggibile per il circuito.

Esempio

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.