Skip to main content
IBM Quantum Platform

CouplingMap

class qiskit.transpiler.CouplingMap(couplinglist=None, description=None)

GitHub

Bases: object

Gráfico direcionado que especifica o acoplamento fixo.

Os nós correspondem a qubits físicos (inteiros) e as bordas direcionadas correspondem a portas CNOT permitidas, com a origem e o destino correspondendo aos qubits de controle e de destino, respectivamente.

Criar gráfico de acoplamento. Por padrão, o acoplamento gerado não tem nós.

Parâmetros

  • couplinglist (list or None) – Um gráfico de acoplamento inicial, especificado como uma lista de adjacência contendo acoplamentos, por exemplo, [[0,1], [0,2], [1,2] ]. É necessário que os nós sejam indexados de forma contígua, começando em 0. Os nós perdidos serão adicionados como nós isolados no mapa de acoplamento.
  • description (str) – Uma cadeia de caracteres para descrever o mapa de acoplamento.

Atributos

description

graph

distance_matrix

Retorna a matriz de distância para o mapa de acoplamento.

Para qualquer qubits em que não haja um caminho disponível entre eles, o valor nessa posição da matriz de distância será math.inf.

is_symmetric

Teste se o gráfico é simétrico.

Retorna True se for simétrico, False caso contrário

physical_qubits

Retorna uma lista ordenada de physical_qubits


Métodos

add_edge

add_edge(src, dst)

GitHub

Adicione uma borda direcionada ao gráfico de acoplamento.

src (int): qubit físico de origem dst (int): qubit físico de destino

add_physical_qubit

add_physical_qubit(physical_qubit)

GitHub

Adicione um qubit físico ao gráfico de acoplamento como um nó.

physical_qubit (int): Um número inteiro que representa um qubit físico.

Aumentos

CouplingError - se estiver tentando adicionar um qubit duplicado

compute_distance_matrix

compute_distance_matrix()

GitHub

Calcule a matriz de distância total em pares de nós.

O mapa de distância self._dist_matrix é calculado a partir do gráfico usando all_pairs_shortest_path_length. Normalmente, isso é tratado internamente pelo atributo distance_matrix ou pelo método distance() mas pode ser chamado se você estiver acessando a matriz de distância fora desses métodos ou se quiser pré-gerá-la.

connected_components

connected_components()

GitHub

Separar um CouplingMap em um subgráfico CouplingMap para cada componente conectado.

Os componentes conectados de um CouplingMap são os subgrafos que não fazem parte de nenhum subgrafo maior. Por exemplo, se você tivesse um mapa de acoplamento com a seguinte aparência:

0 --> 1   4 --> 5 ---> 6 --> 7
|     |
|     |
V     V
2 --> 3

então os componentes conectados desse gráfico são os subgráficos:

0 --> 1
|     |
|     |
V     V
2 --> 3

e:

4 --> 5 ---> 6 --> 7

Para um objeto CouplingMap existe apenas um único componente conectado, todo o CouplingMap.

Este método retornará uma lista de CouplingMap objetos, um para cada componente conexo neste CouplingMap. A carga de dados de cada nó no graph atributo conterá o número do qubit no gráfico original. Isso permitirá mapear o índice do qubit em um subgrafo componente para o qubit original no grafo combinado CouplingMap. Por exemplo:

from qiskit.transpiler import CouplingMap

cmap = CouplingMap([[0, 1], [1, 2], [2, 0], [3, 4], [4, 5], [5, 3]])
component_cmaps = cmap.connected_components()
print(component_cmaps[1].graph[0])

imprimirá 3 , pois o índice 0 no segundo componente é o qubit 3 no cmap original.

Retorna

Uma lista de objetos CouplingMap para cada conexão

componentes. A ordem dessa lista é determinística, mas específica da implementação e não deve ser considerada como parte da API.

Tipo de retorno

Lista

distance

distance(physical_qubit1, physical_qubit2)

GitHub

Retorna a distância não direcionada entre physical_qubit1 e physical_qubit2.

Parâmetros

  • physical_qubit1 (int) – Um qubit físico
  • physical_qubit2 (int) – Outro qubit físico

Retorna

A distância não direcionada

Tipo de retorno

int

Aumentos

CouplingError - se os qubits não existirem no CouplingMap

draw

draw(method='neato')

GitHub

Desenha o mapa de acoplamento.

Essa função chama a função graphviz_draw() do pacote rustworkx para desenhar o objeto CouplingMap objeto.

Aviso

Esta função chamará a ferramenta Graphviz do sistema para processar um arquivo que contenha cadeias de caracteres controláveis pelo usuário (como objetos qubit). Recomenda-se chamar esta função apenas com entradas confiáveis.

Parâmetros

method (str) – O método de layout a ser utilizado. Consulte a documentação de graphviz_draw() para obter a lista de métodos compatíveis

Retorna

Mapa de acoplamento desenhado.

Tipo de retorno

PIL.Image

from_full

classmethod from_full(num_qubits, bidirectional=True)

GitHub

