Diseño
class qiskit.transpiler.Layout(input_dict=None)
Bases: object
Dictado bidireccional para representar un Layout.
construir un Layout a partir de un diccionario biyectivo, asignando qubits virtuales a qubits físicos
Métodos
add
add(virtual_bit, physical_bit=None)
Añade un elemento de mapa entre bit y physical_bit. Si physical_bit no está definido, el bit se asignará a un nuevo bit físico.
Parámetros
add_register
add_register(reg)
Añade al final physical_qubits que mapea cada bit en reg.
Parámetros
reg (Register) – Un registro (qu)bit. Por ejemplo, QuantumRegister(3, 'qr').
combine_into_edge_map
combine_into_edge_map(another_layout)
Combina self y another_layout en un "mapa de bordes".
Por ejemplo:
self another_layout resulting edge map
qr_1 -> 0 0 <- q_2 qr_1 -> q_2
qr_2 -> 2 2 <- q_1 qr_2 -> q_1
qr_3 -> 3 3 <- q_0 qr_3 -> q_0El mapa de bordes se utiliza para componer dags mediante, por ejemplo, compose.
Parámetros
another_layout (Layout) – La otra disposición para combinar.
Devuelve
Un "mapa de bordes".
Tipo de retorno
Eleva
LayoutError - another_layout puede ser mayor que self, pero no menor. Si no, sube.
compose
compose(other, qubits)
Componga esta maqueta con otra maqueta.
Si este trazado representa un mapeo de los P-qubits a las posiciones de los Q-qubits, y el otro trazado representa un mapeo de los Q-qubits a las posiciones de los R-qubits, entonces el trazado compuesto representa un mapeo de los P-qubits a las posiciones de los R-qubits.
Parámetros
- other (Layout) – Los existentes
Layoutpara componer esteLayoutcon. - qubits (list[Qubit]) – Una lista de
Qubitobjetos sobre los queotherse define, utilizada para establecer la correspondencia entre las posiciones de losotherqubits y los qubits reales.
Devuelve
Un nuevo objeto de diseño que representa este diseño compuesto con el diseño de other .
Tipo de retorno
copy
from_dict
from_dict(input_dict)
Rellena un Layout a partir de un diccionario.
El diccionario debe ser una correspondencia biyectiva entre qubits virtuales (tupla) y qubits físicos (int).
Parámetros
input_dict (dict) –
e. g.:
{(QuantumRegister(3, 'qr'), 0): 0,
(QuantumRegister(3, 'qr'), 1): 1,
(QuantumRegister(3, 'qr'), 2): 2}
Can be written more concisely as follows:
* virtual to physical::
{qr[0]: 0,
qr[1]: 1,
qr[2]: 2}
* physical to virtual::
{0: qr[0],
1: qr[1],
2: qr[2]}from_intlist
static from_intlist(int_list, *qregs)
Convierte una lista de enteros en una disposición que asigna qubits virtuales (índice de la lista) a qubits físicos (los valores de la lista).
Parámetros
- int_list (list) – Una lista de números enteros.
- *qregs ( QuantumRegisters ) - Los registros cuánticos a los que aplicar la disposición.
Devuelve
El objeto Layout correspondiente.
Tipo de retorno
Eleva
LayoutError - Diseño de entrada no válido.
from_qubit_list
static from_qubit_list(qubit_list, *qregs)
Rellena un Layout a partir de una lista que contiene qubits virtuales, Qubit o Ninguno.
Parámetros
- qubit_list (list) – e. g.: [ [qr0], Ninguno, [qr2], [qr3] ]
- *qregs ( QuantumRegisters ) - Los registros cuánticos a los que aplicar la disposición.
Devuelve
el objeto Layout correspondiente
Tipo de retorno
Eleva
LayoutError - Si los elementos no son Qubit o None
generate_trivial_layout
static generate_trivial_layout(*regs)
Crea una disposición trivial ("uno a uno") con los registros y qubits en regs.
Parámetros
*regs* (Registros, Qubits* ) - registros y qubits a incluir en el diseño.
Devuelve
Un diseño con todos los regs en el orden dado.
Tipo de retorno
get_physical_bits
get_physical_bits()
Devuelve el diccionario donde las claves son (qu)bits físicos y los valores son (qu)bits virtuales.
get_registers
get_registers()
Devuelve los registros en el diseño [QuantumRegister(2, ‘qr0’ ), QuantumRegister(3, ‘qr1’ )] : devuelve: Un conjunto de registros en el diseño : rtype: Conjunto
get_virtual_bits
get_virtual_bits()
Devuelve el diccionario donde las claves son (qu)bits virtuales y los valores son (qu)bits físicos.
inverse
inverse(source_qubits, target_qubits)
Encuentra la inversa de este diseño.
Esto es posible cuando el trazado es un mapeo biyectivo, sin embargo los qubits de entrada y de salida pueden ser diferentes (en particular, este trazado puede ser el mapeo de los qubits virtuales extendidos-con-ancillas a qubits físicos). Así, si esta disposición representa un mapeo de los P-qubits a las posiciones de los Q-qubits, la disposición inversa representa un mapeo de los Q-qubits a las posiciones de los P-qubits.
Parámetros
- source_qubits (list[Qubit]) – Una lista de
Qubitobjetos que representan el dominio del diseño. - target_qubits (list[Qubit]) – Una lista de
Qubitobjetos que representan la imagen del diseño.
Devuelve
Un nuevo objeto de diseño que representa la inversa de este diseño.
order_based_on_type
static order_based_on_type(value1, value2)
decide cuál es físico/virtual en función del tipo. Devuelve (virtual, físico)
reorder_bits
reorder_bits(bits)
Dada una lista ordenada de bits, reordénalos según esta disposición.
La lista de bits debe coincidir exactamente con los bits virtuales de este diseño.
Parámetros
bits (list[Bit]) – los bits a reordenar.
Devuelve
bits ordenados.
Tipo de retorno
Lista
swap
swap(left, right)
Cambia el mapa de izquierda a derecha.
Parámetros
- left (tuple orint) – Artículo para intercambiar con la derecha.
- right (tuple orint) – Artículo para intercambiar con la izquierda.
Eleva
LayoutError - Si la izquierda y la derecha no tienen el mismo tipo.
to_permutation
to_permutation(qubits)
Crea una permutación correspondiente a este diseño.
Esto es posible cuando la disposición es un mapeo biyectivo con los mismos qubits de origen y destino (por ejemplo, una "disposición_final" corresponde a una permutación de los qubits del circuito físico). Si esta disposición es un mapeo de qubits a sus nuevas posiciones, la permutación resultante describe qué qubits ocupan las posiciones 0, 1, 2, etc. después de aplicar la permutación.
Por ejemplo, supongamos que la lista de qubits es [qr_0, qr_1, qr_2], y la disposición asigna qr_0 a 2, qr_1 a 0, y qr_2 a 1. En términos de posiciones en qubits, esto asigna 0 a 2, 1 a 0 y 2 a 1, siendo la permutación correspondiente [1, 2, 0].
Parámetros