Skip to main content
IBM Quantum Platform

UnitaryOverlap

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

GitHub

ベース: QuantumCircuit

2つのユニタリーの重なりを返す回路 U2U1U_2^{\dag} U_1

入力量子回路は反転可能でなければならないため、ユニタリー演算を表現しなければならない。 入力がパラメータを持つ場合、出力回路ではパラメータは ParameterVectorに置き換えられる。出力回路では、 “p1” (回路 unitary1 )と “p2” (回路 unitary_2 )という名前になる。

この回路は通常、忠実度を計算する際に採用される:

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

全ゼロビット列に含まれる確率を計算することによって、あるいは等価的に、プロジェクター 00|0\rangle\langle 0| の期待値を計算することによって。

例:

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)
バージョンから非推奨 2.1

クラス qiskit.circuit.library.overlap.UnitaryOverlap は Qiskit 2.1 で非推奨となりました。 Qiskit 3.0 で削除されます。 代わりに qiskit.circuit.library.unitary_overlap。

パラメーター

  • unitary1 (QuantumCircuit) – ケットベクトルに作用するユニタリー。
  • unitary2 (QuantumCircuit) – 逆数がブラ・ベクトルに作用するユニタリー。
  • prefix1 (str) – パラメータ化されている場合、 unitary1 に関連付けられたパラメータ・ベクタの名前。 デフォルトは "p1"
  • prefix2 (str) – パラメータ化されている場合、 unitary2 に関連付けられたパラメータ・ベクタの名前。 デフォルトは "p2"
  • insert_barrier (bool) – 2つのユニタリーの間にバリアを挿入するかどうか。

レイズ

  • CircuitError - unitary1unitary2 の量子ビット数が一致しない。
  • CircuitError - 入力には、測定値および/またはリセットが含まれる。

属性

name

タイプ: str

人間が読める回路名。

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。