Utilità operatore
qiskit_addon_obp.utils.operations
Funzioni di utilità per la retropropagazione operatore.
apply_op_to
apply_op_to(op1, op1_qargs, op2, op2_qargs, *, apply_as_transform=False)
Applicare l'operatore op2 all'operatore op1.
Questi operatori non devono necessariamente agire sullo stesso numero di qubit, poiché si presume che agiscano su un sistema più ampio. La posizione nel sistema di ogni operatore è definita dal corrispondente qargs. L'operatore di uscita sarà definito su union(op1_qargs, op2_qargs).
Per impostazione predefinita, questa funzione applica op1 a op2 nel modo seguente:
op2 @ op1
Impostando apply_as_transform=True, questa funzione applica op1 a op2 nel modo seguente:
op2.adjoint() @ op1 @ op2
Parametri
- op1 (SparsePauliOp) – L'operatore su cui verrà applicato
op2. - op1_qargs (list[int]) – Gli indici dei qubit per
op1. - op2 (SparsePauliOp) – L'operatore da applicare a
op1. - op2_qargs (list[int]) – Gli indici dei qubit per
op2. - apply_as_transform (bool) – Se applicare
op2aop1come trasformazione.
Risultati
La tupla (op, qargs) dove op è l'input op1 con op2 applicato a sinistra e qargs è una lista di indici di qubit per il nuovo operatore op. Gli ID dei qubit in uscita op corrispondono all'ID del qubit globale nello stesso indice in qargs.
Per esempio, se l'uscita op è un SparsePauliOp("YX") e qargs è [3, 4], il termine X sul qubit 0 dell'operatore corrisponde al qubit ID globale 3.
Aumenti
ValueError - Il numero di qarg unici dell'operatore deve corrispondere al numero di qubit dell'operatore corrispondente.
Tipo di restituzione
tupla [*SparsePauliOp*, lista[ int ]]
apply_reset_to
apply_reset_to(op, qubit_id, inplace=False)
Applicare un'operazione di reset a un operatore di Pauli.
Questa funzione applica un'operazione di reset a op nel modo seguente:
<0|op|0>
I termini contenenti termini Pauli X o Y su qubit-qubit_id avranno il loro peso ridotto a 0.0. I termini contenenti Pauli Z su qubit_id avranno tale Pauli Z sostituito da un'identità.
Parametri
- op (SparsePauliOp) – L'operatore a cui verrà applicato il reset.
- qubit_id (int) – Indice del qubit su cui applicare il reset.
- inplace (bool) – Se modificare l'operatore in loco.
Risultati
L'operatore trasformato
Tipo di restituzione
to_global_op
to_global_op(op, qargs, n_qubits)
Converte un operatore locale in un operatore globale inserendo identità sui qubit non utilizzati.
Parametri
- op (SparsePauliOp) – Operatore locale in espansione.
- qargs (list[int]) – Indici Qubit per l'operatore locale.
- n_qubits (int) – Numero di qubit nel sistema globale.
Risultati
Un operatore su n_qubits qubit
Aumenti
ValueError - ID Qubit fuori portata
Tipo di restituzione
reduce_op
reduce_op(global_op)
Creare una rappresentazione snella di un operatore di Pauli globale.
Questa funzione restituisce una rappresentazione snella dell'operatore in ingresso, in cui tutti i qubit associati esclusivamente ai termini di Pauli-I sono stati rimossi. Viene restituito anche un elenco di indici che indicano su quali qubit agisce l'operatore lean.
Ad esempio:
>>> global_op = SparsePauliOp(["IXI", "IIZ"])
>>> reduced_op, qargs = reduce_op(global_op)
>>> reduced_op
SparsePauliOp(['XI', 'IZ'],
coeffs=[1.+0.j, 1.+0.j])
>>> qargs
[0, 1]Parametri
global_op (SparsePauliOp) – L'operatore globale per il quale generare una rappresentazione snella
Risultati
- Una rappresentazione snella dell'operatore di input con i qubit associati ai soli termini di identità rimossi.
- Un elenco di indici che specificano i qubit su cui agisce l'operatore lean.
Aumenti
ValueError - L'operatore di input non può essere l'operatore di identità.
Tipo di restituzione
tupla [*SparsePauliOp*, lista[ int ]]