Transformaciones
qiskit_addon_cutting.utils.transforms
Funciones para manipular circuitos cuánticos.
separate_circuit
separate_circuit(circuit, partition_labels=None)
Separe el circuito en sus componentes desconectados.
Si se proporciona partition_labels , el circuito se separará según esas etiquetas. Una etiqueta de partición de None recibe un tratamiento especial: debe aplicarse a un qubit no utilizado (inactivo), y ese qubit se eliminará al separar el circuito.
Si partition_labels es None, entonces el circuito se separará completamente en sus componentes desconectados, cada uno de los cuales se etiquetará con números enteros consecutivos empezando por 0. En los circuitos resultantes se eliminarán todos los hilos inactivos.
>>> 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)]Parámetros
- circuit (QuantumCircuit) – El circuito a separar en subcircuitos desconectados
- partition_labels (Sequence[Hashable] | None) – Una secuencia de longitud
num_qubits. Los qubits con la misma etiqueta acabarán en el mismo subcircuito.
Tipo de retorno
SeparatedCircuits
Devuelve
A SeparatedCircuits tupla con nombre que contiene subcircuits y qubit_map.
Eleva
- ValueError - El número de etiquetas de partición no es igual al número de qubits del circuito de entrada.
- ValueError - La operación abarca más de una partición.
SeparatedCircuits
class SeparatedCircuits(subcircuits, qubit_map)
Bases: NamedTuple
Tupla con nombre para el resultado de separate_circuit().
subcircuits es un dictado de circuitos, codificados por cada etiqueta de partición. qubit_map es una lista con una longitud igual al número de qubits del circuito original. Cada elemento de esa lista es una 2-tupla que incluye la etiqueta de partición de ese qubit, junto con el índice de ese qubit en el subcircuito correspondiente. Si el qubit original no se utiliza y se ha eliminado de los circuitos separados, entonces esa tupla será igual a (None, None).
Crear nueva instancia de SeparatedCircuits(subcircuits, qubit_map)
Parámetros
- subcircuits (dict[Hashable, QuantumCircuit])
- qubit_map (list[tuple[Hashable, int] | tuple[None, None]])
count
count(value, /)
Devuelve el número de apariciones del valor.
index
index(value, start=0, stop=9223372036854775807, /)
Devuelve el primer índice del valor.
Lanza ValueError si el valor no está presente.
qubit_map
Tipo: list[tuple[Hashable, int] | tuple[None, None]]
Alias para el campo número 1
subcircuits
Tipo: dict[Hashable, QuantumCircuit]
Alias para el campo número 0