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

O algoritmo de decomposição discreta de Solovay Kitaev.

Essa classe é chamada recursivamente pela passagem do transpilador, e é por isso que ela é separada. Veja SolovayKitaev para obter mais informações.

Nota

Se basic_approximations for passado como .npy arquivo, o pickle é usado internamente para carregar os dados. Esta é uma vulnerabilidade potencial de segurança e apenas arquivos confiáveis devem ser carregados.

Parâmetros

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

    Uma especificação das aproximações básicas do SO(3) em termos de portas discretas. Em cada iteração deste algoritmo, o erro remanescente é aproximado pela sequência de portas mais próxima nesse conjunto. Se for especificado um str, isso indica o nome do arquivo do qual a aproximação deve ser carregada. Se a dict, então isso contém {gates: effective_SO3_matrix} pares, por exemplo, {"h t": np.array([[0, 0.7071, -0.7071], [0, -0.7071, -0.7071], [-1, 0, 0]]}. Se for uma lista, ela contém as mesmas informações que o dicionário, mas já convertidas em GateSequence objetos, que contêm a matriz SO(3) e os portões.

    Esse parâmetro ou basis_gates e depth podem ser especificados.

  • basis_gates (list[str |Gate] | None) – Uma lista de portas padrão discretas (ou seja, não parametrizadas). Padroniza para ["h", "t", "tdg"].

  • depth (int) – O número de combinações de portas de base a serem consideradas no conjunto de bases. Isso determina a rapidez com que o algoritmo converge (e se converge) e deve ser escolhido com um valor suficientemente alto.

  • check_input (bool) – Se True, execute etapas intermediárias verificando se as matrizes têm a forma esperada.


Atributos

basis_gates

O conjunto de portas de base das aproximações básicas.

Se None, o padrão é ["h", "t", "tdg"].

check_input

Se deve realizar verificações de tempo de execução nos dados internos.

depth

A profundidade máxima da porta das aproximações básicas.


Métodos

find_basic_approximation

find_basic_approximation(sequence)

GitHub

Encontre GateSequence em self._basic_approximations que se aproxima de sequence.

Obsoleto desde a versão 2.3

O método qiskit.synthesis.discrete_basis.solovay_kitaev.SolovayKitaevDecomposition.find_basic_approximation() está obsoleto a partir do Qiskit 2.3. Será removido no mínimo três meses após a data de lançamento. Use query_basic_approximation, que recebe um Gate ou matriz como entrada e retorna um objeto QuantumCircuit.

Parâmetros

sequence (GateSequence) – GateSequence para encontrar a aproximação para.

Retorna

GateSequence em que se aproxima de sequence.

Tipo de retorno

GateSequence

load_basic_approximations

static load_basic_approximations(data)

GitHub

Carregar aproximações básicas.

Nota

Se data for fornecido como string, este método depende internamente do pickle para carregar o arquivo. Esta é uma vulnerabilidade potencial de segurança e apenas arquivos confiáveis devem ser carregados.

Parâmetros

data (list |str |dict) – Se for uma cadeia de caracteres, especifica o caminho para o arquivo de onde os dados serão carregados. Se for um dicionário, especifique diretamente as decomposições como {gates: matrix} ou {gates: (matrix, global_phase)}. Lá, gates são os nomes das portas que produzem a matriz SO(3) matrix, por exemplo. {"h t": np.array([[0, 0.7071, -0.7071], [0, -0.7071, -0.7071], [-1, 0, 0]]} e o global_phase pode ser dado para explicar uma diferença de fase global entre a matriz U(2) das portas quânticas e a matriz SO(3) armazenada. Se não for fornecido, o global_phase será assumido como 0.

Retorna

Uma lista de aproximações básicas do tipo GateSequence.

Aumentos

ValueError - Se o número de combinações de portas e as matrizes associadas não corresponderem.

Tipo de retorno

lista [GateSequence]

query_basic_approximation

query_basic_approximation(gate)

GitHub

Consultar uma aproximação básica de uma matriz.

Parâmetros

gate (ndarray |Gate)

Tipo de retorno

QuantumCircuit

run

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

GitHub

Execute o algoritmo.

Parâmetros

  • gate_matrix (np.ndarray | Gate) – A porta de um único qubit a ser aproximada. Pode ser um Gate, onde Gate.to_matrix() retorna a matriz ou uma matriz unitária 2×22\times 2 que representa a porta.
  • recursion_degree (int) – O grau de recursão, chamado nn no documento.
  • return_dag (bool) – Se True retornar a DAGCircuit, else a QuantumCircuit.
  • check_input (bool) – Se True verificar se a matriz de entrada é válida para a decomposição. Substitui o atributo de classe com o mesmo nome, mas somente para essa chamada de função.

Retorna

Um circuito de um qubit que aproxima o gate_matrix na base discreta especificada.

Tipo de retorno

QuantumCircuit | DAGCircuit

save_basic_approximations

save_basic_approximations(filename)

GitHub

Salve as aproximações básicas em um arquivo.

Isso pode ser carregado novamente por meio do inicializador de classe (preferencial) ou por meio de load_basic_approximations():

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

new_sk = SolovayKitaevDecomposition(filename)

Parâmetros

filename (str) – O nome do arquivo para armazenar as aproximações.

Aumentos

ValueError - Se o nome do arquivo tiver uma extensão.npy. O formato não é.npy, e o armazenamento como tal pode causar erros ao carregar o arquivo novamente.

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