SubstitutePi4Rotations
class qiskit.transpiler.passes.SubstitutePi4Rotations(*args, **kwargs)
Basi: TransformationPass
Convertire le porte di rotazione i cui angoli sono multipli interi dell' e in insiemi discreti di porte Clifford TdgGate , TGate e.
Per i gate di rotazione a un qubit (RXGate, RYGate, RZGate, PhaseGate) e i gate di rotazione a due qubit (RXXGate, RYYGate, RZZGate, RZXGate), quando l'angolo è un multiplo di , la scomposizione richiede un singolo gate TGate TdgGate o oltre ad alcuni gate di Clifford. Per i gate di rotazione controllati a due qubit (CPhaseGate, CRXGate, CRYGate, CRZGate), quando l'angolo è un multiplo di , la scomposizione richiede tre gate TGate TdgGate o per CPhaseGate e due in caso contrario, oltre ad alcuni gate di Clifford. Si noti che anche i multipli di (rispettivamente per le rotazioni controllate), o, in modo equivalente, i multipli interi di (rispettivamente per le rotazioni controllate) possono essere scritti utilizzando solo porte di Clifford.
Ad esempio:
from qiskit.circuit import QuantumCircuit
from qiskit.transpiler.passes import SubstitutePi4Rotations
from qiskit.quantum_info import Operator
# The following quantum circuit consists of 5 Clifford gates,
# four rotation gates whose angles are integer multiples of pi/4,
# and one controlled rotation gate whose angle is an integer multiple of pi/2
qc = QuantumCircuit(3)
qc.cx(0, 1)
qc.rz(pi/4, 0)
qc.cz(0, 1)
qc.rx(3*pi/4, 1)
qc.h(1)
qc.s(2)
qc.ry(2*pi/4, 2)
qc.cz(2, 0)
qc.rzz(pi/4, 0, 2)
qc.cry(3*pi/2, 2, 1)
# The transformed circuit consists of Clifford, T and Tdg gates
qct = SubstitutePi4Rotations()(qc)
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
assert Operator(qc) == Operator(qct)Parametri
approssimazione_grado – Utilizzato nei calcoli di tolleranza. Questo dà la soglia per la fedeltà media del gate.
Attributi
is_analysis_pass
Controlla se il passaggio è un passaggio di analisi.
Se il pass è un' AnalysisPass,, significa che il pass può analizzare il DAG e scrivere i risultati di tale analisi nel set di proprietà. Questo tipo di pass non consente modifiche al DAG.
is_transformation_pass
Controlla se il passaggio è un passaggio di trasformazione.
Se il pass è un " TransformationPass, ", significa che il pass può manipolare il DAG, ma non può modificare il set di proprietà (che però può essere letto).
Metodi
execute
execute(passmanager_ir, state, callback=None)
Esegui attività di ottimizzazione per input Qiskit IR.
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
Qiskit IR ottimizzato e stato del flusso di lavoro.
Tipo di restituzione
name
run
run(dag)
Esegui il passaggio di ottimizzazione Sostituisci Pi4-Rotations su dag.
Parametri
dag (DAGCircuit) – il DAG di input.
Risultati
Il DAG di output.
Tipo di restituzione
update_status
update_status(state, run_state)
Aggiorna 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 pass aggiornato.
Tipo di restituzione