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')
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 Rotationen und 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")
ansatz = real_amplitudes(3, entanglement="full", reps=2) # it is the same unitary as above
ansatz.draw("mpl")
ansatz = real_amplitudes(3, entanglement="linear", reps=2, insert_barriers=True)
ansatz.draw("mpl")
ansatz = real_amplitudes(4, reps=2, entanglement=[[0,3], [0,2]], skip_unentangled_qubits=True)
ansatz.draw("mpl")
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. WennFalse, 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