CNOTDihedral
class qiskit.quantum_info.CNOTDihedral(data=None, num_qubits=None, validate=True)
Basi: BaseOperator, AdjointMixin
Un operatore N-qubit del gruppo CNOT-Diedrale.
Il gruppo CNOT-Dihedral è generato dalle porte quantistiche,
CXGate,TGate, eXGate.Rappresentazione
Un operatore CNOT-Diedrale -qubit è memorizzato come una funzione affine e un polinomio di fase, in base alla convenzione di cui ai riferimenti [1, 2].
La funzione affine consiste in una matrice binaria invertibile e in un vettore binario .
Il polinomio di fase è un polinomio di grado massimo 3, in variabili, i cui coefficienti sono nell'anello Z_8 con 8 elementi.
from qiskit import QuantumCircuit from qiskit.quantum_info import CNOTDihedral circ = QuantumCircuit(3) circ.cx(0, 1) circ.x(2) circ.t(1) circ.t(1) circ.t(1) elem = CNOTDihedral(circ) # Print the CNOTDihedral element print(elem)
phase polynomial =
0 + 3*x_0 + 3*x_1 + 2*x_0*x_1
affine function =
(x_0,x_0 + x_1,x_2 + 1)Conversione del circuito
QuantumCircuitGli operatori CNOTDihedral possono essere inizializzati a partire da circuiti contenenti esclusivamente le seguenti porte:IGate,XGate,YGate,ZGate,TGate,TdgGateSGate,SdgGate,CXGateCZGate,CSGate,CSdgGate,,SwapGate,CCZGate. Possono essere riconvertiti in un oggetto, oGateutilizzando rispettivamente ito_circuit()metodi oto_instruction(). Si noti che questa scomposizione non è necessariamente ottimale in termini di numero di porte se il numero di qubit è superiore a due.Gli operatori CNOTDihedral possono anche essere convertiti in
Operatorutilizzando il metodoto_operator()metodo. Ciò avviene tramite la scomposizione in un circuito e la successiva simulazione del circuito come operatore unitario.Riferimenti:
- Shelly Garion e Andrew W. Cross, Synthesis of CNOT-Dihedral circuits with optimal number of two qubit gates, Quantum 4(369), 2020
- Andrew W. Cross, Easwar Magesan, Lev S. Bishop, John A. Smolin e Jay M. Gambetta, Scalable randomized benchmarking of non-Clifford gates, npj Quantum Inf 2, 16012 (2016).
Inizializza un oggetto operatore CNOTDihedral.
Parametri
- data (CNOTDihedral orQuantumCircuit orInstruction) – operatore da inizializzare.
- num_qubits (int) – inizializzare un operatore CNOTDihedral vuoto.
- validate (bool) – se Vero, convalida l'elemento CNOTDihedral.
Aumenti
- QiskitError – se il tipo non è valido.
- QiskitError – se validate=True e l'elemento CNOTDihedral non è valido.
Attributi
dim
Restituisce una tupla (forma_input, forma_output).
name
Identificatore univoco del tipo di operazione.
num_clbits
Numero di bit classici.
num_qubits
Restituisce il numero di qubit se si tratta di un operatore a N qubit o altrimenti None.
qargs
Restituisce i qarg per l'operatore.
Metodi
adjoint
compose
compose(other, qargs=None, front=False)
Restituisce l'operatore di composizione con un altro CNOTDihedral.
Parametri
- other (CNOTDihedral) – un oggetto CNOTDihedral.
- qargs (list or None) – un elenco delle posizioni dei sottosistemi su cui applicare altre operazioni. Se "None" si applica a tutti i sottosistemi (impostazione predefinita: None).
- front (bool) – Se True, componi utilizzando la moltiplicazione dell'operatore a destra, invece della moltiplicazione a sinistra, [impostazione predefinita: False].
Risultati
Il composto CNOTDihedral.
Tipo di restituzione
Aumenti
QiskitError – se l’altro non può essere convertito in un operatore o presenta dimensioni incompatibili con i sottosistemi specificati.
La composizione (&) per default è definita come moltiplicazione matriciale sinistra per gli operatori matriciali, mentre @ (equivalente a dot()) è definita come moltiplicazione matriciale destra. Cioè A & B == A.compose(B) è equivalente a B @ A == B.dot(A) quando A e B sono dello stesso tipo.
Impostando il kwarg front=True si passa alla moltiplicazione matriciale destra ed è equivalente al metodo dot()A.dot(B) == A.compose(B, front=True) .
conjugate
copy
dot
dot(other, qargs=None)
Restituisce l'operatore moltiplicato a destra self * altro.
Parametri
- other (Operator) – un oggetto operatore.
- qargs (list or None) – un elenco delle posizioni dei sottosistemi su cui applicare altre operazioni. Se "None" si applica a tutti i sottosistemi (impostazione predefinita: None).
Risultati
La matrice destra moltiplicata Operatore.
Tipo di restituzione
Il prodotto di punti può essere ottenuto utilizzando l'operatore binario @ . Quindi a.dot(b) è equivalente a a @ b.
expand
expand(other)
Restituisce il prodotto tensoriale di ordine inverso con un altro CNOTDihedral.
Parametri
other (CNOTDihedral) – un oggetto CNOTDihedral.
Risultati
il prodotto tensoriale , dove
è il CNOTDiedro corrente e è l'altro CNOTDiedro.
Tipo di restituzione
input_dims
input_dims(qargs=None)
Restituisce una tupla di dimensioni di ingresso per i sottosistemi specificati.
output_dims
output_dims(qargs=None)
Restituisce una tupla di dimensioni di uscita per i sottosistemi specificati.
power
power(n)
Restituisce il risultato dell'applicazione di un operatore su se stesso per n volte.
Parametri
n (int) – il numero di volte che si compone con il sé ( n>0 ).
Risultati
l'operatore composto n volte.
Tipo di restituzione
Aumenti
QiskitError – se le dimensioni di ingresso e di uscita dell'operatore non sono uguali, oppure se la potenza non è un numero intero positivo.
reshape
reshape(input_dims=None, output_dims=None, num_qubits=None)
Restituisce una copia superficiale con le dimensioni dei sottosistemi di ingresso e di uscita rimodellate.
Parametri
- input_dims (None or tuple) – nuove dimensioni di input del sottosistema. Se Nessuno, le attenuazioni dell'input originale verranno mantenute. [Predefinito: Nessuno].
- output_dims (None or tuple) – nuove dimensioni di uscita del sottosistema. Se Nessuno, le gradazioni di output originali verranno mantenute. [Predefinito: Nessuno].
- num_qubits (None or int) – rimodella in un operatore N-qubit [Predefinito: Nessuno].
Risultati
restituisce self con le dimensioni di ingresso e di uscita rimodellate.
Tipo di restituzione
BaseOperator
Aumenti
QiskitError – se la somma delle dimensioni di ingresso o di uscita di tutti i sottosistemi non è costante.
tensor
tensor(other)
Restituisce il prodotto tensoriale con un altro CNOTDihedral.
Parametri
other (CNOTDihedral) – un oggetto CNOTDihedral.
Risultati
il prodotto tensoriale , dove
è il CNOTDiedro corrente e è l'altro CNOTDiedro.
Tipo di restituzione
Il prodotto tensoriale può essere ottenuto utilizzando l'operatore binario ^ . Quindi a.tensor(b) è equivalente a a ^ b.
to_circuit
to_circuit()
Restituisce un QuantumCircuit che implementa l'elemento CNOT-Dihedral.
Risultati
un'implementazione circuitale dell'oggetto CNOTDihedral.
Tipo di restituzione
Riferimenti
- Shelly Garion e Andrew W. Cross, Synthesis of CNOT-Dihedral circuits with optimal number of two qubit gates, Quantum 4(369), 2020
- Andrew W. Cross, Easwar Magesan, Lev S. Bishop, John A. Smolin e Jay M. Gambetta, Scalable randomized benchmarking of non-Clifford gates, npj Quantum Inf 2, 16012 (2016).