RGQFTMultiplikator
class qiskit.circuit.library.RGQFTMultiplier(num_state_qubits, num_result_qubits=None, name='RGQFTMultiplier')
Basen: Multiplier
Eine QFT-Multiplikationsschaltung zur Speicherung des Produkts zweier Eingangsregister an einer anderen Stelle.
Die Multiplikation in dieser Schaltung wird nach dem in Abb. 3 in [1] dargestellten Verfahren realisiert, wobei die Rotationen der gewichteten Summe wie in Abb. 5 in [1] dargestellt umgesetzt werden. Die QFT wird auf das Ausgaberegister angewendet, worauf Rotationen folgen, die durch Eingaberegister gesteuert werden. Die Rotationen wandeln den Zustand in das Produkt zweier Eingangsregister in der QFT-Basis um, das mithilfe der inversen QFT wieder in die QFT-Basis zurückgeführt wird.
Ein Beispiel für eine Schaltung, die eine modulare QFT-Multiplikation an zwei Eingangsregistern mit jeweils 2 Qubits und einem Ausgangsregister mit 2 Qubits durchführt, sieht wie folgt aus:
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 ├
└──────┘ └───────┘Das MultiplierGate Objekt stellt eine Multiplikation dar, genau wie diese Schaltungsklasse, ermöglicht es dem Compiler jedoch, je nach Kontext die optimale Zerlegung auszuwählen. Konkrete Implementierungen können über die Option festgelegt HLSConfig werden, z. B. kann diese Schaltung über die Option ausgewählt Multiplier=["qft_r17"] werden.
Quellenangaben:
[1] Ruiz-Perez et al, Quantenarithmetik mit der Quanten-Fourier-Transformation, 2017. arXiv:1411.5949
Parameter
- num_state_qubits (int) – Die Anzahl der Qubits in einem der beiden Eingangsregister für den Zustand oder . Die beiden Eingangsregister müssen die gleiche Anzahl von Qubits haben.
- num_result_qubits (int | None) – Die Anzahl der Ergebnis-Qubits, auf die die Ausgabe beschränkt werden soll. Wenn die Anzahl der Ergebnis-Qubits ist, wird die Multiplikation modulo durchgeführt, um die Ausgabe auf die angegebene Anzahl von Qubits zu begrenzen. Der Standardwert ist
2 * num_state_qubits, um jedes mögliche Ergebnis der Multiplikation der beiden Eingänge darzustellen. - name (str) – Der Name des Schaltkreisobjekts.
Attribute
name
Typ: str
Ein von Menschen lesbarer Name für den Stromkreis.
Beispiel
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)my_circuit