AQCSynthesisPlugin
class qiskit.transpiler.passes.synthesis.aqc_plugin.AQCSynthesisPlugin
Bases: UnitarySynthesisPlugin
Um plug-in de síntese unitária Qiskit baseado em AQC.
Esse plug-in é chamado por transpile() quando o parâmetro unitary_synthesis_method é definido como "aqc".
Esse plug-in oferece suporte à personalização e parâmetros adicionais podem ser passados para o plug-in passando um dicionário como o parâmetro unitary_synthesis_plugin_config da função transpile() função.
Parâmetros suportados no dicionário:
network_layout (str)
Tipo de geometria de rede, um de {"sequ", "spin", "cart", "cyclic_spin", "cyclic_line"}. O valor padrão é "spin".
connectivity_type (str)
tipo de conectividade interqubit, {"full", "line", "star"}. O valor padrão é "full".
profundidade (int)
profundidade da rede CNOT, ou seja, o número de camadas, em que cada camada consiste em um único bloco CNOT.
otimizador (Minimizer)
Uma implementação do protocolo Minimizer a ser usado no processo de otimização.
semente (int)
Uma semente aleatória.
initial_point (ndarray)
Valores iniciais de ângulos/parâmetros para iniciar o processo de otimização.
Atributos
max_qubits
O número máximo de qubits suportados é 14.
min_qubits
O número mínimo de qubits suportados é 3.
supported_bases
O plug-in não oferece suporte a bases para síntese.
supports_basis_gates
O plug-in não oferece suporte a portas de base e, por padrão, sintetiza um circuito usando a base de porta ["rx", "ry", "rz", "cx"] .
supports_coupling_map
O plug-in não é compatível com mapas de acoplamento.
supports_gate_errors
O plug-in não oferece suporte a erros de porta.
supports_gate_errors_by_qubit
Retorna se o plug-in é compatível com o uso de gate_errors_by_qubit
Isso difere de supports_gate_errors/gate_errors por usar uma visão diferente dos mesmos dados. Em vez de ser codificado pelo nome da porta, ele é codificado por qubit e usa Gate para representar as portas (em vez dos nomes das portas).
gate_errors_by_qubit será um dicionário na forma de {(qubits,): [Gate, error]}. Por exemplo:
{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}Observe que esse dicionário pode não estar completo ou pode estar vazio, pois depende de o backend de destino relatar erros de porta em cada porta para cada qubit. As taxas de erro de porta informadas em gate_errors são fornecidas pelo objeto Backend do dispositivo de destino e o significado exato pode ser diferente dependendo do backend.
O padrão é False
supports_gate_lengths
O plug-in não é compatível com comprimentos de porta.
supports_gate_lengths_by_qubit
Retorna se o plug-in é compatível com o uso de gate_lengths_by_qubit
Isso difere de supports_gate_lengths/gate_lengths por usar uma visão diferente dos mesmos dados. Em vez de ser codificado pelo nome da porta, ele é codificado por qubit e usa Gate para representar as portas (em vez dos nomes das portas)
gate_lengths_by_qubit será um dicionário na forma de {(qubits,): [Gate, length]}. Por exemplo:
{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}em que o valor length está em unidades de segundos.
Observe que esse dicionário pode não estar completo ou pode estar vazio, pois depende de o backend de destino informar os comprimentos de porta em cada porta para cada qubit.
O padrão é False
supports_natural_direction
O plug-in não oferece suporte à direção natural, ele pressupõe portas bidirecionais de dois qubits.
supports_pulse_optimize
O plug-in não oferece suporte à otimização de pulsos.
supports_target
Se o plug-in é compatível com target como uma opção
target será um objeto Target representando o dispositivo de destino para a saída da passagem de síntese.
Por padrão, isso será False , pois a interface do plug-in é anterior à classe Target classe. Se um plug-in retornar True para esse atributo, espera-se que o plug-in use o parâmetro Target em vez dos valores passados se algum dos parâmetros supports_gate_lengths, supports_gate_errors, supports_coupling_map e supports_basis_gates estiver definido (embora o ideal seja que todos esses parâmetros contenham informações duplicadas).
Métodos
run
run(unitary, **options)
Executar a síntese para a matriz unitária fornecida
Parâmetros
- unitary (numpy.ndarray) – A matriz unitária a ser sintetizada em um
DAGCircuitobjeto - options - Os kwargs opcionais que são passados com base na saída dos métodos
support_*na classe. Consulte a documentação desses métodos emUnitarySynthesisPluginpara ver quais são as chaves e os valores.
Retorna
A representação do circuito dag do unitário. Como alternativa, você pode retornar uma tupla no formato (dag, wires) , em que dag é a representação do circuito dag da representação do circuito da unitária e wires é o mapeamento de fios a ser usado para qiskit.dagcircuit.DAGCircuit.substitute_node_with_dag(). Se você retornar uma tupla e wires for None , isso se comportará exatamente como se apenas um DAGCircuit fosse retornado. Além disso, se esse retorno for None , nenhuma substituição será feita.
**Tipo de retorno