Skip to main content
IBM Quantum Platform

Schnitte

qiskit_addon_utils.slicing

Utility-Methoden für Circuit Slicing.

Weitere Informationen finden Sie in der Anleitung, in der dieses Submodul beschrieben wird.

combine_slices

combine_slices(slices, include_barriers=False)

GitHub

Kombinieren Sie N-Qubit-Scheiben einer Schaltung zu einer einzigen Schaltung.

Parameter

  • slices (Sequence[QuantumCircuit]) – Die N-Qubit-Schaltkreisscheiben.
  • include_barriers (bool) – Wenn True, legen Sie Barrieren zwischen die einzelnen Scheiben.

Rückgabe

A QuantumCircuit wobei die Slices nacheinander angehängt werden.

Erhöht

ValueError - Zwei Input-Slices wurden für eine unterschiedliche Anzahl von Qubits definiert.

Rückgabetyp

QuantumCircuit | Keine

slice_by_barriers

slice_by_barriers(circuit)

GitHub

Teilen Sie eine QuantumCircuit in Scheiben um Vollkreisbarrieren herum.

Barrieren, die nicht auf alle Schaltkreis-Qubits wirken, werden als normale Operationen behandelt und in die Slices einbezogen. Barrieren, die auf alle Qubits wirken, werden als Slice-Positionen interpretiert und nicht in die Ausgabe-Slices aufgenommen.

Parameter

circuit (QuantumCircuit) – Der aufzuteilende Stromkreis.

Rückgabe

Eine Folge von QuantumCircuit objekten, eines für jeden Slice.

Rückgabetyp

liste [ QuantumCircuit ]

slice_by_coloring

slice_by_coloring(circuit, coloring)

GitHub

Teilen Sie eine QuantumCircuit in Scheiben auf, indem Sie die mitgelieferte Kantenfärbung verwenden.

CollectOpColorZwei-Qubit-Gatter, die auf gleichfarbige Qubit-Verbindungen (Kanten) wirken, werden mithilfe von gierig zu Schnitten gruppiert. Dies erfolgt in der Reihenfolge steigender Farbwerte (die ganzzahligen Werte, denen die einzelnen Kanten zugeordnet sind).

Achtung

Beachten Sie, dass dies nicht bedeutet, dass niedrig bewertete Farbscheiben garantiert ganz links in Ihrer Schaltung liegen. Nachfolgend ein Beispiel, um dies zu verdeutlichen.

>>> from qiskit import QuantumCircuit

>>> circuit = QuantumCircuit(5)
>>> _ = circuit.cx(0, 1)
>>> _ = circuit.cx(3, 4)
>>> _ = circuit.cx(2, 3)

>>> circuit.draw()
q_0: ──■───────
     ┌─┴─┐
q_1: ┤ X ├─────
     └───┘
q_2: ───────■──
          ┌─┴─┐
q_3: ──■──┤ X ├
     ┌─┴─┐└───┘
q_4: ┤ X ├─────
     └───┘

>>> coloring = {(0, 1): 0, (2, 3): 0, (3, 4): 1}

>>> from qiskit_addon_utils.slicing import combine_slices, slice_by_coloring

>>> slices = slice_by_coloring(circuit, coloring)

# for illustration purposes, we are recombining the slices with barriers
>>> recombined = combine_slices(slices, include_barriers=True)
>>> recombined.draw()
           ░
q_0: ──────░───■──
           ░ ┌─┴─┐
q_1: ──────░─┤ X ├
           ░ └───┘
q_2: ──────░───■──
           ░ ┌─┴─┐
q_3: ──■───░─┤ X ├
     ┌─┴─┐ ░ └───┘
q_4: ┤ X ├─░──────
     └───┘ ░

Einzel-Qubit-Gatter werden mithilfe von CollectOpSize… in einem einzigen Slice zusammengefasst.

Parameter

  • circuit (QuantumCircuit) – Der aufzuteilende Stromkreis.
  • coloring (dict[tuple[int, int], int]) – Ein Wörterbuch, das Kanten (Paare von Ganzzahlen) auf Farbwerte abbildet.

Rückgabe

Eine Folge von QuantumCircuit objekten, eines für jeden Slice.

Erhöht

  • ValueError - Die eingegebene Kantenfärbung ist ungültig.
  • ValueError - Der Schaltanweisung konnte keine Farbe zugewiesen werden.

Rückgabetyp

liste [ QuantumCircuit ]

slice_by_depth

slice_by_depth(circuit, max_slice_depth)

GitHub

Aufteilung von QuantumCircuit in Slices auf Basis der Tiefe.

Diese Funktion wandelt die Eingabeschaltung in eine DAGCircuit und stapelt die Folge von depth-1 Schichten, die von layers() in Schichten mit einer Tiefe, die max_slice_depth nicht überschreitet. Dies wird dadurch erreicht, dass die Schichten in Slices unterteilt werden, bis die maximale Schichttiefe erreicht ist, und dann eine neue Schicht mit der nächsten Schicht begonnen wird. Die endgültige Scheibe kann aus weniger als max_slice_depth Schichten bestehen.

Parameter

  • circuit (QuantumCircuit) – Der aufzuteilende Stromkreis.
  • max_slice_depth (int) – Die maximale Tiefe eines bestimmten Slice.

Rückgabe

Eine Folge von QuantumCircuit objekten, eines für jeden Slice.

Rückgabetyp

liste [ QuantumCircuit ]

slice_by_gate_types

slice_by_gate_types(circuit)

GitHub

Aufteilung von QuantumCircuit in depth-1 Slices von Operationen desselben Typs.

Achtung

Anmerkung: Benachbarte Slices, die keine gemeinsamen Qubits haben, können beliebig angeordnet werden.

Parameter

circuit (QuantumCircuit) – Der aufzuteilende Stromkreis.

Rückgabe

Eine Folge von QuantumCircuit objekten, eines für jeden Slice.

Rückgabetyp

liste [ QuantumCircuit ]

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