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

Circuito que retorna a sobreposição entre duas unidades U2U1U_2^{\dag} U_1.

Os circuitos quânticos de entrada devem representar operações unitárias, pois devem ser invertíveis. Se as entradas tiverem parâmetros, eles serão substituídos por ParameterVectors com os nomes “p1” (para o circuito unitary1) e “p2” (para o circuito unitary_2) no circuito de saída.

Esse circuito é normalmente empregado no cálculo da fidelidade:

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

calculando a probabilidade de estar na cadeia de bits all-zeros ou, de forma equivalente, o valor esperado do projetor 00|0\rangle\langle 0|.

Exemplo:

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)
Descontinuado desde a versão 2.1

A classe qiskit.circuit.library.overlap.UnitaryOverlap está obsoleta desde o Qiskit 2.1. Ele será removido no Qiskit 3.0. Em vez disso, use qiskit.circuit.library.unitary_overlap.

Parâmetros

  • unitary1 (QuantumCircuit) – Unidade atuando no vetor ket.
  • unitary2 (QuantumCircuit) – Unitária cujo inverso opera no vetor bra.
  • prefix1 (str) – O nome do vetor de parâmetros associado a unitary1, se ele for parametrizado. O padrão é "p1".
  • prefix2 (str) – O nome do vetor de parâmetros associado a unitary2, se ele for parametrizado. O padrão é "p2".
  • insert_barrier (bool) – Se deve inserir uma barreira entre as duas unidades.

Aumentos

  • CircuitError - O número de qubits em unitary1 e unitary2 não corresponde.
  • CircuitError - As entradas contêm medições e/ou redefinições.

Atributos

name

Tipo: str

Um nome legível por humanos para o circuito.

Exemplo

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.