qiskit.circuit.library.efficient_su2
qiskit.circuit.library.efficient_su2(num_qubits, su2_gates=None, entanglement='reverse_linear', reps=3, skip_unentangled_qubits=False, skip_final_rotation_layer=False, parameter_prefix='θ', insert_barriers=False, name='EfficientSU2')
Die hardware-effiziente 2-Lokal-Schaltung.
Der efficient_su2 Schaltkreis besteht aus Schichten von Einzel-Qubit-Operationen, die von und CX-Verschränkungen überspannt werden. Dies ist ein heuristisches Muster, das zur Vorbereitung von Versuchswellenfunktionen für variierende Quantenalgorithmen oder Klassifizierungsschaltungen für maschinelles Lernen verwendet werden kann.
ist die spezielle unitäre Gruppe vom Grad 2, ihre Elemente sind unitäre Matrizen mit der Determinante 1, wie die Pauli-Rotationsgatter.
Bei 3 Qubits und unter Verwendung der Pauli-Rotationen und als Einzelqubit-Gatter lässt sich diese Schaltung wie folgt darstellen:
┌──────────┐┌──────────┐ ░ ░ ░ ┌───────────┐┌───────────┐
┤ RY(θ[0]) ├┤ RZ(θ[3]) ├─░────────■───░─ ... ─░─┤ RY(θ[12]) ├┤ RZ(θ[15]) ├
├──────────┤├──────────┤ ░ ┌─┴─┐ ░ ░ ├───────────┤├───────────┤
┤ RY(θ[1]) ├┤ RZ(θ[4]) ├─░───■──┤ X ├─░─ ... ─░─┤ RY(θ[13]) ├┤ RZ(θ[16]) ├
├──────────┤├──────────┤ ░ ┌─┴─┐└───┘ ░ ░ ├───────────┤├───────────┤
┤ RY(θ[2]) ├┤ RZ(θ[5]) ├─░─┤ X ├──────░─ ... ─░─┤ RY(θ[14]) ├┤ RZ(θ[17]) ├
└──────────┘└──────────┘ ░ └───┘ ░ ░ └───────────┘└───────────┘Beispiele:
Standardmäßig wird die "reverse_linear" -Verschränkung verwendet, die im Falle von CX-Gattern einer all-to-all-Verschränkung entspricht:
from qiskit.circuit.library import efficient_su2
circuit = efficient_su2(3, reps=1)
circuit.draw("mpl")
Um festzulegen, welche SU(2)-Gatter in der Rotationsschicht verwendet werden sollen, können wir das Argument su2_gates setzen. Darüber hinaus können wir die Verschränkungsstruktur verändern. Zum Beispiel:
circuit = efficient_su2(4, su2_gates=["rx", "y"], entanglement="circular", reps=1)
circuit.draw("mpl")
Parameter
- num_qubits (int) – Die Anzahl der Qubits.
- su2_gates (str |Gate |Iterable[str |Gate] | None) – Die Einzelqubit-Gatter zum Anwenden in Einzelqubit-Gatter-Schichten. Wenn nur ein Gate vorhanden ist, wird dasselbe Gate auf jedes Qubit angewendet. Wenn eine Liste von Gatings angegeben wird, werden alle Gatings in der angegebenen Reihenfolge auf jedes Qubit angewendet.
- 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 effiziente SU(2)-Schaltung.
Rückgabetyp