Skip to main content
IBM Quantum Platform

LitinskiTransformation

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

GitHub

Basi: TransformationPass

Applica la trasformata di Litinski a un circuito.

La trasformazione si applica a un circuito contenente porte Clifford, porte di rotazione di un singolo qubit RZR_Z, porte di rotazione RXR_X e porte di rotazione RYR_Y (comprese PhasePhase, TT e TT^\dagger ), rotazioni del prodotto di Pauli, misurazioni del prodotto di Pauli e misurazioni standard ZZ. La trasformazione sposta i gate di Clifford alla fine del circuito, compresi i gate di rotazione a singolo qubit, le rotazioni del prodotto di Pauli e le misurazioni del prodotto di Pauli, il cui angolo è un multiplo di π/2\pi/2. Nel processo, trasforma le rotazioni RZR_Z, i gate di rotazione RXR_X e RYR_Y in rotazioni del prodotto di Pauli, e le misurazioni ZZ in misurazioni del prodotto di Pauli.

Il passaggio supporta tutte le porte di Clifford nell'elenco restituito da get_clifford_gate_names():

["id", "x", "y", "z", "h", "s", "sdg", "sx", "sxdg", "cx", "cz", "cy", "swap","iswap", "ecr", "dcx"]

Inoltre, sono considerati Clifford anche i cancelli di rotazione sopra indicati con angoli che sono multipli interi di π/2\pi/2 entro la tolleranza specificata.

Esempio:

from qiskit import generate_preset_pass_manager
from qiskit.circuit import QuantumCircuit
from qiskit.circuit.library import PauliProductMeasurement, PauliProductRotationGate
from qiskit.quantum_info import Pauli
from qiskit.transpiler.passes import LitinskiTransformation

litinski = LitinskiTransformation(fix_clifford=False, use_ppr=True)

rz_basis = ["rz", "h", "x", "cx"]
pm = generate_preset_pass_manager(basis_gates=rz_basis)
pm.optimization.append(litinski)

qc = QuantumCircuit(3, 1)
qc.h(0)
qc.rz(1.23, 0)
qc.cx(0, 1)
qc.t(1)
qc.append(PauliProductRotationGate(Pauli("XY"), 0.456), [1, 2])
qc.cx(1, 2)
qc.append(PauliProductMeasurement(Pauli("ZX")), [0, 1], [0])
qc.measure(2, 0)


pbc = pm.run(qc)

Riferimenti:

[1] Litinski. Un gioco di codici di superficie. Quantum 3, 128 (2019)

Parametri

  • fix_clifford – Se False (impostazione non predefinita), il circuito restituito contiene solo PauliEvolution porte, con le porte di Clifford finali omesse. Si noti che in questo caso gli operatori dei circuiti originale e sintetizzato non saranno generalmente equivalenti.
  • insert_barrier – Se True e fix_clifford=True, inserisci una barriera tra il circuito e i Clifford finali. Questa condizione non ha alcun effetto se fix_clifford=False.
  • use_ppr – Se True, utilizzare PauliProductRotationGate per rappresentare i gate di rotazione di Pauli. Si consiglia di seguire questa procedura per migliorare le prestazioni utilizzando un percorso interamente basato su Rust. Se False o None, usa PauliEvolutionGate.
  • approximation_degree – Utilizzato nei calcoli di tolleranza per verificare quanto un PPR o un gate di rotazione si avvicini a un Clifford. Questo valore rappresenta la soglia della fedeltà media del gate.

Attributi

is_analysis_pass

Controlla se il passaggio è un passaggio di analisi.

Se il passo è un AnalysisPass,, significa che il passo può analizzare il DAG e scrivere i risultati di tale analisi nel set di proprietà. Questo tipo di passaggio non consente di modificare il DAG.

is_transformation_pass

Controlla se il passaggio è un passaggio di trasformazione.

Se il passaggio è un TransformationPass,, significa che il passaggio può manipolare il DAG, ma non può modificare il set di proprietà (ma può essere letto).


Metodi

execute

execute(passmanager_ir, state, callback=None)

GitHub

Eseguire l'attività di ottimizzazione per l'IR 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

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 " LitinskiTransformation " su dag.

Parametri

dag (DAGCircuit) – Il DAG di input.

Risultati

Il DAG di uscita.

Aumenti

TranspilerError – Se il circuito contiene porte non supportate dal pass.

Tipo di restituzione

DAGCircuito

update_status

update_status(state, run_state)

GitHub

Aggiornare lo stato del flusso di lavoro.

Parametri

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

Risultati

Stato aggiornato del gestore dei passaggi.

Tipo di restituzione

PassManagerState

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