AQC
class qiskit.synthesis.unitary.aqc.AQC(optimizer=None, seed=None)
Bases: object
Uma implementação genérica do Approximate Quantum Compiler. Essa implementação é independente da implementação subjacente do circuito aproximado, do objetivo e do otimizador. Os usuários podem passar implementações correspondentes das classes abstratas:
- O otimizador é uma implementação do protocolo
Minimizer, um chamável usado para executar o processo de otimização. A escolha do otimizador pode afetar a convergência geral, o tempo necessário para o processo de otimização e o valor objetivo alcançado. - O circuito aproximado representa um modelo cujos parâmetros queremos otimizar. Atualmente, há apenas uma implementação baseada em blocos de unidades CNOT de 4 rotações:
CNOTUnitCircuit. Consulte o documento para obter mais detalhes. - O objetivo aproximado é fortemente acoplado à implementação do circuito aproximado e fornece dois métodos para calcular a função objetiva e o gradiente com relação aos parâmetros do circuito aproximado. Esse objetivo é passado para o otimizador. Atualmente, há duas implementações baseadas em blocos de unidades CNOT de 4 rotações:
DefaultCNOTUnitObjectivee sua versão aceleradaFastCNOTUnitObjective. Ambas as implementações compartilham a mesma ideia de maximização do produto de Hilbert-Schmidt entre a matriz de destino e sua aproximação. A abordagem de implementação anterior deve ser considerada como uma linha de base. Ele pode apresentar problemas de desempenho e é adequado principalmente para um pequeno número de qubits (até 5 ou 6), enquanto o último, mais acelerado, pode ser aplicado a problemas maiores. - Deve-se levar em consideração o crescimento exponencial do tamanho da matriz com o número de qubits porque a implementação não apenas cria uma matriz de destino potencialmente grande, mas também aloca vários buffers de memória temporária de tamanho comparável ao da matriz de destino.
Parâmetros
- optimizer (Minimizer | None) – um otimizador a ser usado no procedimento de otimização da busca pelo melhor circuito aproximado. Por padrão, o minimizador scipy com o método
L-BFGS-Bé usado com o máximo de iterações definido como 1000. - seed (int | None) – um valor de semente a ser usado por um gerador de números aleatórios.
Métodos
compile_unitary
compile_unitary(target_matrix, approximate_circuit, approximating_objective, initial_point=None)
O Approximately compila um circuito representado como uma matriz unitária, resolvendo um problema de otimização definido por approximating_objective e usando approximate_circuit como um modelo para o circuito aproximado.
Parâmetros
- target_matrix (ndarray) – uma matriz unitária para aproximar.
- approximate_circuit (ApproximateCircuit) – um circuito modelo que será preenchido com os valores de parâmetros obtidos no procedimento de otimização.
- approximating_objective (ApproximatingObjective) – uma definição do problema de otimização.
- initial_point (ndarray | None) – valores iniciais dos ângulos/parâmetros a partir dos quais iniciar a otimização.
Tipo de retorno
Nenhum
Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.