SolovayKitaevDecomposition
class qiskit.synthesis.SolovayKitaevDecomposition(basic_approximations=None, *, basis_gates=None, depth=12, check_input=False)
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.
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 adict, 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 emGateSequenceobjetos, que contêm a matriz SO(3) e os portões.Esse parâmetro ou
basis_gatesedepthpodem 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)
Encontre GateSequence em self._basic_approximations que se aproxima de sequence.
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)
Carregar aproximações básicas.
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)
Consultar uma aproximação básica de uma matriz.
Parâmetros
Tipo de retorno
run
run(gate_matrix, recursion_degree, return_dag=False, check_input=True)
Execute o algoritmo.
Parâmetros
- gate_matrix (np.ndarray | Gate) – A porta de um único qubit a ser aproximada. Pode ser um
Gate, ondeGate.to_matrix()retorna a matriz ou uma matriz unitária que representa a porta. - recursion_degree (int) – O grau de recursão, chamado no documento.
- return_dag (bool) – Se
Trueretornar aDAGCircuit, else aQuantumCircuit. - check_input (bool) – Se
Trueverificar 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
save_basic_approximations
save_basic_approximations(filename)
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.