量子情報
qiskit.quantum_info
演算子
Operator(data[, input_dims, output_dims] ) | 行列演算子クラス |
Pauli[(データ)] | N量子ビットのパウリ演算子。 |
Clifford(データ[、検証、コピー)] | クリフォード群のN量子ビットユニタリー演算子。 |
ScalarOp([dims, coeff] ) | スカラー ID 演算子クラス。 |
SparseObservable(データ, /[, 量子ビット数] ) | qubit-sparseフォーマットでデータを保存するパウリ基底上の観測可能。 |
SparsePauliOp(データ[、係数、...] ) | パウリ基底表現のスパースN量子ビット演算子。 |
PauliLindbladMap(データ, /[, 量子ビット数] ) | 量子ビット・スパース形式で保存されたパウリ・リンドブラッド写像。 |
QubitSparsePauli(データ, /[, 量子ビット数] ) | qubit-sparseフォーマットで保存された位相のないパウリ演算子。 |
QubitSparsePauliList(データ, /[, 量子ビット数] ) | qubit-sparseフォーマットで保存された位相なしパウリ演算子のリスト。 |
PhasedQubitSparsePauli(データ, /[, 量子ビット数] ) | 量子ビット・スパース形式で格納されたパウリ演算子。 |
PhasedQubitSparsePauliList(データ, /[, 量子ビット数] ) | パウリ演算子の位相のリスト。 |
CNOTDihedral([data, num_qubits, validate] ) | CNOT-Dihedral群のN量子ビット演算子。 |
PauliList(データ) | N量子ビットのパウリ演算子のリスト。 |
pauli_basis(num_qubits[, weight] ) | n-qubit Pauli基底の順序付き PauliList。 |
get_clifford_gate_names() | クリフォードゲート名のリストを返す。 |
状態
Statevector(データ[, dims] ) | 状態ベクトルクラス |
DensityMatrix(データ[, dims] ) | DensityMatrix クラス |
StabilizerState(データ[、検証] ) | StabilizerState クラスである。 |
チャネル
Choi(data[, input_dims, output_dims] ) | 量子チャネルのチョイ行列表現。 |
SuperOp(data[, input_dims, output_dims] ) | 量子チャネルのスーパーオペレーター表現。 |
Kraus(data[, input_dims, output_dims] ) | 量子チャネルのクラウス表現。 |
Stinespring(data[, input_dims, output_dims] ) | 量子チャネルのスティンスプリング表現。 |
Chi(data[, input_dims, output_dims] ) | 量子チャネルのパウリ基底カイ行列表現。 |
PTM(data[, input_dims, output_dims] ) | 量子チャネルのパウリ転送行列(PTM)表現。 |
測定
average_gate_fidelity
qiskit.quantum_info.average_gate_fidelity(channel, target=None, require_cp=True, require_tp=False)
ノイズの多い量子チャネルの平均ゲート忠実度を返す。
平均ゲート忠実度 は次式で与えられる
ここで、 は process_fidelity() 入力量子チャネルの とターゲットユニタリー 、 はチャネルの次元である。
パラメーター
- channel (QuantumChannel or Operator) – ノイズの多い量子チャネル。
- target (Operator or None) – 対象となるユニタリー演算子。 Noneの場合、ターゲットはID演算子 [Default:なし]。
- require_cp (bool) – 入力チャンネルとターゲットチャンネルが完全に正かどうか、およびChoi行列の負の固有値を含む非CPログ警告があるかどうかをチェック[する:真]。
- require_tp (bool) – 入力チャンネルとターゲットチャンネルがトレース保存かどうか、および部分Choi-matrixの負の固有値を含む非TPログ警告かどうかをチェックする [デフォルト:True]。
戻り値
平均ゲート・フィデリティ 。
戻りの型
レイズ
QiskitError - チャンネルとターゲットの寸法が同じでないか、入力と出力の寸法が異なる場合。
process_fidelity
qiskit.quantum_info.process_fidelity(channel, target=None, require_cp=True, require_tp=True)
ノイズの多い量子チャネルのプロセス忠実度を返します。
2つの量子チャネル間のプロセス忠実度 は次式で与えられる
ここで、 は state_fidelity() は正規化された Choi 行列であり, は の入力次元である.
ターゲット・チャンネルがユニタリーである場合、次のようになる
ここで、 は SuperOp はそれぞれ入力量子チャネル とターゲットユニタリー の行列であり、 はチャネルの入力次元である。
パラメーター
- channel (Operator or QuantumChannel) – 入力量子チャンネル。
- target (Operator or QuantumChannel or None) – ターゲットの量子チャネル。 Noneの場合、ターゲットはID演算子 [Default:なし]。
- require_cp (bool) – 入力チャンネルとターゲットチャンネルが完全に正かどうか、およびChoi行列の負の固有値を含む非CPログ警告があるかどうかをチェック[する:真]。
- require_tp (bool) – 入力チャンネルとターゲットチャンネルがトレース保存かどうか、および部分Choi-matrixの負の固有値を含む非TPログ警告かどうかをチェックする [デフォルト:True]。
戻り値
プロセスの忠実度 .
戻りの型
レイズ
QiskitError - チャンネルとターゲットが同じ寸法でない場合。
gate_error
qiskit.quantum_info.gate_error(channel, target=None, require_cp=True, require_tp=False)
ノイズの多い量子チャネルのゲートエラーを返します。
ゲートエラー は、平均ゲート不忠実度によって与えられる
ここで は average_gate_fidelity() 入力量子チャンネル のターゲット・ ユニタリー 。
パラメーター
- channel (QuantumChannel) – ノイズの多い量子チャネル。
- target (Operator or None) – 対象となるユニタリー演算子。 Noneの場合、ターゲットはID演算子 [Default:なし]。
- require_cp (bool) – 入力チャンネルとターゲットチャンネルが完全に正かどうか、およびChoi行列の負の固有値を含む非CPログ警告があるかどうかをチェック[する:真]。
- require_tp (bool) – 入力チャンネルとターゲットチャンネルがトレース保存かどうか、および部分Choi-matrixの負の固有値を含む非TPログ警告かどうかをチェックする [デフォルト:True]。
戻り値
平均ゲートエラー 。
戻りの型
レイズ
QiskitError - チャンネルとターゲットの寸法が同じでないか、入力と出力の寸法が異なる場合。
diamond_norm
qiskit.quantum_info.diamond_norm(choi, solver='SCS', **kwargs)
入力量子チャンネルオブジェクトのダイヤモンドノルムを返す。
この関数は、参考文献 [1の]半定義プログラムを用いて、入力量子チャンネルオブジェクトの完全境界トレースノルム(しばしばダイアモンドノルムと呼ばれる)を計算する。
パラメーター
- choi (Choi or QuantumChannel) – 量子チャネルオブジェクトまたはチョイ行列配列。
- solver (str) – 使用するソルバー。
- kwargs - CVXPYソルバに渡すオプション引数.
戻り値
完全拘束トレースノルム 。
戻りの型
レイズ
QiskitError - CVXPY パッケージが見つからない場合。
追加情報:
この関数の入力は、通常、CPTP量子チャネルではなく、2つの量子チャネルの差 ( )である。
参照:
J. ワトラスだ。 "Simpler semidefinite programs for completely bounded norms", arXiv:1207.5726 [quant-ph] (2012).
この機能には、オプションのCVXPYパッケージがインストールされている必要があります。 追加のkwargsは cvxpy.solve 関数に渡される。 利用可能なSDPソルバーについては、CVXPYのドキュメントを参照してください。
state_fidelity
qiskit.quantum_info.state_fidelity(state1, state2, validate=True)
2つの量子状態の間の状態の忠実度を返します。
密度行列入力状態 の状態忠実度 は次式で与えられる
いずれかの状態が純粋な状態である場合、これは に単純化される。
パラメーター
- state1 (Statevector orDensityMatrix) – 最初の量子状態。
- state2 (Statevector orDensityMatrix) – 第2の量子状態
- validate (bool) – 入力が有効な量子状態かどうかをチェックする [Default:真]
戻り値
州のフィデリティ .
戻りの型
レイズ
QiskitError - validate=True 、入力が無効な量子状態である場合。
purity
qiskit.quantum_info.purity(state, validate=True)
量子状態の純度を計算する。
密度行列の純度 は次のとおりである
パラメーター
- state (Statevector orDensityMatrix) – 量子状態。
- validate (bool) – 入力状態が有効かどうかをチェックする [Default:真]
戻り値
the purity .
戻りの型
レイズ
QiskitError - 入力が有効な量子状態でない場合。
concurrence
qiskit.quantum_info.concurrence(state)
量子状態の同時性を計算する。
の同時性は次式で与えられる。 Statevector は次式で与えられる
ここで、 は、入力状態の partial_trace() を適用して得られる縮約状態である。
密度行列の場合、同時性は2量子ビットの状態に対してのみ定義され、次式で与えられる:
ここで、 は行列 の順序付き固有値である。
パラメーター
state (Statevector orDensityMatrix) – 2量子ビットの量子状態。
戻り値
同意する。
戻りの型
レイズ
- QiskitError - 入力状態が有効でない場合 QuantumState。
- QiskitError - 入力が二分割でない場合 QuantumState。
- QiskitError - 密度行列入力が2量子ビット状態でない場合。
entropy
qiskit.quantum_info.entropy(state, base=2)
量子状態のフォン・ノイマン・エントロピーを計算しなさい。
エントロピー は次式で与えられる
パラメーター
- state (Statevector orDensityMatrix) – 量子状態。
- base (int) – 対数の底[デフォルト:2].
戻り値
フォン・ノイマン・エントロピーS(rho)。
戻りの型
レイズ
QiskitError - 入力状態が有効でない場合 QuantumState。
entanglement_of_formation
qiskit.quantum_info.entanglement_of_formation(state)
量子状態を形成するエンタングルメントを計算する。
入力量子状態は、2分割状態ベクトルか2量子ビット密度行列でなければならない。
パラメーター
state (Statevector orDensityMatrix) – 2量子ビットの量子状態。
戻り値
形成のもつれ。
戻りの型
レイズ
- QiskitError - 入力状態が有効でない場合 QuantumState。
- QiskitError - 入力が二分割でない場合 QuantumState。
- QiskitError - 密度行列入力が2量子ビット状態でない場合。
mutual_information
qiskit.quantum_info.mutual_information(state, base=2)
二分割状態の相互情報を計算する。
相互情報量 は次式で与えられる:
ここで、 、は二分割状態 の縮小密度行列である。
パラメーター
- state (Statevector orDensityMatrix) – 二部構成である。
- base (int) – 対数の底[デフォルト:2].
戻り値
相互情報 。
戻りの型
レイズ
- QiskitError - 入力状態が有効でない場合 QuantumState。
- QiskitError - 入力が二分割でない場合 QuantumState。
ユーティリティー関数
Quaternion(データ) | クォータニオンを表すクラス。 |
partial_trace
qiskit.quantum_info.partial_trace(state, qargs)
量子状態の一部をトレースして縮小密度行列を返す。
すべてのサブシステムをトレースすると、入力状態の trace() を返す。
パラメーター
- state (Statevector orDensityMatrix) – 入力状態。
- qargs (list) – トレースするサブシステム。
戻り値
縮小密度行列。
戻りの型
レイズ
QiskitError - 入力状態が無効の場合
schmidt_decomposition
qiskit.quantum_info.schmidt_decomposition(state, qargs)
純粋量子状態のシュミット分解を返す。
任意の二分割状態の場合:
そのシュミット分解は、k上の単一インデックスの和で与えられる:
ここで、 と は、それぞれの空間 と におけるベクトルの正規直交集合であり、シュミット係数 は正の実数値である。
パラメーター
- state (Statevector orDensityMatrix) – 入力状態。
- qargs (list) – サブシステム に対応する入力状態位置のリスト。
戻り値
タプルのリスト (s, u, v), s (float) はシュミット係数 , u (Statevector), v (Statevector) はシュミットベクトル , , それぞれ。
戻りの型
レイズ
- QiskitError - 入力 qargs が入力状態の位置のリストでない場合。
- QiskitError - Input qargsがInput stateの適切な部分集合でない場合。
Qiskitでは、量子ビットはリトルエンディアン表記で並べられ、最下位量子ビットのインデックスが小さくなる。 例えば、4量子ビットのシステムは のように表される。この表記法を用いると、 qargs=[0] を設定すると、 のように状態が分割される。さらに、量子ビットは渡される順番に関係なく、この表記法で整理される。 例えば、 qargs=[1,2] または qargs=[2,1] のどちらかを渡すと、 のように分割される。
shannon_entropy
qiskit.quantum_info.shannon_entropy(pvec, base=2)
確率ベクトルのシャノン・エントロピーを計算する。
確率ベクトル のシャノン・エントロピーは次のように定義される
ここで、 は対数ベースであり(デフォルトは2)、 。
パラメーター
- pvec (array_like) – 確率ベクトル。
- base (int) – 対数の底[デフォルト:2].
戻り値
シャノンエントロピーH(pvec)。
戻りの型
commutator
qiskit.quantum_info.commutator(a, b)
aとbのコミュテーターを計算せよ。
パラメーター
- a (OperatorTypeT) – オペレーターa。
- b (OperatorTypeT) – オペレーターb。
戻り値
整流子
戻りの型
OperatorTypeT
anti_commutator
qiskit.quantum_info.anti_commutator(a, b)
aとbの反共役を計算せよ。
パラメーター
- a (OperatorTypeT) – オペレーターa。
- b (OperatorTypeT) – オペレーターb。
戻り値
反整流子
戻りの型
OperatorTypeT
double_commutator
qiskit.quantum_info.double_commutator(a, b, c, *, commutator=True)
a、b、cの対称二重コミュテータを計算せよ。
[1の]式( 13.6.18 )も参照。
コミュテータがTrueの場合
コミュテータが False の場合、次の値を返す
パラメーター
- a (OperatorTypeT) – オペレーターa。
- b (OperatorTypeT) – オペレーターb。
- c (OperatorTypeT) – オペレーター c.
- commutator (bool) –
Trueの場合は二重整流子を計算し、 の場合は二重反整流子を計算する。False
戻り値
二重整流子
戻りの型
OperatorTypeT
参考文献
[1] : R. McWeeny.
分子量子力学の方法。 2nd Edition, Academic Press, 1992. ISBN 0-12-486552-6.
ランダム
random_statevector
qiskit.quantum_info.random_statevector(dims, seed=None)
ランダムな状態ベクトルを生成する。
状態ベクトルは一様分布からサンプリングされる。 これはユニタリー行列上のハール測度によって誘導される測度である。
パラメーター
- dims (int ortuple) – 国家の次元である。
- seed (int or np.random.Generator) – オプションだ。 RNGに固定シードまたはジェネレーターを設定する。
戻り値
ランダムな状態ベクトル。
戻りの型
参照:
K. ZyczkowskiとH. Sommers (2001), "Induced measures in space of mixed quantum states", J. フィジーク。 A:数学。 Gen. 34 7111.
random_density_matrix
qiskit.quantum_info.random_density_matrix(dims, rank=None, method='Hilbert-Schmidt', seed=None)
ランダムな密度行列を生成する。
パラメーター
- dims (int ortuple) – DensityMatrix の寸法。
- rank (int or None) – 密度行列の次元。 デフォルト値はフルランクです。
- method (string) – オプションだ。 使うべき方法だ。 'Hilbert-Schmidt': (デフォルト) Hilbert-Schmidt メトリックからのサンプル。 Bures」:Buresメトリックからのサンプル。
- seed (int or np.random.Generator) – オプションだ。 RNGに固定シードまたはジェネレーターを設定する。
戻り値
ランダム密度行列。
戻りの型
レイズ
QiskitError - メソッドが有効でない場合
random_unitary
qiskit.quantum_info.random_unitary(dims, seed=None)
ランダムなユニタリー演算子を返す。
演算子はユニタリー・ハール測度からサンプリングされる。
パラメーター
- dims (int ortuple) – オペレータの入力寸法。
- seed (int or np.random.Generator) – オプションだ。 RNGに固定シードまたはジェネレーターを設定する。
戻り値
ユニタリー演算子。
戻りの型
random_hermitian
qiskit.quantum_info.random_hermitian(dims, traceless=False, seed=None)
ランダムなエルミート演算子を返す。
演算子はガウシアン・ユニタリー・アンサンブルからサンプリングされる。
パラメーター
- dims (int ortuple) – オペレータの入力次元。
- traceless (bool) – オプションだ。 Trueの場合、対角エントリを減算して、トレースレスなエルミート演算子を返す(デフォルト:False)。
- seed (int or np.random.Generator) – オプションだ。 RNGに固定シードまたはジェネレーターを設定する。
戻り値
エルミート作用素。
戻りの型
random_pauli
qiskit.quantum_info.random_pauli(num_qubits, group_phase=False, seed=None)
ランダムなパウリを返す。
パラメーター
- num_qubits (int) – 量子ビットの数。
- group_phase (bool) – オプションだ。 True の場合、 ラ ンダム位相が生成 さ れます。 そうでない場合は、パウリ係数が+1になるように位相が設定される(デフォルト:False)。
- seed (int or np.random.Generator) – オプションだ。 RNGに固定シードまたはジェネレーターを設定する。
戻り値
ランダムなパウリ
戻りの型
random_clifford
qiskit.quantum_info.random_clifford(num_qubits, seed=None)
ランダムなクリフォード演算子を返す。
クリフォードは参考文献 [1の]方法でサンプリングされる。
パラメーター
- num_qubits (int) – クリフォードの量子ビット数
- seed (int or np.random.Generator) – オプションだ。 RNGに固定シードまたはジェネレーターを設定する。
戻り値
ランダムなクリフォード作用素。
戻りの型
参照:
- S. ブラヴィイとD. マスロフ、 ハダマード自由回路がクリフォード群の構造を暴露。 arXiv:2003.09412 [quant-ph]。
random_quantum_channel
qiskit.quantum_info.random_quantum_channel(input_dims=None, output_dims=None, rank=None, seed=None)
ランダムな CPTP 量子チャネルを返す。
これは、ユニタリー・ハール測度からランダムなアイソメトリをサンプリングすることで、量子チャネルのスタインスプリング演算子を構成する。
パラメーター
- input_dims (int ortuple) – チャンネルの入力次元。
- output_dims (int ortuple) – チャンネルの出力次元。
- rank (int) – オプションだ。 量子チャネルChoi行列のランク。
- seed (int or np.random.Generator) – オプションだ。 RNGに固定シードまたはジェネレーターを設定する。
戻り値
量子チャンネル演算子。
戻りの型
レイズ
QiskitError - ランクまたは寸法が無効な場合。
random_cnotdihedral
qiskit.quantum_info.random_cnotdihedral(num_qubits, seed=None)
ランダムな CNOTDihedral 要素を返す。
パラメーター
- num_qubits (int) – CNOTDihedralオブジェクトの量子ビット数。
- seed (int or RandomState) – オプションだ。 RNGに固定シードまたはジェネレーターを設定する。
戻り値
ランダムなCNOTDihedral要素。
戻りの型
random_pauli_list
qiskit.quantum_info.random_pauli_list(num_qubits, size=1, seed=None, phase=True)
ランダムな PauliList を返す。
パラメーター
- num_qubits (int) – 量子ビットの数。
- size (int) – オプションだ。 Pauli リ ス ト の長 さ (デ フ ォ ル ト : 1)。
- seed (int or np.random.Generator) – オプションだ。 RNGに固定シードまたはジェネレーターを設定する。
- phase (bool) – Trueの場合、パウリ位相はランダムになり、そうでない場合は位相は0に固定される。 [デフォルト: True]
戻り値
a random PauliList.
戻りの型
解析
hellinger_distance
qiskit.quantum_info.hellinger_distance(dist_p, dist_q)
2つのカウント分布間のヘリンジャー距離を計算します。
パラメーター
戻り値
距離
戻りの型
参考文献
hellinger_fidelity
qiskit.quantum_info.hellinger_fidelity(dist_p, dist_q)
2つのカウント分布間のヘリンジャー忠実度を計算します。
忠実度は 、Hはヘリンジャー距離である。 この値は [0, 1の]範囲に収まる。
これは標準的な古典的忠実度( )と等価であり、対角密度行列の場合は量子状態の忠実度と等しくなる。
パラメーター
戻り値
身元保証
戻りの型
例
from qiskit import QuantumCircuit
from qiskit.quantum_info.analysis import hellinger_fidelity
from qiskit.providers.basic_provider import BasicSimulator
qc = QuantumCircuit(5, 5)
qc.h(2)
qc.cx(2, 1)
qc.cx(2, 3)
qc.cx(3, 4)
qc.cx(1, 0)
qc.measure(range(5), range(5))
sim = BasicSimulator()
res1 = sim.run(qc).result()
res2 = sim.run(qc).result()
hellinger_fidelity(res1.get_counts(), res2.get_counts())参考文献
Z2Symmetries(symmetries, sq_paulis, sq_list) | $Z_2$ 対称性コンバータは、問題のハミルトニアンから対称性を識別し、それを用いて、この問題に対するポーリスのような演算子のテーパー表現(より効率的な表現)を提供する。 |