Skip to main content
IBM Quantum Platform

SolovayKitaevDecomposition

class qiskit.synthesis.SolovayKitaevDecomposition(basic_approximations=None, *, basis_gates=None, depth=12, check_input=False)

GitHub

Bases: object

El algoritmo de descomposición discreta Solovay Kitaev.

Esta clase es llamada recursivamente por el pase del transpilador, por eso está separada. Consulte SolovayKitaev para más información.

Nota

Si basic_approximations se pasa como .npy archivo, se utiliza pickle internamente para cargar los datos. Esto supone una posible vulnerabilidad de seguridad, por lo que solo deben cargarse archivos de confianza.

Parámetros

  • basic_approximations (str |dict[str, np.ndarray] | list[GateSequence] | None) –

    Una especificación de las aproximaciones básicas de SO(3) en términos de puertas discretas. En cada iteración de este algoritmo, el error restante se aproxima mediante la secuencia de puertas más cercana de este conjunto. Si se especifica un nombre de archivo str, este indica el archivo desde el que se debe cargar la aproximación. Si a dict, entonces esto contiene {gates: effective_SO3_matrix} pares, p. ej., {"h t": np.array([[0, 0.7071, -0.7071], [0, -0.7071, -0.7071], [-1, 0, 0]]}. Si se trata de una lista, esta contiene la misma información que el diccionario, pero ya convertida en GateSequence objetos, que contienen la matriz SO(3) y las puertas.

    Se puede especificar este parámetro o basis_gates y depth .

  • basis_gates (list[str |Gate] | None) – Una lista de puertas estándar discretas (es decir, no parametrizadas). El valor predeterminado es ["h", "t", "tdg"].

  • depth (int) – El número de combinaciones de puertas base a considerar en el conjunto de bases. Determina la rapidez con la que converge el algoritmo (y si converge) y debe elegirse suficientemente alta.

  • check_input (bool) – Si True, realice pasos intermedios comprobando si las matrices tienen la forma esperada.


Atributos

basis_gates

El conjunto de puertas base de las aproximaciones básicas.

Si None, por defecto ["h", "t", "tdg"].

check_input

Si se realizan comprobaciones en tiempo de ejecución de los datos internos.

depth

La profundidad de puerta máxima de las aproximaciones básicas.


Métodos

find_basic_approximation

find_basic_approximation(sequence)

GitHub

Encuentra GateSequence en self._basic_approximations que se aproxime a sequence.

Obsoleto desde la versión 2.3

El método qiskit.synthesis.discrete_basis.solovay_kitaev.SolovayKitaevDecomposition.find_basic_approximation() está obsoleto a partir de Qiskit 2.3. Se eliminará como muy pronto tres meses después de la fecha de publicación. Utilice en su lugar query_basic_approximation, que toma una puerta o matriz como entrada y devuelve un objeto QuantumCircuit.

Parámetros

sequence (GateSequence) – GateSequence para encontrar la aproximación a.

Devuelve

GateSequence en que se aproxima a sequence.

Tipo de retorno

GateSequence

load_basic_approximations

static load_basic_approximations(data)

GitHub

Carga aproximaciones básicas.

Nota

Si data se proporciona como cadena, este método utiliza internamente pickle para cargar el archivo. Esto supone una posible vulnerabilidad de seguridad, por lo que solo deben cargarse archivos de confianza.

Parámetros

data (list |str |dict) – Si es una cadena, especifica la ruta al archivo desde donde cargar los datos. Si es un diccionario, especifica directamente las descomposiciones como {gates: matrix} o {gates: (matrix, global_phase)}. Allí, gates son los nombres de las puertas que producen la matriz SO(3) matrix, por ejemplo. {"h t": np.array([[0, 0.7071, -0.7071], [0, -0.7071, -0.7071], [-1, 0, 0]]} y la global_phase puede darse para dar cuenta de una diferencia de fase global entre la matriz U(2) de las puertas cuánticas y la matriz SO(3) almacenada. Si no se indica, se considerará que global_phase es 0.

Devuelve

Una lista de aproximaciones básicas del tipo GateSequence.

Eleva

ValueError - Si el número de combinaciones de puertas y matrices asociadas no coincide.

Tipo de retorno

lista [GateSequence]

query_basic_approximation

query_basic_approximation(gate)

GitHub

Consulta una aproximación básica de una matriz.

Parámetros

gate (ndarray |Gate)

Tipo de retorno

QuantumCircuit

run

run(gate_matrix, recursion_degree, return_dag=False, check_input=True)

GitHub

Ejecuta el algoritmo.

Parámetros

  • gate_matrix (np.ndarray | Gate) – La puerta de un solo qubit a aproximar. Puede ser Gatedonde Gate.to_matrix() devuelve la matriz, o una matriz unitaria 2×22\times 2 que representa la puerta.
  • recursion_degree (int) – El grado de recursividad, denominado nn en el documento.
  • return_dag (bool) – Si True devuelve a DAGCircuitsi no a QuantumCircuit.
  • check_input (bool) – Si True compruebe que la matriz de entrada es válida para la descomposición. Anula el atributo de clase con el mismo nombre, pero sólo para esta llamada a función.

Devuelve

Un circuito de un qubit que aproxima el gate_matrix en la base discreta especificada.

Tipo de retorno

QuantumCircuit | DAGCircuit

save_basic_approximations

save_basic_approximations(filename)

GitHub

Guarda las aproximaciones básicas en un archivo.

Esto puede ser cargado de nuevo a través del inicializador de clase (preferido) o a través de load_basic_approximations():

filename = "approximations.bin"
sk.save_basic_approximations(filename)

new_sk = SolovayKitaevDecomposition(filename)

Parámetros

filename (str) – El nombre del archivo en el que se almacenarán las aproximaciones.

Eleva

ValueError - Si el nombre del archivo tiene extensión.npy. El formato no es.npy, y almacenarlo como tal puede provocar errores al volver a cargar el archivo.

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