Skip to main content
IBM Quantum Platform

パウリ

class qiskit.quantum_info.Pauli(data=None)

GitHub

ベース: BasePauli

N量子ビットのパウリ演算子。

このクラスは、完全な nn -qubit パウリ群から PP 演算子を表します

P=(i)qPn1...P0P = (-i)^{q} P_{n-1} \otimes ... \otimes P_{0}

ここで、 qZ4q\in \mathbb{Z}_4Pi{I,X,Y,Z}P_i \in \{I, X, Y, Z\} は1量子ビットのパウリ行列である:

I=(1001),X=(0110),Y=(0ii0),Z=(1001).I = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}, X = \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix}, Y = \begin{pmatrix} 0 & -i \\ i & 0 \end{pmatrix}, Z = \begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix}.

初期化

パウリ・オブジェクトはいくつかの方法で初期化できる:

Pauli(obj)

ここで、 obj はパウリ文字列、 Pauli または ScalarOp 演算子、パウリゲート、またはパウリゲートのみを含む QuantumCircuit

Pauli((z, x, phase))

ここで、 zx はブーリアン numpy.ndarraysphase は整数 [0, 1, 2, 3]

Pauli((z, x))

Pauli((z, x, 0)) 、位相はトリビアルである。

ストリング表現

nn -qubitパウリは、 ['I', 'X', 'Y', 'Z']nn 文字と、 ['', '-i', '-', 'i'] の位相係数からなる文字列で表すことができる。 例: 'XYZ' または '-iZIZ'

文字列表現では、 qubit-0 が右端のパウリ文字に対応し、qubit- (n1)(n-1) が左端のパウリ文字に対応する。 例えば、 'XYZ'XYZX\otimes Y \otimes Z を表し、 '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 に設定すると、切り捨ては行われない。

配列表現

nn -qubitパウリの内部データ構造は、2つの長さ nn のブーリアンベクトル zZ2Nz \in \mathbb{Z}_2^NxZ2Nx \in \mathbb{Z}_2^N、およびパウリ演算子を定義する整数 qZ4q \in \mathbb{Z}_4 である

P=(i)q+zxZzXx.P = (-i)^{q + z\cdot x} Z^z \cdot X^x.

kk -番目の量子ビットは、 zzxx の配列の kk -番目のエントリに対応する

P=Pn1...P0Pk=(i)z[k]x[k]Zz[k]Xx[k]\begin{aligned} P &= P_{n-1} \otimes ... \otimes P_{0} \\ P_k &= (-i)^{z[k] * x[k]} Z^{z[k]}\cdot X^{x[k]} \end{aligned}

ここで、 z[k] = P.z[k]x[k] = P.x[k]

zzxx 配列は zx プロパティを使ってアクセスしたり更新したりできる。 位相整数 qqphase プロパティを使用してアクセスおよび更新できます。

行列演算子の表現

パウリの行列は、 (2n,2n)(2^n, 2^n)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) の形式でなければならない。 zx はブール値のNumpy配列で、phaseは Z4\mathbb{Z}_4 の整数である。 入力が文字列の場合、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

adjoint()

GitHub

演算子の随伴点を返します。

anticommutes

anticommutes(other, qargs=None)

GitHub

他のPauliがselfと反衝突する場合、Trueを返す。

パラメーター

  • other (Pauli) – 別のパウリ作用素。
  • qargs (list) – ドット積を適用するqubits (デフォルト: None)。

戻り値

パウリが反共産なら真、共産なら偽。

戻りの型

bool

apply_layout

apply_layout(layout, num_qubits=None)

GitHub

トランスパイラ・レイアウトを適用する Pauli

パラメーター

  • layout (TranspileLayout |list[int] | None) – a TranspileLayout整数のリストかNone。 layoutとnum_qubitsの両方がnoneの場合、演算子のコピーが返される。
  • num_qubits (int | None) – 演算子を展開する量子ビットの数。 提供されない場合、 layoutTranspileLayout の場合、トランスパイラ出力回路の量子ビット数がデフォルトで使用されます。 layout が整数のリストの場合、指定された並べ替えは展開されずに適用される。 layoutがNoneの場合、演算子は与えられた量子ビット数に展開されます。

戻り値

新しい Pauli 提供されたレイアウトを適用した

戻りの型

パウリ

commutes

commutes(other, qargs=None)

GitHub

Pauli が他とコミュケートする場合、True を返す。

パラメーター

  • other (Pauli orPauliList) – 別のパウリ作用素。
  • qargs (list) – ドット積を適用するqubits (デフォルト: None)。

戻り値

パウリが通勤していれば真、反通勤していれば偽。

戻りの型

bool

compose

compose(other, qargs=None, front=False, inplace=False)

GitHub

別のパウリとの合成演算子を返す。

パラメーター

  • other (Pauli) – パウリのオブジェクト。
  • qargs (list or None) – 内積を計算する量子ビット(デフォルト:None)。
  • front (bool) – Trueの場合、左掛け算ではなく右掛け算で合成する [:False].
  • inplace (bool) – Trueの場合、インプレースで更新する(デフォルト:False)。

戻り値

構成されたパウリ。

戻りの型

パウリ

レイズ

QiskitError - 他が演算子に変換できない場合、または指定されたサブシステムに対して互換性のない寸法を持つ場合。

デフォルトでは、合成 (&) は行列演算子の左行列乗算として定義され、一方 dot() は右行列乗算として定義されます。 つまり、 AB が同じタイプである場合、 A & B == A.compose(B)B.dot(A) と等価である。

