Skip to main content
IBM Quantum Platform

Formato

class qiskit.transpiler.Layout(input_dict=None)

GitHub

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)

GitHub

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

  • virtual_bit (tuple) – Um (qu)bit. Por exemplo, ( QuantumRegister(3, 'qr'), 2).
  • physical_bit (int) – Uma parte física. Por exemplo, 3.

add_register

add_register(reg)

GitHub

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)

GitHub

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_0

O 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

dict

Aumentos

LayoutError - another_layout pode ser maior que o próprio, mas não menor. Caso contrário, aumentos.

compose

compose(other, qubits)

GitHub

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 Layout para compor esse Layout com.
  • qubits (list[Qubit]) – Uma lista de Qubit objetos sobre os quais other está definido, usada para estabelecer a correspondência entre as posições dos other qubits e os próprios qubits.

Retorna

Um novo objeto de layout que representa esse layout composto com o layout other .

Tipo de retorno

Layout

copy

copy()

GitHub

Retorna uma cópia de uma instância de Layout.

from_dict

from_dict(input_dict)

GitHub

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)

GitHub

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

Formato

Aumentos

LayoutError - Layout de entrada inválido.

from_qubit_list

static from_qubit_list(qubit_list, *qregs)

GitHub

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

Formato

Aumentos

LayoutError - Se os elementos não forem Qubit ou None

generate_trivial_layout

static generate_trivial_layout(*regs)

GitHub

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

Formato

get_physical_bits

get_physical_bits()

GitHub

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()

GitHub

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()

GitHub

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)

GitHub

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 Qubit objetos que representam o domínio do layout.
  • target_qubits (list[Qubit]) – Uma lista de Qubit objetos 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)

GitHub

decide qual deles é físico/virtual com base no tipo. Retorna (virtual, físico)

reorder_bits

reorder_bits(bits)

GitHub

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)

GitHub

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)

GitHub

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

qubits (list[Qubit])

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.