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)
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)
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)
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).
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)
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)
Divide un QuantumCircuit in depth-1 fette di operazioni dello stesso tipo.
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 ]