Skip to main content
IBM Quantum Platform

CNOTDihedral

class qiskit.quantum_info.CNOTDihedral(data=None, num_qubits=None, validate=True)

GitHub

Basi: BaseOperator, AdjointMixin

Un operatore N-qubit del gruppo CNOT-Diedrale.

Il gruppo CNOT-Dihedral è generato dalle porte quantistiche, CXGate, TGate, e XGate.

Rappresentazione

Un operatore CNOT-Diedrale NN -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 N×NN \times N e in un vettore binario NN.

Il polinomio di fase è un polinomio di grado massimo 3, in NN 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, TdgGate SGate, SdgGate, CXGate CZGate, CSGate, CSdgGate,, SwapGate, CCZGate. Possono essere riconvertiti in un oggetto, o Gate utilizzando rispettivamente i to_circuit() metodi o to_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 Operator utilizzando il metodo to_operator() metodo. Ciò avviene tramite la scomposizione in un circuito e la successiva simulazione del circuito come operatore unitario.

Riferimenti:

  1. Shelly Garion e Andrew W. Cross, Synthesis of CNOT-Dihedral circuits with optimal number of two qubit gates, Quantum 4(369), 2020
  2. 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

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

adjoint()

GitHub

Restituisce l'adjoint dell'Operatore.

compose

compose(other, qargs=None, front=False)

GitHub

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

CNOTDiedro

Aumenti

QiskitError – se l’altro non può essere convertito in un operatore o presenta dimensioni incompatibili con i sottosistemi specificati.

Nota

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

conjugate()

GitHub

Restituisce il coniugato di CNOTDihedral.

copy

copy()

GitHub

Eseguire una copia profonda dell'operatore corrente.

dot

dot(other, qargs=None)

GitHub

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

Operatore

Nota

Il prodotto di punti può essere ottenuto utilizzando l'operatore binario @ . Quindi a.dot(b) è equivalente a a @ b.

expand

expand(other)

GitHub

Restituisce il prodotto tensoriale di ordine inverso con un altro CNOTDihedral.

Parametri

other (CNOTDihedral) – un oggetto CNOTDihedral.

Risultati

il prodotto tensoriale bab \otimes a, dove aa

è il CNOTDiedro corrente e bb è l'altro CNOTDiedro.

Tipo di restituzione

CNOTDiedro

input_dims

input_dims(qargs=None)

GitHub

Restituisce una tupla di dimensioni di ingresso per i sottosistemi specificati.

output_dims

output_dims(qargs=None)

GitHub

Restituisce una tupla di dimensioni di uscita per i sottosistemi specificati.

power

power(n)

GitHub

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

Clifford

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)

GitHub

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)

GitHub

Restituisce il prodotto tensoriale con un altro CNOTDihedral.

Parametri

other (CNOTDihedral) – un oggetto CNOTDihedral.

Risultati

il prodotto tensoriale aba \otimes b, dove aa

è il CNOTDiedro corrente e bb è l'altro CNOTDiedro.

Tipo di restituzione

CNOTDiedro

Nota

Il prodotto tensoriale può essere ottenuto utilizzando l'operatore binario ^ . Quindi a.tensor(b) è equivalente a a ^ b.

to_circuit

to_circuit()

GitHub

Restituisce un QuantumCircuit che implementa l'elemento CNOT-Dihedral.

Risultati

un'implementazione circuitale dell'oggetto CNOTDihedral.

Tipo di restituzione

QuantumCircuit

Riferimenti

  1. Shelly Garion e Andrew W. Cross, Synthesis of CNOT-Dihedral circuits with optimal number of two qubit gates, Quantum 4(369), 2020
  2. 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).

to_instruction

to_instruction()

GitHub

Restituisce un'istruzione Gate che implementa l'oggetto CNOTDihedral.

to_matrix

to_matrix()

GitHub

Converte l'operatore in matrice Numpy.

to_operator

to_operator()

GitHub

Convertire in un oggetto Operatore.

Tipo di restituzione

Operatore

transpose

transpose()

GitHub

Restituisce la trasposizione di CNOTDihedral.

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