front=True kwargを設定すると、これは右行列の乗算に変わり、以下のメソッドと同等になる。 dot() メソッド A.dot(B) == A.compose(B, front=True) と等価である。

conjugate

conjugate()

GitHub

Z基底に関するPauliの複素共役を返す。

copy

copy()

GitHub

現在のオペレータのディープコピーを作成する。

delete

delete(qubits)

GitHub

量子ビットを削除した Pauli を返す。

パラメーター

qubits (int orlist) – qubitsをパウリから削除する。

戻り値

指定された量子ビットを取り除いた結果のPauli。

戻りの型

パウリ

レイズ

QiskitError - indが配列サイズまたは量子ビット数の範囲外である場合。

dot

dot(other, qargs=None, inplace=False)

GitHub

右掛け演算子 self * other を返す。

パラメーター

  • other (Pauli) – 演算子オブジェクト。
  • qargs (list or None) – 内積を計算する量子ビット(デフォルト:None)。
  • inplace (bool) – Trueの場合、インプレースで更新する(デフォルト:False)。

戻り値

self(自己)」は「other(他者)」を意味する。

戻りの型

パウリ

equiv

equiv(other)

GitHub

パウリが群位相まで等価であれば真を返す。

パラメーター

other (Pauli) – 演算子オブジェクト。

戻り値

パウリが群位相まで等価であれば、その通りだ。

戻りの型

bool

evolve

evolve(other, qargs=None, frame='h')

GitHub

ハイゼンベルグ(デフォルト)またはシュレーディンガーピクチャーによるクリフォードによるパウリの進化を行い、進化したパウリを返す。

シュレーディンガー図法の展開は、パラメータ frame='s' を渡すことで選択できる。 このオプションの方が計算が速い。

ハイゼンベルクのピクチャーはパウリを P=C.P.CP^\prime = C^\dagger.P.C

シュレーディンガー像はパウリを P=C.P.CP^\prime = C.P.C^\dagger

パラメーター

  • other (Pauli orClifford orQuantumCircuit) – 進化するクリフォード演算子。
  • qargs (list) – クリフォードを適用する量子ビットのリスト。
  • frame (string) – 'h' ハイゼンベルグ(デフォルト)またはシュレーディンガーフレームワークの場合は 's'

戻り値

パウリ C.P.CC^\dagger.P.C (ハイゼンベルクの絵)またはパウリ C.P.CC.P.C^\dagger (シュレーディンガーの絵)。

戻りの型

パウリ

レイズ

QiskitError - もしqubitsとqargsのクリフォード数が一致しない場合。

expand

expand(other)

GitHub

別のパウリとの逆順テンソル積を返す。

パラメーター

other (Pauli) – パウリのオブジェクト。

戻り値

テンソル積 bab \otimes aaa

は現在のパウリ、 bb はもう一方のパウリである。

戻りの型

パウリ

input_dims

input_dims(qargs=None)

GitHub

指定されたサブシステムの入力次元のタプルを返す。

insert

insert(qubits, value)

GitHub

特定の量子ビットの値にパウリを挿入する。

パラメーター

  • qubits (int orlist) – 挿入するqubitsのインデックス。
  • value (Pauli) – 値を挿入する。

戻り値

エントリーを挿入した結果のパウリ。

戻りの型

パウリ

レイズ

QiskitError - 挿入量子ビットが無効な場合。

inverse

inverse()

GitHub

パウリの逆数を返す。

output_dims

output_dims(qargs=None)

GitHub

指定されたサブシステムの出力次元のタプルを返す。

power

power(n)

GitHub

演算子をそれ自身と n 回組み合わせて返します。

パラメーター

n (int) – self ( n>0 ) と合成する回数。

戻り値

n回合成された演算子。

戻りの型

Clifford

レイズ

QiskitError - 演算子の入力次元と出力次元が等しくない場合、またはべき乗が正の整数でない場合。

reshape

reshape(input_dims=None, output_dims=None, num_qubits=None)

GitHub

入出力サブシステムの寸法を変更した浅いコピーを返す。

パラメーター

  • 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)

GitHub

切り捨てられる前に表示するパウリ文字の最大数を設定します。

パラメーター

val (int) – 文字数。

切り捨ての値が0に設定されている場合、切り捨ては無効になる。

tensor

tensor(other)

GitHub

別のパウリとのテンソル積を返す。

パラメーター

other (Pauli) – パウリのオブジェクト。

戻り値

**テンソル積 aba \otimes b、ここで aa **

は現在のパウリ、 bb はもう一方のパウリである。

戻りの型

パウリ

テンソル積は、 ^ 二項演算子を用いて求めることができる。 したがって、 a.tensor(b)a ^ b と等価である。

to_instruction

to_instruction()

GitHub

パウリ回路命令に変換する。

to_label

to_label()

GitHub

Pauli を文字列ラベルに変換する。

to_label と の違い __str__() は、後者では量子ビットの数が多い場合、出力が切り捨てられる点にある。

戻り値

パウリの文字列ラベル

戻りの型

str

to_matrix

to_matrix(sparse=False)

GitHub

Numpy配列または疎なCSR行列に変換します。

パラメーター

sparse (bool) – もしTrueなら疎なCSR行列を返し、そうでなければ密なNumpy配列を返します(デフォルト:False)。

戻り値

パウリ行列。

戻りの型

アレイ

transpose

transpose()

GitHub

リスト中の各 Pauli の転置行列を返す。

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。