パウリ
class qiskit.quantum_info.Pauli(data=None)
ベース: BasePauli
N量子ビットのパウリ演算子。
このクラスは、完全な -qubit パウリ群から 演算子を表します
ここで、 と は1量子ビットのパウリ行列である:
初期化
パウリ・オブジェクトはいくつかの方法で初期化できる:
Pauli(obj)ここで、
objはパウリ文字列、PauliまたはScalarOp演算子、パウリゲート、またはパウリゲートのみを含むQuantumCircuit。
Pauli((z, x, phase))ここで、
zとxはブーリアンnumpy.ndarrays、phaseは整数[0, 1, 2, 3]。
Pauli((z, x))
Pauli((z, x, 0))、位相はトリビアルである。
ストリング表現
-qubitパウリは、 ['I', 'X', 'Y', 'Z'] の 文字と、 ['', '-i', '-', 'i'] の位相係数からなる文字列で表すことができる。 例: 'XYZ' または '-iZIZ'。
文字列表現では、 qubit-0 が右端のパウリ文字に対応し、qubit- が左端のパウリ文字に対応する。 例えば、 'XYZ' は を表し、 'Z' は qubit-0 の上に、 'Y' は qubit-1 の上に、 'X' は qubit-2 の上にある。
文字列表現は、クラス初期化 (Pauli('-iXYZ')) を使って Pauli に変換できる。 Pauli オブジェクトは、メソッドや to_label() メソッドまたは str(pauli) を使って文字列表現に戻すことができます。
Pauli を文字列に変換するために str を使用すると、返される文字列は大量の量子ビットに対して切り捨てられる。 to_label() は切り捨てのない完全な文字列を返す。 デフォルトの切り捨て長さは50文字です。 デフォルト値は、class __truncate__ 属性に整数値を設定することで変更できます。 0 に設定すると、切り捨ては行われない。
配列表現
-qubitパウリの内部データ構造は、2つの長さ のブーリアンベクトル 、 、およびパウリ演算子を定義する整数 である
-番目の量子ビットは、 と の配列の -番目のエントリに対応する
ここで、 z[k] = P.z[k]、 x[k] = P.x[k] 。
、 配列は z と x プロパティを使ってアクセスしたり更新したりできる。 位相整数 。 phase プロパティを使用してアクセスおよび更新できます。
行列演算子の表現
パウリの行列は、 。 Operatorto_operator() メソッドを使って密または疎複素行列に変換することができる。 to_matrix() メソッドを使って密行列または疎行列に変換することができる。
データ・アクセス
個々の量子ビットのポーリスは、ポーリスのサブセットを選択するための整数、リスト、スライスを受け付ける [] 演算子を使用してアクセスおよび更新することができます。 パウリの部分集合を選択すると、現在のパウリの位相は破棄されることに注意。
例 :
from qiskit.quantum_info import Pauli
P = Pauli('-iXYZ')
print('P[0] =', repr(P[0]))
print('P[1] =', repr(P[1]))
print('P[2] =', repr(P[2]))
print('P[:] =', repr(P[:]))
print('P[::-1] =', repr(P[::-1]))パウリを初期化する。
シンプレクティック配列の入力データを使う場合、zとxの両方の引数を与えなければならないが、最初の(z)引数は文字列ラベル、パウリ演算子、または入力データとして単独で使うことができる。 ScalarOp 入力データ。
パラメーター
data (str ortuple orPauli orScalarOp) – パウリの入力データ 入力がタプルの場合、 (z, x) または (z, x, phase) の形式でなければならない。 z と x はブール値のNumpy配列で、phaseは の整数である。 入力が文字列の場合、phaseとPauli文字列を連結したものでなければならない(例: 'XYZ', '-iZIZ' ) ここで位相文字列とは、 ['+', '-', '']、 ['1', '']、 ['i', 'j', ''] の中から最大3文字をこの順序で組み合わせたもので、例えば ''、 '-1j' 一方、パウリ文字列は、 'I'、 'X'、 'Y'、 'Z' の1文字以上であり、例えば、 'Z'、 'XIYY'。
レイズ
QiskitError - 入力配列が不正な形状の場合
属性
dim
タプル(input_shape, output_shape)を返す。
name
操作タイプを表す一意の文字列識別子。
num_clbits
クラシックビットの数。
num_qubits
N量子ビット演算子の場合は量子ビット数を、それ以外の場合はNoneを返す。
phase
Pauli の群位相指数を返します。
qargs
演算子の qargs を返す。
settings
リターン設定。
x
パウリのxベクトル。
z
パウリのzベクトル。
方法
adjoint
anticommutes
apply_layout
apply_layout(layout, num_qubits=None)
トランスパイラ・レイアウトを適用する Pauli
パラメーター
- layout (TranspileLayout |list[int] | None) – a
TranspileLayout整数のリストかNone。 layoutとnum_qubitsの両方がnoneの場合、演算子のコピーが返される。 - num_qubits (int | None) – 演算子を展開する量子ビットの数。 提供されない場合、
layoutがTranspileLayoutの場合、トランスパイラ出力回路の量子ビット数がデフォルトで使用されます。layoutが整数のリストの場合、指定された並べ替えは展開されずに適用される。 layoutがNoneの場合、演算子は与えられた量子ビット数に展開されます。
戻り値
新しい Pauli 提供されたレイアウトを適用した
戻りの型
commutes
compose
compose(other, qargs=None, front=False, inplace=False)
別のパウリとの合成演算子を返す。
パラメーター
- other (Pauli) – パウリのオブジェクト。
- qargs (list or None) – 内積を計算する量子ビット(デフォルト:None)。
- front (bool) – Trueの場合、左掛け算ではなく右掛け算で合成する [:False].
- inplace (bool) – Trueの場合、インプレースで更新する(デフォルト:False)。
戻り値
構成されたパウリ。
戻りの型
レイズ
QiskitError - 他が演算子に変換できない場合、または指定されたサブシステムに対して互換性のない寸法を持つ場合。
conjugate
copy
delete
delete(qubits)
量子ビットを削除した Pauli を返す。
パラメーター
qubits (int orlist) – qubitsをパウリから削除する。
戻り値
指定された量子ビットを取り除いた結果のPauli。
戻りの型
レイズ
QiskitError - indが配列サイズまたは量子ビット数の範囲外である場合。
dot
dot(other, qargs=None, inplace=False)
右掛け演算子 self * other を返す。
パラメーター
- other (Pauli) – 演算子オブジェクト。
- qargs (list or None) – 内積を計算する量子ビット(デフォルト:None)。
- inplace (bool) – Trueの場合、インプレースで更新する(デフォルト:False)。
戻り値
self(自己)」は「other(他者)」を意味する。
戻りの型
equiv
evolve
evolve(other, qargs=None, frame='h')
ハイゼンベルグ(デフォルト)またはシュレーディンガーピクチャーによるクリフォードによるパウリの進化を行い、進化したパウリを返す。
シュレーディンガー図法の展開は、パラメータ frame='s' を渡すことで選択できる。 このオプションの方が計算が速い。
ハイゼンベルクのピクチャーはパウリを 。
シュレーディンガー像はパウリを 。
パラメーター
- other (Pauli orClifford orQuantumCircuit) – 進化するクリフォード演算子。
- qargs (list) – クリフォードを適用する量子ビットのリスト。
- frame (string) –
'h'ハイゼンベルグ(デフォルト)またはシュレーディンガーフレームワークの場合は's'。
戻り値
パウリ (ハイゼンベルクの絵)またはパウリ (シュレーディンガーの絵)。
戻りの型
レイズ
QiskitError - もしqubitsとqargsのクリフォード数が一致しない場合。
expand
expand(other)
別のパウリとの逆順テンソル積を返す。
パラメーター
other (Pauli) – パウリのオブジェクト。
戻り値
テンソル積 。
は現在のパウリ、 はもう一方のパウリである。
戻りの型
input_dims
insert
insert(qubits, value)
特定の量子ビットの値にパウリを挿入する。
パラメーター
戻り値
エントリーを挿入した結果のパウリ。
戻りの型
レイズ
QiskitError - 挿入量子ビットが無効な場合。
inverse
output_dims
power
power(n)
演算子をそれ自身と n 回組み合わせて返します。
パラメーター
n (int) – self ( n>0 ) と合成する回数。
戻り値
n回合成された演算子。
戻りの型
レイズ
QiskitError - 演算子の入力次元と出力次元が等しくない場合、またはべき乗が正の整数でない場合。
reshape
reshape(input_dims=None, output_dims=None, num_qubits=None)
入出力サブシステムの寸法を変更した浅いコピーを返す。
パラメーター
- input_dims (None or tuple) – 新しいサブシステムの入力寸法。 None の場合、元の入力ディムが保持される [Default:なし]。
- output_dims (None or tuple) – 新しいサブシステムの出力寸法。 None の場合、元の出力ディムが保持される [Default:なし]。
- num_qubits (None or int) – N-qubit 演算子への整形[デフォルト:なし]。
戻り値
入出力寸法を整形した self を返す。
戻りの型
BaseOperator
レイズ
QiskitError - すべてのサブシステム入力次元またはサブシステム出力次元の合計サイズが一定でない場合。
set_truncation
classmethod set_truncation(val)
切り捨てられる前に表示するパウリ文字の最大数を設定します。
パラメーター
val (int) – 文字数。
切り捨ての値が0に設定されている場合、切り捨ては無効になる。
tensor
tensor(other)
別のパウリとのテンソル積を返す。
パラメーター
other (Pauli) – パウリのオブジェクト。
戻り値
**テンソル積 、ここで **
は現在のパウリ、 はもう一方のパウリである。
戻りの型
テンソル積は、 ^ 二項演算子を用いて求めることができる。 したがって、 a.tensor(b) は a ^ b と等価である。
to_instruction
to_label
to_label()
Pauli を文字列ラベルに変換する。
to_label と の違い __str__() は、後者では量子ビットの数が多い場合、出力が切り捨てられる点にある。
戻り値
パウリの文字列ラベル
戻りの型
to_matrix
to_matrix(sparse=False)
Numpy配列または疎なCSR行列に変換します。
パラメーター
sparse (bool) – もしTrueなら疎なCSR行列を返し、そうでなければ密なNumpy配列を返します(デフォルト:False)。
戻り値
パウリ行列。
戻りの型