Skip to main content
IBM Quantum Platform

HRSCumulativeMultiplier

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

GitHub

Basen: Multiplier

Eine Multiplikationsschaltung zur Speicherung des Produkts zweier Eingangsregister an einer anderen Stelle.

Die Schaltung verwendet den Ansatz aus [1.] Ein Beispiel für eine Multiplikatorschaltung, die eine nicht-modulare Multiplikation mit zwei 3-Qubit-Registern mit dem Standard-Addierer durchführt, sieht wie folgt aus (wobei Adder die CDKMRippleCarryAdder bezeichnet):

  a_0: ────■─────────────────────────
           │
  a_1: ────┼─────────■───────────────
           │         │
  a_2: ────┼─────────┼─────────■─────
       ┌───┴────┐┌───┴────┐┌───┴────┐
  b_0: ┤0       ├┤0       ├┤0       ├
       │        ││        ││        │
  b_1: ┤1       ├┤1       ├┤1       ├
       │        ││        ││        │
  b_2: ┤2       ├┤2       ├┤2       ├
       │        ││        ││        │
out_0: ┤3       ├┤        ├┤        ├
       │        ││        ││        │
out_1: ┤4       ├┤3       ├┤        ├
       │  Adder ││  Adder ││  Adder │
out_2: ┤5       ├┤4       ├┤3       ├
       │        ││        ││        │
out_3: ┤6       ├┤5       ├┤4       ├
       │        ││        ││        │
out_4: ┤        ├┤6       ├┤5       ├
       │        ││        ││        │
out_5: ┤        ├┤        ├┤6       ├
       │        ││        ││        │
aux_0: ┤7       ├┤7       ├┤7       ├
       └────────┘└────────┘└────────┘

Die Multiplikation in dieser Schaltung wird in einem klassischen Ansatz durch eine Reihe von verschobenen Additionen unter Verwendung eines der Eingangsregister durchgeführt, während die Qubits aus dem anderen Eingangsregister als Steuer-Qubits für die Addierer dienen.

Siehe auch

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=["cumulative_h18"] werden.

Quellenangaben:

[1] Häner et al., Optimierung von Quantenschaltungen für die Arithmetik, 2018. arXiv:1805.12445

Parameter

  • num_state_qubits (int) – Die Anzahl der Qubits in einem der beiden Eingangsregister für den Zustand ∣a⟩|a\rangle oder ∣b⟩|b\rangle. 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 nn ist, wird die Multiplikation modulo 2n2^n 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.
  • adder (QuantumCircuit | None) – Halbaddierer-Schaltung zur Durchführung von Multiplikationen. Wird kein Addierer angegeben, wird standardmäßig der „ CDKMRippleCarryAdder “ verwendet.
  • name (str) – Der Name des Schaltkreisobjekts.

Erhöht

NotImplementedError - Wenn num_result_qubits nicht Standard ist und ein benutzerdefinierter Addierer bereitgestellt wird.


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
War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.