CouplingMap
class qiskit.transpiler.CouplingMap(couplinglist=None, description=None)
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)
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)
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()
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()
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 --> 3entonces los componentes conectados de ese grafo son los subgrafos:
0 --> 1
| |
| |
V V
2 --> 3y:
4 --> 5 ---> 6 --> 7Para 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
distance
distance(physical_qubit1, physical_qubit2)
Devuelve la distancia no dirigida entre physical_qubit1 y physical_qubit2.
Parámetros
Devuelve
La distancia no dirigida
Tipo de retorno
Eleva
CouplingError - si los qubits no existen en el CouplingMap
draw
draw(method='neato')
Dibuja el mapa de acoplamiento.
Esta función llama a la función graphviz_draw() del paquete rustworkx para dibujar el objeto CouplingMap objeto.
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)
Devuelve un mapa de acoplamiento completamente conectado en n qubits.
Tipo de retorno
from_grid
classmethod from_grid(num_rows, num_columns, bidirectional=True)
Devuelve un mapa de acoplamiento de qubits conectados en una rejilla de num_filas x num_columnas.
Tipo de retorno
from_heavy_hex
classmethod from_heavy_hex(distance, bidirectional=True)
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: donde es el número de qubits y 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
from_heavy_square
classmethod from_heavy_square(distance, bidirectional=True)
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: donde es el número de qubits y 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
from_hexagonal_lattice
classmethod from_hexagonal_lattice(rows, cols, bidirectional=True)
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
from_line
classmethod from_line(num_qubits, bidirectional=True)
Devuelve un mapa de acoplamiento de n qubits conectados en una línea.
Tipo de retorno
from_ring
classmethod from_ring(num_qubits, bidirectional=True)
Devuelve un mapa de acoplamiento de n qubits conectados a cada uno de sus vecinos en un anillo.
Tipo de retorno
get_edges
get_edges()
Obtiene la lista de aristas del grafo de acoplamiento.
Devuelve
Cada arista es un par de qubits físicos.
Tipo de retorno
is_connected
is_connected()
Comprueba si el gráfico está conectado.
Devuelve True si está conectado, False en caso contrario
largest_connected_component
largest_connected_component()
Devuelve un conjunto de qubits en el componente conectado más grande.
make_symmetric
neighbors
neighbors(physical_qubit)
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)
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
Eleva
CouplingError - El mapa de acoplamiento reducido debe estar conectado.
shortest_undirected_path
shortest_undirected_path(physical_qubit1, physical_qubit2)
Devuelve el camino no dirigido más corto entre physical_qubit1 y physical_qubit2.
Parámetros
Devuelve
El camino no dirigido más corto
Tipo de retorno
Lista
Eleva
CouplingError - Cuando no hay camino entre physical_qubit1, physical_qubit2.