Skip to main content
IBM Quantum Platform

UnitaryOverlap

class qiskit.circuit.library.UnitaryOverlap(unitary1, unitary2, prefix1='p1', prefix2='p2', insert_barrier=False)

GitHub

Basi: QuantumCircuit

Circuito che restituisce la sovrapposizione tra due unitari U2U1U_2^{\dag} U_1.

I circuiti quantistici di ingresso devono rappresentare operazioni unitarie, poiché devono essere invertibili. Se gli ingressi hanno dei parametri, questi vengono sostituiti da ParameterVectors con i nomi “p1” (per il circuito unitary1) e “p2” (per il circuito unitary_2) nel circuito di uscita.

Questo circuito viene solitamente utilizzato per calcolare la fedeltà:

0U2U102\left|\langle 0| U_2^{\dag} U_1|0\rangle\right|^{2}

calcolando la probabilità di essere nella stringa di bit all-zeros o, equivalentemente, il valore di aspettativa del proiettore 00|0\rangle\langle 0|.

Esempio:

import numpy as np
from qiskit.circuit.library import EfficientSU2, UnitaryOverlap
from qiskit.primitives import Sampler

# get two circuit to prepare states of which we compute the overlap
circuit = EfficientSU2(2, reps=1)
unitary1 = circuit.assign_parameters(np.random.random(circuit.num_parameters))
unitary2 = circuit.assign_parameters(np.random.random(circuit.num_parameters))

# create the overlap circuit
overlap = UnitaryOverlap(unitary1, unitary2)

# sample from the overlap
sampler = Sampler(options={"shots": 100})
result = sampler.run(overlap).result()

# the fidelity is the probability to measure 0
fidelity = result.quasi_dists[0].get(0, 0)
Deprecato dalla versione 2.1

La classe qiskit.circuit.library.overlap.UnitaryOverlap è deprecata a partire da Qiskit 2.1. Verrà rimosso in Qiskit 3.0. Utilizzare invece qiskit.circuit.library.unitary_overlap.

Parametri

  • unitary1 (QuantumCircuit) – Operatore unitario che agisce sul vettore ket.
  • unitary2 (QuantumCircuit) – Unitario il cui inverso agisce sul vettore bra.
  • prefix1 (str) – Il nome del vettore di parametri associato a unitary1, se è parametrizzato. L'impostazione predefinita è "p1".
  • prefix2 (str) – Il nome del vettore di parametri associato a unitary2, se è parametrizzato. L'impostazione predefinita è "p2".
  • insert_barrier (bool) – Se inserire una barriera tra le due unità.

Aumenti

  • CircuitError – Il numero di qubit in unitary1 e unitary2 non corrisponde.
  • CircuitError – Gli input contengono valori di misura e/o comandi di azzeramento.

Attributi

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
Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.