Skip to main content
IBM Quantum Platform

UnitaryOverlap

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

GitHub

Bases : QuantumCircuit

Circuit qui renvoie le chevauchement entre deux unitaires U2U1U_2^{\dag} U_1.

Les circuits quantiques d'entrée doivent représenter des opérations unitaires, puisqu'ils doivent être inversables. Si les entrées ont des paramètres, ceux-ci sont remplacés par des ParameterVectoravec les noms “p1” (pour le circuit unitary1) et “p2” (pour le circuit unitary_2) dans le circuit de sortie.

Ce circuit est généralement utilisé pour calculer la fidélité :

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

en calculant la probabilité d'être dans la chaîne de bits tous zéros, ou, de manière équivalente, la valeur d'espérance du projecteur 00|0\rangle\langle 0|.

Exemple :

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)
Déclassé depuis la version 2.1

La classe qiskit.circuit.library.overlap.UnitaryOverlap est obsolète depuis Qiskit 2.1. Elle sera supprimée à Qiskit 3.0. Utilisez plutôt qiskit.circuit.library.unitary_overlap.

Paramètres

  • unitary1 (QuantumCircuit) – Opération unitaire agissant sur le vecteur ket.
  • unitary2 (QuantumCircuit) – Unitaire dont l'inverse agit sur le vecteur bra.
  • prefix1 (str) – Le nom du vecteur de paramètres associé à unitary1, s'il est paramétré. La valeur par défaut est "p1".
  • prefix2 (str) – Le nom du vecteur de paramètres associé à unitary2, s'il est paramétré. La valeur par défaut est "p2".
  • insert_barrier (bool) – Insérer ou non une barrière entre les deux unitaires.

Augmentations

  • CircuitError – Le nombre de qubits dans unitary1 et unitary2 ne correspond pas.
  • CircuitError – Les entrées contiennent des mesures et/ou des réinitialisations.

Attributs

name

Type : str

Un nom lisible par l'homme pour le circuit.

Exemple

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.