Skip to main content
IBM Quantum Platform

AQCSynthesisPlugin

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

GitHub

Basi: UnitarySynthesisPlugin

Un plugin di sintesi unitaria Qiskit basato su AQC.

Questo plugin viene attivato quando transpile() il unitary_synthesis_method parametro è impostato su "aqc".

Questo plugin supporta la personalizzazione ed è possibile fornirgli parametri aggiuntivi passando un dizionario come parametro unitary_synthesis_plugin_config della transpile() funzione.

Parametri supportati nel dizionario:

layout_di_rete (str)

Tipo di geometria della rete, uno dei seguenti {"sequ", "spin", "cart", "cyclic_spin", "cyclic_line"}. Il valore predefinito è "spin".

tipo di connettività (str)

tipo di connettività inter-qubit, {"full", "line", "star"}. Il valore predefinito è "full".

profondità (int)

profondità della rete CNOT, ossia il numero di strati, dove ogni strato è costituito da un singolo blocco CNOT.

ottimizzatore (Minimizer)

Un'implementazione del protocollo Minimizer da utilizzare nel processo di ottimizzazione.

seme (int)

Un seme casuale.

punto_iniziale (ndarray)

Valori iniziali di angoli/parametri da cui avviare il processo di ottimizzazione.


Attributi

max_qubits

Il numero massimo di qubit supportati è 14.

min_qubits

Il numero minimo di qubit supportati è 3.

supported_bases

Il plugin non supporta le basi per la sintesi.

supports_basis_gates

Il plugin non supporta le porte di base e per impostazione predefinita sintetizza un circuito utilizzando la base della porta ["rx", "ry", "rz", "cx"] .

supports_coupling_map

Il plugin non supporta le mappe di accoppiamento.

supports_gate_errors

Il plugin non supporta gli errori di gate.

supports_gate_errors_by_qubit

Restituisce se il plugin supporta l'acquisizione di gate_errors_by_qubit

Si differenzia da supports_gate_errors/gate_errors per l'utilizzo di una visione diversa degli stessi dati. Invece di essere codificato in base al nome del gate, è codificato in base al qubit e utilizza le istanze per rappresentare i gate (invece dei nomi dei gate) Gate per rappresentare i gate (invece dei nomi dei gate).

gate_errors_by_qubit sarà un dizionario nella forma di {(qubits,): [Gate, error]}. Ad esempio:

{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}

Si noti che questo dizionario potrebbe non essere completo o essere vuoto, poiché dipende dal backend di destinazione che riporta gli errori di gate su ogni gate per ogni qubit. I tassi di errore di gate riportati in gate_errors sono forniti dall'oggetto Backend del dispositivo di destinazione e il significato esatto potrebbe essere diverso a seconda del backend.

L'impostazione predefinita è False

supports_gate_lengths

Il plugin non supporta le lunghezze dei gate.

supports_gate_lengths_by_qubit

Restituisce se il plugin supporta l'acquisizione di gate_lengths_by_qubit

Si differenzia da supports_gate_lengths/gate_lengths per l'utilizzo di una visione diversa degli stessi dati. Invece di essere codificato in base al nome del gate, è codificato in base al qubit e utilizza le istanze per rappresentare i gate (invece dei nomi dei gate) Gate per rappresentare i gate (invece dei nomi dei gate)

gate_lengths_by_qubit sarà un dizionario nella forma di {(qubits,): [Gate, length]}. Ad esempio:

{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}

dove il valore length è in unità di secondi.

Si noti che questo dizionario potrebbe non essere completo o essere vuoto, poiché dipende dal backend di destinazione che riporta le lunghezze dei gate su ogni gate per ogni qubit.

L'impostazione predefinita è False

supports_natural_direction

Il plugin non supporta la direzione naturale e presuppone porte bidirezionali a due qubit.

supports_pulse_optimize

Il plugin non supporta l'ottimizzazione degli impulsi.

supports_target

Il plugin supporta o meno l'opzione target ?

target sarà un Target che rappresenta il dispositivo di destinazione per l'uscita del passaggio di sintesi.

Per impostazione predefinita, questo sarà False , poiché l'interfaccia del plugin è precedente alla classe Target della classe. Se un plugin restituisce True per questo attributo, si prevede che il plugin utilizzi il parametro Target invece dei valori passati se uno qualsiasi di supports_gate_lengths, supports_gate_errors, supports_coupling_map e supports_basis_gates è impostato (anche se idealmente tutti questi parametri dovrebbero contenere informazioni duplicate).


Metodi

run

run(unitary, **options)

GitHub

Eseguire la sintesi per la matrice unitaria data

Parametri

  • unitary (numpy.ndarray) – La matrice unitaria da sintetizzare in un DAGCircuit oggetto
  • options - I kwarg opzionali che vengono passati in base all'output dei metodi support_* sulla classe. Consultare la documentazione di questi metodi su UnitarySynthesisPlugin per vedere quali sono le chiavi e i valori.

Risultati

La rappresentazione del circuito dag dell'unitario. In alternativa, si può restituire una tupla della forma (dag, wires) dove dag è la rappresentazione circuitale dag della rappresentazione circuitale dell'unitario e wires è la mappatura dei fili da utilizzare per qiskit.dagcircuit.DAGCircuit.substitute_node_with_dag(). Se si restituisce una tupla e wires è None , questo si comporterà come se fosse stata restituita solo una tupla DAGCircuit è stato restituito. Inoltre, se il risultato è None , non verrà effettuata alcuna sostituzione.

Tipo di ritorno

DAGCircuito

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.