Skip to main content
IBM Quantum Platform

qiskit.circuit.library.real_amplitudes

qiskit.circuit.library.real_amplitudes(num_qubits, entanglement='reverse_linear', reps=3, skip_unentangled_qubits=False, skip_final_rotation_layer=False, parameter_prefix='θ', insert_barriers=False, name='RealAmplitudes')

GitHub

Konstruieren Sie eine 2-lokale Schaltung mit reellen Amplituden.

Diese Schaltung ist eine heuristische Versuchswellenfunktion, die z. B. als Ansatz in der Chemie, der Optimierung oder bei Anwendungen des maschinellen Lernens verwendet wird. Die Schaltung besteht aus abwechselnden Schichten von YY Rotationen und CXCX Verflechtungen. Das Verschränkungsmuster kann benutzerdefiniert sein oder aus einem vordefinierten Satz ausgewählt werden. Diese Schaltung ist "reale Amplituden", da die vorbereiteten Quantenzustände nur reale Amplituden haben.

Eine real_amplitudes Schaltung mit 2 Wiederholungen auf 3 Qubits mit "reverse_linear" Verschränkung ist zum Beispiel

┌──────────┐ ░            ░ ┌──────────┐ ░            ░ ┌──────────┐
┤ Ry(θ[0]) ├─░────────■───░─┤ Ry(θ[3]) ├─░────────■───░─┤ Ry(θ[6]) ├
├──────────┤ ░      ┌─┴─┐ ░ ├──────────┤ ░      ┌─┴─┐ ░ ├──────────┤
┤ Ry(θ[1]) ├─░───■──┤ X ├─░─┤ Ry(θ[4]) ├─░───■──┤ X ├─░─┤ Ry(θ[7]) ├
├──────────┤ ░ ┌─┴─┐└───┘ ░ ├──────────┤ ░ ┌─┴─┐└───┘ ░ ├──────────┤
┤ Ry(θ[2]) ├─░─┤ X ├──────░─┤ Ry(θ[5]) ├─░─┤ X ├──────░─┤ Ry(θ[8]) ├
└──────────┘ ░ └───┘      ░ └──────────┘ ░ └───┘      ░ └──────────┘

Die Verschränkung kann mit dem Schlüsselwort entanglement als String oder als Liste von Indexpaaren angegeben werden. Siehe die Dokumentation von n_local(). Zu den zusätzlichen Optionen, die eingestellt werden können, gehören die Anzahl der Wiederholungen, das Überspringen von Rotationsgates bei nicht verschränkten Qubits, das Weglassen der letzten Rotationsschicht und das Einfügen von Barrieren zwischen der Rotations- und der Verschränkungsschicht.

Beispiele:

from qiskit.circuit.library import real_amplitudes

ansatz = real_amplitudes(3, reps=2)  # create the circuit on 3 qubits
ansatz.draw("mpl")
Schaltplan, der durch den vorherigen Code ausgegeben wurde.
ansatz = real_amplitudes(3, entanglement="full", reps=2)  # it is the same unitary as above
ansatz.draw("mpl")
Schaltplan, der durch den vorherigen Code ausgegeben wurde.
ansatz = real_amplitudes(3, entanglement="linear", reps=2, insert_barriers=True)
ansatz.draw("mpl")
Schaltplan, der durch den vorherigen Code ausgegeben wurde.
ansatz = real_amplitudes(4, reps=2, entanglement=[[0,3], [0,2]], skip_unentangled_qubits=True)
ansatz.draw("mpl")
Schaltplan, der durch den vorherigen Code ausgegeben wurde.

Parameter

  • num_qubits (int) – Die Anzahl der Qubits der Schaltung RealAmplitudes.
  • 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 Schaltung mit reellen Amplituden.

Rückgabetyp

QuantumCircuit

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