Transformationen
qiskit_addon_cutting.utils.transforms
Funktionen zur Manipulation von Quantenschaltungen.
separate_circuit
separate_circuit(circuit, partition_labels=None)
Trennen Sie den Stromkreis in seine getrennten Komponenten.
Wenn partition_labels zur Verfügung gestellt wird, wird der Stromkreis nach diesen Bezeichnungen getrennt. Ein Partitionslabel von None wird besonders behandelt: Es muss auf ein unbenutztes (inaktives) Qubit angewendet werden, und dieses Qubit wird bei der Trennung der Schaltung entfernt.
Wenn partition_labels None ist, wird der Stromkreis vollständig in seine getrennten Komponenten zerlegt, die jeweils mit fortlaufenden ganzen Zahlen, beginnend mit 0, beschriftet werden. In den daraus resultierenden Schaltkreisen wird jede Leerlaufleitung eliminiert.
>>> 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)]Parameter
- circuit (QuantumCircuit) – Der Stromkreis, der in getrennte Teilstromkreise zu unterteilen ist
- partition_labels (Sequence[Hashable] | None) – Eine Sequenz der Länge
num_qubits. Qubits mit demselben Label landen im selben Subcircuit.
Rückgabetyp
SeparatedCircuits
Rückgabe
A SeparatedCircuits benanntes Tupel, das die subcircuits und qubit_map enthält.
Erhöht
- ValueError - Die Anzahl der Partition-Labels entspricht nicht der Anzahl der Qubits in der Eingangsschaltung.
- ValueError - Der Vorgang erstreckt sich über mehr als eine Partition.
SeparatedCircuits
class SeparatedCircuits(subcircuits, qubit_map)
Basen: NamedTuple
Benanntes Tupel für das Ergebnis von separate_circuit().
subcircuits ist ein Diktat von Schaltkreisen, das durch jede Partitionsbezeichnung verschlüsselt ist. qubit_map ist eine Liste, deren Länge der Anzahl der Qubits in der ursprünglichen Schaltung entspricht. Jedes Element dieser Liste ist ein 2-Tupel, das die Partitionsbezeichnung dieses Qubits zusammen mit dem Index dieses Qubits im entsprechenden Teilschaltkreis enthält. Wenn das ursprüngliche Qubit unbenutzt ist und aus den getrennten Schaltkreisen entfernt wurde, dann ist dieses Tupel gleich (None, None).
Erstellen einer neuen Instanz von SeparatedCircuits(subcircuits, qubit_map)
Parameter
- subcircuits (dict[Hashable, QuantumCircuit])
- qubit_map (list[tuple[Hashable, int] | tuple[None, None]])
count
count(value, /)
Gibt die Anzahl der Vorkommen des Wertes zurück.
index
index(value, start=0, stop=9223372036854775807, /)
Gibt den ersten Index des Wertes zurück.
Gibt ValueError aus, wenn der Wert nicht vorhanden ist.
qubit_map
Typ: list[tuple[Hashable, int] | tuple[None, None]]
Alias für Feldnummer 1
subcircuits
Typ: dict[Hashable, QuantumCircuit]
Alias für Feldnummer 0