SolovayKitaevDecomposition
class qiskit.synthesis.SolovayKitaevDecomposition(basic_approximations=None, *, basis_gates=None, depth=12, check_input=False)
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.
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 adict, 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 enGateSequenceobjetos, que contienen la matriz SO(3) y las puertas.Se puede especificar este parámetro o
basis_gatesydepth. -
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)
Encuentra GateSequence en self._basic_approximations que se aproxime a sequence.
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)
Carga aproximaciones básicas.
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)
Consulta una aproximación básica de una matriz.
Parámetros
Tipo de retorno
run
run(gate_matrix, recursion_degree, return_dag=False, check_input=True)
Ejecuta el algoritmo.
Parámetros
- gate_matrix (np.ndarray | Gate) – La puerta de un solo qubit a aproximar. Puede ser
GatedondeGate.to_matrix()devuelve la matriz, o una matriz unitaria que representa la puerta. - recursion_degree (int) – El grado de recursividad, denominado en el documento.
- return_dag (bool) – Si
Truedevuelve aDAGCircuitsi no aQuantumCircuit. - check_input (bool) – Si
Truecompruebe 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
save_basic_approximations
save_basic_approximations(filename)
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.