Transformations
qiskit_addon_cutting.utils.transforms
Fonctions de manipulation des circuits quantiques.
separate_circuit
separate_circuit(circuit, partition_labels=None)
Séparer le circuit en ses éléments déconnectés.
Si partition_labels est fourni, le circuit sera séparé en fonction de ces étiquettes. Une étiquette de partition de None fait l'objet d'un traitement particulier : elle doit être appliquée à un qubit inutilisé (inactif), et ce qubit sera supprimé lors de la séparation du circuit.
Si partition_labels est None, le circuit sera entièrement séparé en ses composants déconnectés, chacun d'eux étant étiqueté avec des nombres entiers consécutifs commençant par 0. Chaque fil de repos sera éliminé dans les circuits résultants.
>>> qc = QuantumCircuit(4)
>>> _ = qc.x(0)
>>> _ = qc.cx(1, 2)
>>> separate_circuit(qc, "ABBA").subcircuits.keys()
dict_keys(['A', 'B'])
>>> separate_circuit(qc, "ABBA").qubit_map
[('A', 0), ('B', 0), ('B', 1), ('A', 1)]
>>> separate_circuit(qc, ["A", "B", "B", None]).qubit_map
[('A', 0), ('B', 0), ('B', 1), (None, None)]
>>> separate_circuit(qc).subcircuits.keys()
dict_keys([0, 1])
>>> separate_circuit(qc).qubit_map
[(0, 0), (1, 0), (1, 1), (None, None)]
>>> separate_circuit(qc, "BAAC").subcircuits.keys()
dict_keys(['B', 'A', 'C'])
>>> separate_circuit(qc, "BAAC").qubit_map
[('B', 0), ('A', 0), ('A', 1), ('C', 0)]Paramètres
- circuit (QuantumCircuit) – Le circuit à séparer en sous-circuits déconnectés
- partition_labels (Sequence[Hashable] | None) – Une séquence de longueur
num_qubits. Les Qubits ayant la même étiquette se retrouveront dans le même sous-circuit.
Type de retour
SeparatedCircuits
Retours
A SeparatedCircuits tuple nommé contenant les adresses subcircuits et qubit_map.
Augmentations
- ValueError - Le nombre d'étiquettes de partition n'est pas égal au nombre de qubits dans le circuit d'entrée.
- ValueError - L'opération s'étend sur plus d'une partition.
SeparatedCircuits
class SeparatedCircuits(subcircuits, qubit_map)
Bases : NamedTuple
Tuple nommé pour le résultat de separate_circuit().
subcircuits est une dictée de circuits, dont la clé est l'étiquette de chaque partition. qubit_map est une liste dont la longueur est égale au nombre de qubits du circuit original. Chaque élément de cette liste est un 2-tuple qui comprend l'étiquette de partition de ce qubit, ainsi que l'index de ce qubit dans le sous-circuit correspondant. Si le qubit d'origine est inutilisé et a été retiré des circuits séparés, ce tuple sera égal à (None, None).
Créer une nouvelle instance de SeparatedCircuits(subcircuits, qubit_map)
Paramètres
- subcircuits (dict[Hashable, QuantumCircuit])
- qubit_map (list[tuple[Hashable, int] | tuple[None, None]])
count
count(value, /)
Renvoie le nombre d'occurrences de la valeur.
index
index(value, start=0, stop=9223372036854775807, /)
Renvoie le premier indice de la valeur.
Lance ValueError si la valeur n'est pas présente.
qubit_map
Type: list[tuple[Hashable, int] | tuple[None, None]]
Alias pour le champ numéro 1
subcircuits
Type: dict[Hashable, QuantumCircuit]
Alias pour le champ numéro 0