Retorna um mapa de acoplamento totalmente conectado em n qubits.

Tipo de retorno

CouplingMap

from_grid

classmethod from_grid(num_rows, num_columns, bidirectional=True)

GitHub

Retorna um mapa de acoplamento de qubits conectados em uma grade de num_rows x num_columns.

Tipo de retorno

CouplingMap

from_heavy_hex

classmethod from_heavy_hex(distance, bidirectional=True)

GitHub

Retorna um mapa de acoplamento de gráfico de hexágono pesado.

Um gráfico de hexágono pesado é descrito em:

https://journals.aps.org/prx/abstract/10.1103/PhysRevX.10.011022

Parâmetros

  • distance (int) – A distância do código para o gráfico hexagonal pesado gerado. O valor da distância pode ser qualquer número inteiro positivo ímpar. A distância está relacionada ao número de qubits por: n=5d22d12n = \frac{5d^2 - 2d - 1}{2} onde nn é o número de qubits e dd é o parâmetro distance .
  • bidirectional (bool) – Se as bordas no gráfico de acoplamento de saída são bidirecionais ou não. Por padrão, isso é definido como True

Retorna

Um gráfico de acoplamento hexagonal pesado

Tipo de retorno

CouplingMap

from_heavy_square

classmethod from_heavy_square(distance, bidirectional=True)

GitHub

Retorna um mapa de acoplamento de gráfico quadrado pesado.

Um gráfico quadrado pesado é descrito em:

https://journals.aps.org/prx/abstract/10.1103/PhysRevX.10.011022

Parâmetros

  • distance (int) – A distância do código para o gráfico quadrado pesado gerado. O valor da distância pode ser qualquer número inteiro positivo ímpar. A distância está relacionada ao número de qubits por: n=3d22dn = 3d^2 - 2d onde nn é o número de qubits e dd é o parâmetro distance .
  • bidirectional (bool) – Se as bordas no gráfico de acoplamento de saída são bidirecionais ou não. Por padrão, isso é definido como True

Retorna

Um gráfico de acoplamento quadrado pesado

Tipo de retorno

CouplingMap

from_hexagonal_lattice

classmethod from_hexagonal_lattice(rows, cols, bidirectional=True)

GitHub

Retorna um mapa de acoplamento de gráfico de treliça hexagonal.

Parâmetros

  • rows (int) – O número de linhas para gerar o gráfico.
  • cols (int) – O número de colunas para gerar o gráfico.
  • bidirectional (bool) – Se as bordas no gráfico de acoplamento de saída são bidirecionais ou não. Por padrão, isso é definido como True

Retorna

Um gráfico de acoplamento de rede hexagonal

Tipo de retorno

CouplingMap

from_line

classmethod from_line(num_qubits, bidirectional=True)

GitHub

Retorna um mapa de acoplamento de n qubits conectados em uma linha.

Tipo de retorno

CouplingMap

from_ring

classmethod from_ring(num_qubits, bidirectional=True)

GitHub

Retorna um mapa de acoplamento de n qubits conectados a cada um de seus vizinhos em um anel.

Tipo de retorno

CouplingMap

get_edges

get_edges()

GitHub

Obtém a lista de bordas no gráfico de acoplamento.

Retorna

Cada borda é um par de qubits físicos.

Tipo de retorno

Tuple (int,int )

is_connected

is_connected()

GitHub

Teste se o gráfico está conectado.

Retorna True se estiver conectado, False caso contrário

largest_connected_component

largest_connected_component()

GitHub

Retorna um conjunto de qubits no maior componente conectado.

make_symmetric

make_symmetric()

GitHub

Converta bordas unidirecionais em bidirecionais.

neighbors

neighbors(physical_qubit)

GitHub

Retorna os vizinhos mais próximos de um qubit físico.

A direcionalidade é importante, ou seja, um vizinho deve ser acessível com um salto na direção de uma borda.

reduce

reduce(mapping, check_if_connected=True)

GitHub

Retorna um mapa de acoplamento reduzido que corresponde ao subgráfico de qubits selecionado no mapeamento.

Parâmetros

  • mapping (list) – Um mapeamento de qubits reduzidos para qubits de dispositivos.
  • check_if_connected (bool) – se True, verifica se o mapa de acoplamento reduzido está conectado.

Retorna

Um coupling_map reduzido para os qubits selecionados.

Tipo de retorno

CouplingMap

Aumentos

CouplingError - O mapa de acoplamento reduzido deve ser conectado.

shortest_undirected_path

shortest_undirected_path(physical_qubit1, physical_qubit2)

GitHub

Retorna o caminho não direcionado mais curto entre physical_qubit1 e physical_qubit2.

Parâmetros

  • physical_qubit1 (int) – Um qubit físico
  • physical_qubit2 (int) – Outro qubit físico

Retorna

O caminho não direcionado mais curto

Tipo de retorno

Lista

Aumentos

CouplingError - Quando não houver um caminho entre physical_qubit1, physical_qubit2.

size

size()

GitHub

Retorna o número de qubits físicos nesse gráfico.

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