Skip to main content
IBM Quantum Platform

CouplingMap

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

GitHub

Bases: object

Grafo dirigido que especifica el acoplamiento fijo.

Los nodos corresponden a los qubits físicos (enteros) y las aristas dirigidas corresponden a las puertas CNOT permitidas, con origen y destino correspondientes a los qubits de control y destino, respectivamente.

Crear gráfico de acoplamiento. Por defecto, el acoplamiento generado no tiene nodos.

Parámetros

  • couplinglist (list or None) – Un grafo de acoplamiento inicial, especificado como una lista de adyacencia que contiene acoplamientos, por ejemplo [[0,1], [0,2], [1,2] ]. Se requiere que los nodos estén indexados contiguamente comenzando en 0. Los nodos omitidos se añadirán como nodos aislados en el mapa de acoplamiento.
  • description (str) – Una cadena para describir el mapa de acoplamiento.

Atributos

description

graph

distance_matrix

Devuelve la matriz de distancias del mapa de acoplamiento.

Para todos los qubits en los que no haya un camino disponible entre ellos, el valor en esta posición de la matriz de distancias será math.inf.

is_symmetric

Comprueba si la gráfica es simétrica.

Devuelve True si es simétrico, False en caso contrario

physical_qubits

Devuelve una lista ordenada de physical_qubits


Métodos

add_edge

add_edge(src, dst)

GitHub

Añade una arista dirigida al grafo de acoplamiento.

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

add_physical_qubit

add_physical_qubit(physical_qubit)

GitHub

Añade un qubit físico al grafo de acoplamiento como nodo.

physical_qubit (int): Un entero que representa un qubit físico.

Eleva

CouplingError - si se intenta añadir un qubit duplicado

compute_distance_matrix

compute_distance_matrix()

GitHub

Calcula la matriz de distancia completa en pares de nodos.

El mapa de distancias self._dist_matrix se calcula a partir del gráfico utilizando all_pairs_shortest_path_length. Normalmente esto se gestiona internamente mediante el atributo distance_matrix o el método distance() pero puede llamarse si se accede a la matriz de distancias fuera de ellos o si se desea generarla previamente.

connected_components

connected_components()

GitHub

Separar un CouplingMap en un subgrafo CouplingMap para cada componente conectado.

Los componentes conectados de un CouplingMap son los subgrafos que no forman parte de ningún subgrafo mayor. Por ejemplo, si tuvieras un mapa de acoplamiento parecido a:

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

entonces los componentes conectados de ese grafo son los subgrafos:

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

y:

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

Para un objeto CouplingMap sólo hay un único componente conectado, todo el CouplingMap.

Este método devolverá una lista de CouplingMap objetos, uno por cada componente conectado en este CouplingMap. La carga útil de datos de cada nodo en el graph atributo contendrá el número de qubit del gráfico original. Esto permitirá asignar el índice del qubit de un subgrafo componente al qubit original en el grafo combinado CouplingMap. Por ejemplo:

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 ya que el índice 0 en el segundo componente es qubit 3 en el cmap original.

Devuelve

Una lista de objetos CouplingMap para cada conexión

componentes. El orden de esta lista es determinista pero específico de la implementación y no se debe confiar en él como parte de la API.

Tipo de retorno

list de

distance

distance(physical_qubit1, physical_qubit2)

GitHub

Devuelve la distancia no dirigida entre physical_qubit1 y physical_qubit2.

Parámetros

  • physical_qubit1 (int) – Un qubit físico
  • physical_qubit2 (int) – Otro qubit físico

Devuelve

La distancia no dirigida

Tipo de retorno

int

Eleva

CouplingError - si los qubits no existen en el CouplingMap

draw

draw(method='neato')

GitHub

Dibuja el mapa de acoplamiento.

Esta función llama a la función graphviz_draw() del paquete rustworkx para dibujar el objeto CouplingMap objeto.

Aviso

Esta función ejecutará la herramienta Graphviz del sistema sobre un archivo que contenga cadenas de texto controlables por el usuario (como objetos qubit). Se recomienda llamar a esta función únicamente con datos de confianza.

Parámetros

method (str) – El método de maquetación que se va a utilizar. Consulte la documentación de graphviz_draw() para ver la lista de métodos compatibles

Devuelve

Mapa de acoplamiento dibujado.

Tipo de retorno

PIL.Image

from_full

classmethod from_full(num_qubits, bidirectional=True)

GitHub

Devuelve un mapa de acoplamiento completamente conectado en n qubits.

Tipo de retorno

CouplingMap

from_grid

classmethod from_grid(num_rows, num_columns, bidirectional=True)

GitHub

Devuelve un mapa de acoplamiento de qubits conectados en una rejilla de num_filas x num_columnas.

