Skip to main content
IBM Quantum Platform

SubstitutePi4Rotations

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

GitHub

Basi: TransformationPass

Convertire le porte di rotazione i cui angoli sono multipli interi dell' π/4\pi/4 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 π/4\pi/4, 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 π/2\pi/2, 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 π/4\pi/4 (rispettivamente π/2\pi/2 per le rotazioni controllate), o, in modo equivalente, i multipli interi di π/2\pi/2 (rispettivamente π\pi 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)

GitHub

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

tuple [ DAGCircuit, PassManagerState ]

name

name()

GitHub

Nome del passo.

Tipo di restituzione

STR

run

run(dag)

GitHub

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

Circuito DAG

update_status

update_status(state, run_state)

GitHub

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

PassManagerState

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