Skip to main content
IBM Quantum Platform

AQCSynthesisPlugin

class qiskit.transpiler.passes.synthesis.aqc_plugin.AQCSynthesisPlugin

GitHub

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)

GitHub

Executar a síntese para a matriz unitária fornecida

Parâmetros

  • unitary (numpy.ndarray) – A matriz unitária a ser sintetizada em um DAGCircuit objeto
  • 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 em UnitarySynthesisPlugin para 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

DAGCircuit

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