Tipo de retorno

CouplingMap

from_heavy_hex

classmethod from_heavy_hex(distance, bidirectional=True)

GitHub

Devuelve un mapa de acoplamiento de grafos hexagonales pesados.

Un gráfico hexagonal pesado se describe en:

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

Parámetros

  • distance (int) – La distancia de código para el gráfico hexagonal pesado generado. El valor de la distancia puede ser cualquier número entero positivo impar. La distancia se relaciona con el número de qubits mediante: n=5d22d12n = \frac{5d^2 - 2d - 1}{2} donde nn es el número de qubits y dd es el parámetro distance .
  • bidirectional (bool) – Si las aristas del grafo de acoplamiento de salida son bidireccionales o no. Por defecto está configurado como True

Devuelve

Un gráfico de acoplamiento hexagonal pesado

Tipo de retorno

CouplingMap

from_heavy_square

classmethod from_heavy_square(distance, bidirectional=True)

GitHub

Devuelve un mapa de acoplamiento de grafos cuadrados pesados.

Un gráfico cuadrado pesado se describe en:

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

Parámetros

  • distance (int) – La distancia de código para el gráfico cuadrado pesado generado. El valor de la distancia puede ser cualquier número entero positivo impar. La distancia se relaciona con el número de qubits mediante: n=3d22dn = 3d^2 - 2d donde nn es el número de qubits y dd es el parámetro distance .
  • bidirectional (bool) – Si las aristas del grafo de acoplamiento de salida son bidireccionales o no. Por defecto está configurado como True

Devuelve

Un gráfico de acoplamiento cuadrado pesado

Tipo de retorno

CouplingMap

from_hexagonal_lattice

classmethod from_hexagonal_lattice(rows, cols, bidirectional=True)

GitHub

Devuelve un mapa de acoplamiento de grafos lattice hexagonales.

Parámetros

  • rows (int) – El número de filas con las que generar el gráfico.
  • cols (int) – El número de columnas con las que generar el gráfico.
  • bidirectional (bool) – Si las aristas del grafo de acoplamiento de salida son bidireccionales o no. Por defecto está configurado como True

Devuelve

Un gráfico de acoplamiento de celosía hexagonal

Tipo de retorno

CouplingMap

from_line

classmethod from_line(num_qubits, bidirectional=True)

GitHub

Devuelve un mapa de acoplamiento de n qubits conectados en una línea.

Tipo de retorno

CouplingMap

from_ring

classmethod from_ring(num_qubits, bidirectional=True)

GitHub

Devuelve un mapa de acoplamiento de n qubits conectados a cada uno de sus vecinos en un anillo.

Tipo de retorno

CouplingMap

get_edges

get_edges()

GitHub

Obtiene la lista de aristas del grafo de acoplamiento.

Devuelve

Cada arista es un par de qubits físicos.

Tipo de retorno

Tupla (int,int )

is_connected

is_connected()

GitHub

Comprueba si el gráfico está conectado.

Devuelve True si está conectado, False en caso contrario

largest_connected_component

largest_connected_component()

GitHub

Devuelve un conjunto de qubits en el componente conectado más grande.

make_symmetric

make_symmetric()

GitHub

Convierte las aristas unidireccionales en bidireccionales.

neighbors

neighbors(physical_qubit)

GitHub

Devuelve los vecinos más cercanos de un qubit físico.

La direccionalidad es importante, es decir, un vecino debe ser accesible recorriendo un salto en la dirección de una arista.

reduce

reduce(mapping, check_if_connected=True)

GitHub

Devuelve un mapa de acoplamiento reducido que corresponde al subgrafo de qubits seleccionado en el mapeo.

Parámetros

  • mapping (list) – Un mapeo de qubits reducidos a qubits de dispositivo.
  • check_if_connected (bool) – si es True, comprueba que el mapa de acoplamiento reducido está conectado.

Devuelve

Un mapa de acoplamiento reducido para los qubits seleccionados.

Tipo de retorno

CouplingMap

Eleva

CouplingError - El mapa de acoplamiento reducido debe estar conectado.

shortest_undirected_path

shortest_undirected_path(physical_qubit1, physical_qubit2)

GitHub

Devuelve el camino no dirigido más corto entre physical_qubit1 y physical_qubit2.

Parámetros

  • physical_qubit1 (int) – Un qubit físico
  • physical_qubit2 (int) – Otro qubit físico

Devuelve

El camino no dirigido más corto

Tipo de retorno

Lista

Eleva

CouplingError - Cuando no hay camino entre physical_qubit1, physical_qubit2.

size

size()

GitHub

Devuelve el número de qubits físicos en este gráfico.

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.