Skip to main content
IBM Quantum Platform

tranchage

qiskit_addon_utils.slicing

Méthodes utilitaires pour le découpage de circuits.

Pour plus d'informations, consultez le guide pratique qui traite de ce sous-module.

combine_slices

combine_slices(slices, include_barriers=False)

GitHub

Combiner des tranches de N-qubits d'un circuit en un seul circuit.

Paramètres

  • slices (Sequence[QuantumCircuit]) – Les tranches du circuit N-qubit.
  • include_barriers (bool) – Si True, placer des barrières entre chaque tranche.

Retours

A QuantumCircuit avec les tranches annexées dans l'ordre séquentiel.

Augmentations

ValueError - Deux tranches d'entrée ont été définies sur des nombres différents de qubits.

Type de retour

QuantumCircuit | Aucun

slice_by_barriers

slice_by_barriers(circuit)

GitHub

Diviser un site QuantumCircuit en tranches autour des barrières à circuit complet.

Les barrières qui n'agissent pas sur tous les qubits du circuit seront traitées comme des opérations normales et incluses dans les tranches. Les barrières qui agissent sur tous les qubits seront interprétées comme des emplacements de tranches et ne seront pas incluses dans les tranches de sortie.

Paramètres

circuit (QuantumCircuit) – Le circuit à diviser.

Retours

Une séquence d'objets QuantumCircuit d'objets, un pour chaque tranche.

Type de retour

liste [ QuantumCircuit ]

slice_by_coloring

slice_by_coloring(circuit, coloring)

GitHub

Découpez un site QuantumCircuit en tranches en utilisant la coloration des bords prévue à cet effet.

Les portes à deux qubits agissant sur des connexions de qubits (arêtes) de même couleur seront regroupées de manière « gloutonne » en tranches à l'aide de CollectOpColor. Cette opération sera effectuée par ordre croissant de valeur de couleur (les valeurs entières auxquelles chaque arête est associée).

Avertissement

Notez que cela ne signifie pas que les tranches de couleur de faible valeur sont garanties d'être les plus à gauche de votre circuit. Voici un exemple pour illustrer ce point.

>>> 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 ├─░──────
     └───┘ ░

Les portes à un seul qubit seront regroupées dans une seule tranche à l'aide de CollectOpSize.

Paramètres

  • circuit (QuantumCircuit) – Le circuit à diviser.
  • coloring (dict[tuple[int, int], int]) – Un dictionnaire associant les arêtes (paires d'entiers) aux valeurs de couleur.

Retours

Une séquence d'objets QuantumCircuit d'objets, un pour chaque tranche.

Augmentations

  • ValueError - La coloration du bord d'entrée n'est pas valide.
  • ValueError - Impossible d'attribuer une couleur à l'instruction de circuit.

Type de retour

liste [ QuantumCircuit ]

slice_by_depth

slice_by_depth(circuit, max_slice_depth)

GitHub

Diviser un site QuantumCircuit en tranches en fonction de la profondeur.

Cette fonction transforme le circuit d'entrée en un circuit de sortie DAGCircuit et met en lots la séquence de couches depth-1 en sortie de layers() en tranches dont la profondeur ne dépasse pas max_slice_depth. Pour ce faire, les couches sont composées en tranches jusqu'à ce que la profondeur maximale de la tranche soit atteinte, puis une nouvelle tranche est créée avec la couche suivante. La tranche finale peut être composée de moins de max_slice_depth couches.

Paramètres

  • circuit (QuantumCircuit) – Le circuit à diviser.
  • max_slice_depth (int) – La profondeur maximale d'une tranche donnée.

Retours

Une séquence d'objets QuantumCircuit d'objets, un pour chaque tranche.

Type de retour

liste [ QuantumCircuit ]

slice_by_gate_types

slice_by_gate_types(circuit)

GitHub

Découper un site QuantumCircuit en depth-1 tranches d'opérations de même type.

Avertissement

Remarque : les tranches adjacentes ne partageant aucun qubit peuvent être ordonnées de manière arbitraire.

Paramètres

circuit (QuantumCircuit) – Le circuit à diviser.

Retours

Une séquence d'objets QuantumCircuit d'objets, un pour chaque tranche.

Type de retour

liste [ QuantumCircuit ]

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.