PiecewisePolynomialPauliRotations
class qiskit.circuit.library.PiecewisePolynomialPauliRotations(num_state_qubits=None, breakpoints=None, coeffs=None, basis='Y', name='pw_poly')
Basi: FunctionalPauliRotations
Rotazioni di Pauli controllate in modo frammentario e polinomiale.
Questa classe implementa una funzione polinomiale piecewise (non necessariamente continua), , sulle ampiezze dei qubit, definita attraverso punti di interruzione e coefficienti come segue. Supponiamo che i breakpoint siano un sottoinsieme di , dove è il numero di qubit di stato. In seguito, denotiamo i coefficienti corrispondenti con , dove è il grado più alto tra tutti i polinomi.
Allora è definito come:
dove se viene dato lo stesso numero di breakpoint dei polinomi, si assume implicitamente .
Si noti il fattore nei coefficienti di , che è coerente con le rotazioni di Pauli di Qiskit.
Esempi
>>> from qiskit import QuantumCircuit
>>> from qiskit.circuit.library.arithmetic.piecewise_polynomial_pauli_rotations import\
... PiecewisePolynomialPauliRotations
>>> qubits, breakpoints, coeffs = (2, [0, 2], [[0, -1.2],[-1, 1, 3]])
>>> poly_r = PiecewisePolynomialPauliRotations(num_state_qubits=qubits,
...breakpoints=breakpoints, coeffs=coeffs)
>>>
>>> qc = QuantumCircuit(poly_r.num_qubits)
>>> qc.h(list(range(qubits)));
>>> qc.append(poly_r.to_instruction(), list(range(qc.num_qubits)));
>>> qc.draw()
┌───┐┌──────────┐
q_0: ┤ H ├┤0 ├
├───┤│ │
q_1: ┤ H ├┤1 ├
└───┘│ │
q_2: ─────┤2 ├
│ pw_poly │
q_3: ─────┤3 ├
│ │
q_4: ─────┤4 ├
│ │
q_5: ─────┤5 ├
└──────────┘Riferimenti:
[1] Haener, T., Roetteler, M., e Svore, K. M. (2018). Ottimizzazione dei circuiti quantistici per l'aritmetica. arXiv:1805.12445
[2] Carrera Vazquez, A., Hiptmair, R. e Woerner, S. (2022). Miglioramento dell'algoritmo dei sistemi lineari quantistici mediante l'estrapolazione di Richardson. ACM Transactions on Quantum Computing 3, 1, Articolo 2
La classe qiskit.circuit.library.arithmetic.piecewise_polynomial_pauli_rotations.PiecewisePolynomialPauliRotations è deprecata a partire da Qiskit 2.2. Verrà rimosso in Qiskit 3.0. Utilizzare invece la classe PiecewisePolynomialPauliRotationsGate.
Parametri
- num_state_qubits (int | None) – Il numero di qubit che rappresentano lo stato.
- breakpoints (list[int] | None) – I punti di discontinuità per definire la funzione a tratti lineare. Il valore predefinito è
[0]. - coeffs (list[list[float]] | None) – I coefficienti dei polinomi relativi ai diversi segmenti della funzione a tratti lineare.
coeffs[j][i]è il coefficiente della i-esima potenza di x per il j-esimo polinomio. L'impostazione predefinita è lineare:[[1]]. - basis (str) – Il tipo di rotazione Pauli (
'X','Y','Z'). - name (str) – Il nome del circuito.
Attributi
breakpoints
I punti di discontinuità della funzione polinomiale a tratti.
La funzione è polinomiale negli intervalli [point_i, point_{i+1}] dove l'ultimo punto è implicitamente 2**(num_state_qubits + 1).
Risultati
L'elenco dei punti di interruzione.
coeffs
I coefficienti dei polinomi.
Risultati
I coefficienti polinomiali per intervallo come liste annidate.
contains_zero_breakpoint
Se 0 è il primo punto di interruzione.
Risultati
Vero, se 0 è il primo punto di interruzione, altrimenti Falso.
mapped_coeffs
I coefficienti mappati nella rappresentazione interna, poiché confrontiamo solo x>=breakpoint.
Risultati
I coefficienti mappati.
name
Tipo: str
Un nome leggibile per il circuito.
Esempio
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)my_circuit