Skip to main content
IBM Quantum Platform

SynthesizeRZRotations

class qiskit.transpiler.passes.SynthesizeRZRotations(*args, **kwargs)

GitHub

Basi: TransformationPass

Sostituire i circuiti RZ con le decomposizioni di Clifford+T.

Questo algoritmo sostituisce tutte le porte di rotazione RZ a singolo qubit con angoli in virgola mobile con sequenze Clifford+T equivalenti.

Internamente, il passaggio sintetizza RZ(theta) per un valore generico di theta riducendo l'angolo modulo pi/2: il circuito per RZ(theta) può essere costruito a partire da un circuito per RZ(theta mod pi/2 ) aggiungendo le porte di Clifford appropriate. È importante sottolineare che il passaggio memorizza nella cache anche i risultati della sintesi e li riutilizza per angoli che rientrano in un determinato intervallo di tolleranza l'uno rispetto all'altro.

Ad esempio:

from qiskit.circuit import QuantumCircuit
from qiskit.transpiler.passes import SynthesizeRZRotations
from qiskit.quantum_info import Operator
from numpy import pi

# The following quantum circuit consists of 5 Clifford gates
# and three single-qubit RZ rotations gates

qc = QuantumCircuit(4)
qc.cx(0, 1)
qc.rz(9*pi/4, 0)
qc.cz(0, 1)
qc.rz(3*pi/8, 1)
qc.h(1)
qc.s(2)
qc.rz(13*pi/2, 2)
qc.cz(2, 0)
qc.rz(5*pi/3, 3)

qct = SynthesizeRZRotations()(qc)

# The transformed circuit consists of Clifford, T and Tdg gates
clifford_t_names = get_clifford_gate_names() + ["t"] + ["tdg"]
assert(set(qct.count_ops().keys()).issubset(set(clifford_t_names)))

# The circuits before and after the transformation are equivalent
# (with the default value of approximation_degree used by SynthesizeRZRotations)
assert Operator(qc) == Operator(qct)

Se vengono specificati cache_error sia synthesis_error che, essi indicano rispettivamente il margine di errore per la sintesi approssimativa e per la memorizzazione nella cache. Se uno dei due valori non viene specificato, l'errore totale consentito viene ricavato da approximation_degree, e i valori adeguati per synthesis_error e cache_error vengono calcolati automaticamente.

Parametri

  • approximation_degree – Controlla il grado complessivo di approssimazione. Il valore predefinito è 1 - 1e-10.
  • synthesis_error – Errore massimo consentito per la sintesi approssimativa di RZ(θ)RZ(\theta). Se specificato, deve rientrare nell'intervallo (0, 1].
  • cache_error – Errore massimo consentito quando si riutilizza un risultato di sintesi memorizzato nella cache per angoli vicini a θ\theta. Se specificato, deve rientrare nell'intervallo [0, 1].

Attributi

is_analysis_pass

Verifica se il ciclo è un ciclo di analisi.

Se il pass è di tipo « AnalysisPass, », significa che è in grado di analizzare il DAG e di scrivere i risultati di tale analisi nel set di proprietà. Questo tipo di passaggio non consente modifiche al DAG.

is_transformation_pass

Verifica se il passaggio è un passaggio di trasformazione.

Se il pass è di tipo « TransformationPass, », ciò significa che il pass può manipolare il DAG, ma non può modificare l'insieme delle proprietà (sebbene possa leggerlo).


Metodi

execute

execute(passmanager_ir, state, callback=None)

GitHub

Esegui l'operazione di ottimizzazione per l'IR di Qiskit in ingresso.

Parametri

  • passmanager_ir (DAGCircuit) – Qiskit IR da ottimizzare.
  • state (DAGCircuit) – Stato associato all'esecuzione del flusso di lavoro da parte dello stesso gestore dei passaggi.
  • callback (Callable[[Task, DAGCircuit, PropertySet, float, int], None] | None) – Una funzione di callback che viene chiamata ad ogni esecuzione di un'attività di ottimizzazione.

Risultati

IR ottimizzato di Qiskit e stato del flusso di lavoro.

Tipo di restituzione

tuple [ DAGCircuit, PassManagerState ]

name

name()

GitHub

Nome del pass.

Tipo di restituzione

STR

run

run(dag)

GitHub

Esegui il passaggio " SynthesizeRZRotations " su dag.

Parametri

dag (DAGCircuit)

Tipo di restituzione

DAGCircuit

update_status

update_status(state, run_state)

GitHub

Aggiornare lo stato del flusso di lavoro.

Parametri

  • state (PassManagerState) – Passare lo stato del gestore per l'aggiornamento.
  • run_state (RunState) – Stato di completamento dell'attività corrente.

Risultati

Stato del gestore dei pass aggiornato.

Tipo di restituzione

PassManagerState

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