Formato
class qiskit.transpiler.Layout(input_dict=None)
Bases: object
Dit de duas vias para representar um layout.
construir um Layout a partir de um dicionário bijetivo, mapeando qubits virtuais para qubits físicos
Métodos
add
add(virtual_bit, physical_bit=None)
Adiciona um elemento de mapa entre bit e physical_bit. Se physical_bit não for definido, o bit será mapeado para um novo bit físico.
Parâmetros
add_register
add_register(reg)
Adiciona no final physical_qubits que mapeiam cada bit no registro.
Parâmetros
reg (Register) – Um registro de (qu)bits. Por exemplo, QuantumRegister(3, 'qr').
combine_into_edge_map
combine_into_edge_map(another_layout)
Combina o auto e outro_layout em um "mapa de bordas".
Por exemplo:
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_0O mapa de bordas é usado para compor dags por meio de, por exemplo, compose.
Parâmetros
another_layout (Layout) – O outro layout para combinar.
Retorna
Um "mapa de bordas".
Tipo de retorno
Aumentos
LayoutError - another_layout pode ser maior que o próprio, mas não menor. Caso contrário, aumentos.
compose
compose(other, qubits)
Componha esse layout com outro layout.
Se esse layout representar um mapeamento dos qubits P para as posições dos qubits Q e o outro layout representar um mapeamento dos qubits Q para as posições dos qubits R, então o layout composto representará um mapeamento dos qubits P para as posições dos qubits R.
Parâmetros
- other (Layout) – O existente
Layoutpara compor esseLayoutcom. - qubits (list[Qubit]) – Uma lista de
Qubitobjetos sobre os quaisotherestá definido, usada para estabelecer a correspondência entre as posições dosotherqubits e os próprios qubits.
Retorna
Um novo objeto de layout que representa esse layout composto com o layout other .
Tipo de retorno
copy
from_dict
from_dict(input_dict)
Preenche um layout a partir de um dicionário.
O dicionário deve ser um mapeamento bijetivo entre qubits virtuais (tupla) e qubits físicos (int).
Parâmetros
input_dict (dict) –
por exemplo,
{(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)
Converte uma lista de números inteiros em um layout que mapeia qubits virtuais (índice da lista) para qubits físicos (os valores da lista).
Parâmetros
- int_list (list) – Uma lista de números inteiros.
- *qregs ( QuantumRegisters ) - Os registros quânticos aos quais aplicar o layout.
Retorna
O objeto Layout correspondente.
Tipo de retorno
Aumentos
LayoutError - Layout de entrada inválido.
from_qubit_list
static from_qubit_list(qubit_list, *qregs)
Preenche um Layout a partir de uma lista que contém qubits virtuais, Qubit ou None.
Parâmetros
- qubit_list (list) – e. g.: [ [qr0], None, [qr2], [qr3] ]
- *qregs ( QuantumRegisters ) - Os registros quânticos aos quais aplicar o layout.
Retorna
o objeto de Layout correspondente
Tipo de retorno
Aumentos
LayoutError - Se os elementos não forem Qubit ou None
generate_trivial_layout
static generate_trivial_layout(*regs)
Cria um layout trivial ("um para um") com os registros e qubits em regs.
Parâmetros
*regs* (Registers, Qubits* ) - registros e qubits a serem incluídos no layout.
Retorna
Um layout com todas as regras na ordem determinada.
Tipo de retorno
get_physical_bits
get_physical_bits()
Retorna o dicionário em que as chaves são (qu)bits físicos e os valores são (qu)bits virtuais.
get_registers
get_registers()
Retorna os registradores no layout [QuantumRegister(2, ‘qr0’ ), QuantumRegister(3, ‘qr1’ )] :returns: Um conjunto de registradores no layout :rtype: Set
get_virtual_bits
get_virtual_bits()
Retorna o dicionário em que as chaves são (qu)bits virtuais e os valores são (qu)bits físicos.
inverse
inverse(source_qubits, target_qubits)
Encontra o inverso desse layout.
Isso é possível quando o layout é um mapeamento bijetivo, mas os qubits de entrada e saída podem ser diferentes (em particular, esse layout pode ser o mapeamento dos qubits virtuais estendidos com ancilas para qubits físicos). Portanto, se esse layout representa um mapeamento dos qubits P para as posições dos qubits Q, o layout inverso representa um mapeamento dos qubits Q para as posições dos qubits P.
Parâmetros
- source_qubits (list[Qubit]) – Uma lista de
Qubitobjetos que representam o domínio do layout. - target_qubits (list[Qubit]) – Uma lista de
Qubitobjetos que representam a imagem do layout.
Retorna
Um novo objeto de layout que representa o inverso desse layout.
order_based_on_type
static order_based_on_type(value1, value2)
decide qual deles é físico/virtual com base no tipo. Retorna (virtual, físico)
reorder_bits
reorder_bits(bits)
Dada uma lista ordenada de bits, reordene-os de acordo com esse layout.
A lista de bits deve corresponder exatamente aos bits virtuais desse layout.
Parâmetros
bits (list[Bit]) – os bits a serem reordenados.
Retorna
bits ordenados.
Tipo de retorno
Lista
swap
swap(left, right)
Troca o mapa entre a esquerda e a direita.
Parâmetros
- left (tuple orint) – Item para trocar com a direita.
- right (tuple orint) – Item para trocar com a esquerda.
Aumentos
LayoutError - Se a esquerda e a direita não tiverem o mesmo tipo.
to_permutation
to_permutation(qubits)
Cria uma permutação correspondente a esse layout.
Isso é possível quando o layout é um mapeamento bijetivo com os mesmos qubits de origem e destino (por exemplo, um "layout final" corresponde a uma permutação dos qubits do circuito físico). Se esse layout for um mapeamento de qubits para suas novas posições, a permutação resultante descreve quais qubits ocupam as posições 0, 1, 2 etc. após a aplicação da permutação.
Por exemplo, suponha que a lista de qubits seja [qr_0, qr_1, qr_2] e que o layout mapeie qr_0 para 2, qr_1 para 0 e qr_2 para 1. Em termos de posições em qubits, isso mapeia 0 para 2, 1 para 0 e 2 para 1, sendo que a permutação correspondente é [1, 2, 0].
Parâmetros