Skip to main content
IBM Quantum Platform

attività di slice

qiskit_addon_utils.slicing

Metodi di utilità per il taglio dei circuiti.

Per ulteriori informazioni, consultate la guida che tratta questo sottomodulo.

combine_slices

combine_slices(slices, include_barriers=False)

GitHub

Combinare le fette di N-qubit di un circuito in un unico circuito.

Parametri

  • slices (Sequence[QuantumCircuit]) – Le fette di circuito a N-qubit.
  • include_barriers (bool) – Se True, posizionare delle barriere tra ogni fetta.

Risultati

A QuantumCircuit con le fette aggiunte in ordine sequenziale.

Aumenti

ValueError - Due fette di ingresso sono state definite su un numero diverso di qubit.

Tipo di restituzione

QuantumCircuit | Nessuno

slice_by_barriers

slice_by_barriers(circuit)

GitHub

Dividere un QuantumCircuit in fette intorno a barriere a circuito completo.

Le barriere che non agiscono su tutti i qubit del circuito saranno trattate come operazioni normali e incluse nelle fette. Le barriere che agiscono su tutti i qubit saranno interpretate come posizioni della fetta e non saranno incluse nelle fette di uscita.

Parametri

circuit (QuantumCircuit) – Il circuito da dividere.

Risultati

Una sequenza di QuantumCircuit oggetti, uno per ogni fetta.

Tipo di restituzione

elenco [ QuantumCircuit ]

slice_by_coloring

slice_by_coloring(circuit, coloring)

GitHub

Dividere un QuantumCircuit in fette utilizzando la colorazione dei bordi fornita.

I gate a due qubit che agiscono su connessioni tra qubit (spigoli) dello stesso colore saranno raggruppati in modo avido in sezioni utilizzando CollectOpColor. L'operazione verrà eseguita in ordine crescente di valore cromatico (i valori interi a cui è associato ciascun bordo).

Avvertenza

Si noti che questo non significa che le fette di colore a basso valore siano garantite come più a sinistra nel circuito. Di seguito è riportato un esempio per sottolineare questo aspetto.

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

I gate a singolo qubit saranno raggruppati in un'unica sezione utilizzando CollectOpSize.

Parametri

  • circuit (QuantumCircuit) – Il circuito da dividere.
  • coloring (dict[tuple[int, int], int]) – Un dizionario che mappa i bordi (coppie di numeri interi) con i valori dei colori.

Risultati

Una sequenza di QuantumCircuit oggetti, uno per ogni fetta.

Aumenti

  • ValueError - La colorazione dei bordi in ingresso non è valida.
  • ValueError - Impossibile assegnare un colore all'istruzione del circuito.

Tipo di restituzione

elenco [ QuantumCircuit ]

slice_by_depth

slice_by_depth(circuit, max_slice_depth)

GitHub

Dividere un QuantumCircuit in fette in base alla profondità.

Questa funzione trasforma il circuito di ingresso in un circuito DAGCircuit e raggruppa la sequenza di depth-1 strati in uscita da layers() in fette di profondità non superiore a max_slice_depth. Ciò si ottiene componendo i livelli in fette fino a raggiungere la profondità massima della fetta e quindi iniziando una nuova fetta con il livello successivo. La fetta finale può essere composta da meno di max_slice_depth strati.

Parametri

  • circuit (QuantumCircuit) – Il circuito da dividere.
  • max_slice_depth (int) – La profondità massima di una determinata fetta.

Risultati

Una sequenza di QuantumCircuit oggetti, uno per ogni fetta.

Tipo di restituzione

elenco [ QuantumCircuit ]

slice_by_gate_types

slice_by_gate_types(circuit)

GitHub

Divide un QuantumCircuit in depth-1 fette di operazioni dello stesso tipo.

Avvertenza

Nota: le fette adiacenti che non hanno qubit in comune possono essere ordinate arbitrariamente.

Parametri

circuit (QuantumCircuit) – Il circuito da dividere.

Risultati

Una sequenza di QuantumCircuit oggetti, uno per ogni fetta.

Tipo di restituzione

elenco [ QuantumCircuit ]

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.