Skip to main content
IBM Quantum Platform

qiskit.circuit.library.excitation_preserving

qiskit.circuit.library.excitation_preserving(num_qubits, mode='iswap', entanglement='full', reps=3, skip_unentangled_qubits=False, skip_final_rotation_layer=False, parameter_prefix='θ', insert_barriers=False, name='ExcitationPreserving')

GitHub

Der heuristische anregungserhaltende Wellenfunktionsansatz.

Die Schaltung excitation_preserving bewahrt das Verhältnis der Zustände ∣00⟩|00\rangle, ∣01⟩+∣10⟩|01\rangle + |10\rangle und ∣11⟩|11\rangle. Zu diesem Zweck verwendet diese Schaltung Zwei-Qubit-Wechselwirkungen der Form

(10000cos⁡(θ/2)−isin⁡(θ/2)00−isin⁡(θ/2)cos⁡(θ/2)0000e−iϕ)\providecommand{\rotationangle}{\theta/2} \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & \cos\left(\rotationangle\right) & -i\sin\left(\rotationangle\right) & 0 \\ 0 & -i\sin\left(\rotationangle\right) & \cos\left(\rotationangle\right) & 0 \\ 0 & 0 & 0 & e^{-i\phi} \end{pmatrix}

für den Modus "fsim" oder mit e−iϕ=1e^{-i\phi} = 1 für den Modus "iswap".

Man beachte, dass auch andere Wellenfunktionen, wie z. B. UCC-Ansätze, anregungserhaltend sind. Diese können jedoch schnell komplex werden, während diese heuristisch motivierte Schaltung einem einfacheren Muster folgt.

Diese Testwellenfunktion besteht aus Schichten von Rotationen nach dem Prinzip „ ZZ “ mit 2-Qubit-Verschränkungen. Die Verschränkung wird mithilfe von Rotationen vom Typ „ XX+YYXX+YY “ und optional einem Phasen-Gatter für den Modus erzeugt "fsim".

Beispiele:

Bei linearer Verschränkung ist diese Schaltung gegeben durch:

from qiskit.circuit.library import excitation_preserving

ansatz = excitation_preserving(3, reps=1, insert_barriers=True, entanglement="linear")
ansatz.draw("mpl")
Schaltplan, der durch den vorherigen Code ausgegeben wurde.

Die Verschränkungsstruktur kann explizit mit dem Argument entanglement angegeben werden. Der Modus "fsim" enthält eine zusätzliche parametrisierte CPhaseGate in jedem Block:

ansatz = excitation_preserving(3, reps=1, mode="fsim", entanglement=[[0, 2]])
ansatz.draw("mpl")
Schaltplan, der durch den vorherigen Code ausgegeben wurde.Schaltplan, der durch den vorherigen Code ausgegeben wurde.

Parameter

  • num_qubits (int) – Die Anzahl der Qubits.
  • mode (str) – Wählen Sie den Entangler-Modus, entweder "iswap" oder "fsim".
  • reps (int) – Gibt an, wie oft die Struktur einer Rotationsschicht gefolgt von einer Verschränkungsschicht wiederholt wird.
  • entanglement (str |Iterable[Iterable[int]] | Iterable[str |Iterable[Iterable[int]]] | Callable[[int], str |Iterable[Iterable[int]] | Iterable[str |Iterable[Iterable[int]]]]) – Die Indizes, die angeben, auf welche Qubits die Eingabeblöcke wirken. Siehe n_local() für detaillierte Informationen.
  • skip_final_rotation_layer (bool) – Ob dem Stromkreis eine abschließende Rotationsschicht hinzugefügt wird.
  • skip_unentangled_qubits (bool) – Wenn True, wirken die Rotationsgatter nur auf verschränkte Qubits. Wenn False, wirken die Rotationsgatter auf alle Qubits.
  • parameter_prefix (str) – Der Name der freien Parameter.
  • insert_barriers (bool) – Bei True werden zwischen den einzelnen Ebenen Barrieren eingefügt. Wenn False, werden keine Barrieren eingefügt.
  • name (str) – Der Name des Stromkreises.

Rückgabe

Eine erregungserhaltende Schaltung.

Rückgabetyp

QuantumCircuit

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.