QubitSparsePauli
class qiskit.quantum_info.QubitSparsePauli(data, /, num_qubits=None)
ベース: object
qubit-sparseフォーマットで保存された位相のないパウリ演算子。
表現
パウリ演算子とは、 、 の形を持つ1量子ビットのパウリ演算子のテンソル積である。の内部表現は QubitSparsePauli の内部表現は、非同一の単一量子ビットパウリ演算子のみを格納する。
内部的には、各1量子ビットのパウリ演算子は明示的に数値で保存される:
ラベル | オペレーター | 数値 | Pauli 属性 |
|---|---|---|---|
"I" | (アイデンティティ) | 保管されていない。 | 保管されていない。 |
"X" | (パウリX) | 0b10 (2) | X |
"Y" | (パウリ・Y) | 0b11 (3) | Y |
"Z" | (パウリZ) | 0b01 (1) | Z |
属性 | 長さ | 説明 |
|---|---|---|
paulis | 各非同一シングル量子ビット・パウリ演算子。 これらはリスト内の非同一性 に対応し、エントリーは の増加順に最初に、各項目内では の増加順に格納される。 | |
indices | の各演算子に対応する量子ビット( )。 paulis. QubitSparsePauli は、このリストが項ごとにソートされていることを必要とし、アルゴリズムはこの不変性が維持されていることを信頼することができる。 |
パラメータ は、非同一性の単一量子ビット項の総数である。
配列のスカラー項目は paulis 配列のスカラー項目は数値バイトとして格納される。 数値は、そのシンプレクティック・パウリ表現に関連している。 SparsePauliOp が使用するシンプレクティック・パウリ表現に関連しており、列挙による名前付きアクセスでアクセスできる:
パウリ
class Pauli
アルファベット IntEnum Alphabet of single-qubit Pauli operators used in QubitSparsePauliList で列挙されている各シングル量子ビット・アルファベット項を表す数値への名前付きアクセスを提供する。
このクラスは QubitSparsePauli. としてアクセスする。 QubitSparsePauli.Pauli. タイピングが多すぎて、オブジェクトと QubitSparsePauliList オブジェクトだけを扱っていて Pauli というように短縮するのがいいだろう:
>>> ops = QubitSparsePauli.Pauli
>>> assert ops.X is QubitSparsePauli.Pauli.X列挙のすべての値には、属性アクセスか、文字列による辞書のようなインデックスでアクセスできる:
>>> assert QubitSparsePauli.Pauli.X is QubitSparsePauli.Pauli["X"]各1量子ビットのパウリを表すビットは、パウリ演算子の(位相のない)シンプレクティック表現である。
値
X
デフォルト値: 2
Pauli 演算子。 一文字ラベル "X" を使用。
Y
デフォルト値: 3
Pauli 演算子。 一文字ラベル "Y" を使用。
Z
デフォルト値: 1
Pauli 演算子。 一文字ラベル "Z" を使用。
配列のような各属性は、 Python シーケンスのように振る舞う。 標準的な list-のようなセマンティクスで 属性をスライスすると、フィールドの自然な。 ndarray フィールドの自然な dtype 、関連するデータのコピーを含むNumpyを返します。 paulis.
建設
QubitSparsePauli はいくつかのコンストラクタを定義している。 デフォルトのコンストラクタは、入力の型に基づいて、より特殊なコンストラクタのいずれかに委譲しようとする。 特定のコンストラクタを使用することで、よりコントロールしやすくなる。
メソッド | サマリー |
|---|---|
from_label() | 密な文字列ラベルを QubitSparsePauli. |
from_sparse_label() | を構築する。 QubitSparsePauli を疎な文字列ラベルとそれらが適用される量子ビットのタプルから構築する。 |
from_pauli() | シングル Pauli を QubitSparsePauli. |
from_raw_parts() | 生のデータ配列から演算子を構築する。 |
__new__
__new__(data, /, num_qubits=None)
のデフォルトコンストラクタは QubitSparsePauli.
これは、 data の引数の型に基づいて、 明示的な変換コンストラクタ・メソッドのいずれかに委譲する。 num_qubits が与えられ、 data の型が暗示するコンストラクタが数値を受け付けない場合、与えられた整数は入力と一致しなければならない。
パラメーター
- data - 入力のデータ型。 この場合、入力はコピーされる。
QubitSparsePauliこの場合、入力はコピーされます。from_label()またはfrom_sparse_label(). - num_qubits (int|None) – 演算子の量子ビット数(オプション)。 ほとんどのデータ入力では、これは推測できるので、渡す必要はない。 これはスパースラベルフォーマットでのみ必要である。 不必要に与えられる場合は、入力されたデータと一致しなければならない。
属性
indices
各非同一シングル量子ビットの項のインデックスに関する読み取り専用ビュー。
インデックスは常にソート順となる。
num_qubits
その項が定義されている量子ビットの数。
paulis
個々の単一量子ビット項に関する読み取り専用ビュー。
配列の中で有効な値は、対応する Pauli.
方法
commutes
commutes(other)
self` が別の量子ビット・スパースpauliとコミュートするかチェックする。
パラメーター
other (QubitSparsePauli) – との整合をチェックするための量子ビット・スパース・パウリ。
compose
copy
copy()
今期のコピーを入手する
from_label
static from_label(label, /)
密な文字列ラベルから構築する。
ラベルはアルファベット 'IXYZ' の並びでなければならない。 ラベルはビット列と同様に解釈される。 つまり、一番右の文字が0番量子ビットに対応し、以下同様である。 のラベルと同じである。 Pauli と SparsePauliOp.
パラメーター
label (str) – 濃密なラベル。
例
>>> QubitSparsePauli.from_label("IIIIXZI")
<QubitSparsePauli on 7 qubits: X_2 Z_1>
>>> label = "IYXZI"
>>> pauli = Pauli(label)
>>> assert QubitSparsePauli.from_label(label) == QubitSparsePauli.from_pauli(pauli)from_pauli
static from_pauli(pauli, /)
を構築する。 QubitSparsePauli インスタンスから Pauli インスタンスから構築する。
なお、パウリの位相は落としてある。
パラメーター
pauli (Pauli) – コンバートするシングル・パウリ。
例
>>> label = "IYXZI"
>>> pauli = Pauli(label)
>>> QubitSparsePauli.from_pauli(pauli)
<QubitSparsePauli on 5 qubits: Y_3 X_2 Z_1>
>>> assert QubitSparsePauli.from_label(label) == QubitSparsePauli.from_pauli(pauli)from_raw_parts
static from_raw_parts(num_qubits, paulis, indices)
を構築する。 QubitSparsePauli を、 クラスレベルのドキュメントに記述されている必要なデータ表現に一致する生のNumpy配列から構築します。
各配列のデータは、新しい、成長可能なRust-spaceアロケーションにコピーされる。
パラメーター
- num_qubits - 演算子が作用する量子ビットの数。
- paulis - 単一量子ビット項のリスト。 のNumpy配列でなければならない。
uint8(これはPauli). - indices - 各1量子ビット項が対応する量子ビットの並べ替えリスト。 これはd型のNumpy配列でなければならない。
uint32.
例
100量子ビットのうち50量子ビットに作用する 演算子を構成する。
>>> num_qubits = 100
>>> terms = np.array([QubitSparsePauli.Pauli.Z], dtype=np.uint8)
>>> indices = np.array([50], dtype=np.uint32)
>>> QubitSparsePauli.from_raw_parts(num_qubits, terms, indices)
<QubitSparsePauli on 100 qubits: Z_50>from_sparse_label
static from_sparse_label(sparse_label, num_qubits)
パウリの文字列のタプルとして与えられるスパースラベルと、対応する量子ビットのインデックスから、量子ビットのスパースパウリを構築する。
これは SparsePauliOp.from_sparse_list().
パラメーター
- sparse_label (tuple[str, Sequence[int]]) – ラベルと、それぞれの単一量子ビット項が適用される量子ビット。
- num_qubits (int) – 演算子が作用する量子ビットの数。
例
シンプルなパウリを作る:
>>> QubitSparsePauli.from_sparse_label(
... ("ZX", (1, 4)),
... num_qubits=5,
... )
<QubitSparsePauli on 5 qubits: X_4 Z_1>このメソッドは from_label()もしタプルのqubit-argumentsフィールドが減少する整数に設定されていれば:
>>> label = "XYXZ"
>>> from_label = QubitSparsePauli.from_label(label)
>>> from_sparse_label = QubitSparsePauli.from_sparse_label(
... (label, (3, 2, 1, 0)),
... num_qubits=4
... )
>>> assert from_label == from_sparse_labelidentity
static identity(num_qubits)
指定された数の量子ビットのID演算子を取得します。
例
100量子ビットのアイデンティティを得る:
>>> QubitSparsePauli.identity(100)
<QubitSparsePauli on 100 qubits: >to_pauli
to_pauli()
を返す。 Pauli を返す。
to_qubit_sparse_pauli_list
to_qubit_sparse_pauli_list()
このパウリを単一要素に変換する QubitSparsePauliList.