qiskit_noise_learning.sequences.PartialPauliPermutation
class qiskit_noise_learning.sequences.PartialPauliPermutation(partial_permutation_indices: NDArray[int8])
ベース: Instruction
n個の量子 n ビットにおける単一量子ビットの位相を持たないパウリ演算の、部分的に指定された順列。
A は、パウリ群の特定の位相を制限する必要がない場合における、単一量子ビットのクリフォード演算の層の部分的な仕様を表す PartialPauliPermutation 。 この仕様が部分的なものであるのは、こうした層を段階的に構築できるようにするためである。 ある部分置換が、性質 bool によって示されるように PartialPauliPermutation.is_complete、置換の完全な仕様であるという意味で「完全」となった時点で、その順序に従って、各量子ビットにその置換を実装するデフォルトのクリフォード演算が割り当てられる COMPLETE_TO_C1_TABLEAU。
ある量子ビット上の2つの部分置換は、それらの両方の置換を実装する単一量子ビットのクリフォード演算が存在する場合、結合可能である(および is_mergeable_with() を参照 merge())。これは、一般性を失うことなく、一方のパウリ演算が他方とは異なるパウリ演算に写像されないということである。
このクラスの主なデータ表現は整数のリストであり、各整数は、で定義された特定の単一量子ビットの部分パウリ順列をインデックスとして指し示しており partial_permutation_sets()、これにより固定された順序が与えられます。
ただし、人間が読みやすい形式 setの表現は、PartialPauliPermutation.from_sets() class メソッドを介して構築に使用することも、メソッド PartialPauliPermutation.to_sets() を介してインスタンスから取得することもできます。 単一の量子ビットの場合、部分置換は、その set 要素が の形式を持つ tuples である として指定される (p0, p1)。ここで、 および p0 は から抽出された文字列である p1 ["Z", "X", "Y"] 。 これは、が置換によって に写像される p0 ことを示 tuple している p1。
パラメーター
partial_permutation_indices – インデックスが指定された部分順列のNumPy配列。 量子ビットの数は、長さから決定されます。
__init__
__init__(partial_permutation_indices: NDArray[int8])
方法
コラム「 1 」 | コラム「 2 」 |
|---|---|
__init__(部分_順列_添字) | |
complete() | 完全であり、かつそれ自体と一貫性のある新しい部分順列を返す。 |
compose(その他) | 別の部分順列と組み合わせる。 |
empty(num_qubits) | . 上で、完全に未指定のインスタンスを生成します num_qubits。 |
from_qubit_sparse_pauli_lists(in_paulis,...) | を に in_paulis 写す写像 PartialPauliPermutation を定義せよ out_paulis。 |
from_qubit_sparse_paulis(in_pauli, out_pauli) | を に in_pauli 写す写像 PartialPauliPermutation を定義せよ out_pauli。 |
from_sets(セット) | 集合のリストから構築する。 |
is_mergeable_with(その他) | この指示が別の指示と統合可能かどうか。 |
merge(その他) | 「自己」と「他者」をひとつの指示に統合する。 |
propagate(...) | あるパウリ演算子に対して、この置換によって暗示されるクリフォード演算子を通じてそれを伝播させる。 |
to_sets() | セットの表現を返す。 |
属性
コラム「 1 」 | コラム「 2 」 |
|---|---|
inverse | この部分順列の逆順列を返す。 |
is_complete | 「self」が、単一量子ビットのパウリ置換の完全な仕様を表しているかどうか。 |
num_qubits | |
partial_permutation_indices | 部分順列の生の数値形式。 |
structure_token | この命令のハッシュ可能な要約であり、マージ可能性を制限するものである。 |
inverse
種類: Self
この部分順列の逆順列を返す。
これにより、部分的に指定された反転が返されます。つまり、このインスタンスに存在するマッピングのみが反転されます。 なお、補完の規則は、逆転と整合性を保つように選ばれていることに留意されたい。つまり、……という意味で self.inverse.complete() == self.complete().inverse。 さらに、によって示唆されるクリフォードは、示唆されたクリフォードの逆 COMPLETE_TO_C1_TABLEAU である。
is_complete
種類: bool
「self」が、単一量子ビットのパウリ置換の完全な仕様を表しているかどうか。
partial_permutation_indices
種類: NDArray[int8]
部分順列の生の数値形式。
structure_token
種類: Hashable
この命令のハッシュ可能な要約であり、マージ可能性を制限するものである。
このトークンは、マージ不可能性を安価に確認する手段となります。構造トークンが異なる命令は、決してマージできません。 したがって、このトークンは、命令の種類を互いに区別できなければならない。
complete
complete() → Self
完全であり、かつそれ自体と一貫性のある新しい部分順列を返す。
なお、以下の点を確実にするために、これらの規約が採用されていることにご留意ください:
- 恒等写像と整合する部分的に指定された置換は、すべて恒等写像に写像され、
self.inverse.complete() == self.complete().inverse.
戻り値
…の完結版を収録 PartialPauliPermutation した新作 self。
compose
compose(other: Self) → Self
別の部分順列と組み合わせる。
完全置換の場合、 は に対応する置換を返します self.compose(other)``C1 @ C2 。ここで、 および C1 は、それぞれ および self に対応するクリフォード演算子です C2``other 。 部分的に指定された順列には単一の写像しか含まれず、合成は、の 出力が の入力となる other 場合にのみ、自然な形で定義される self。 最後に、と self のうち一方が不完全 other で、もう一方が完全である場合、合成は定義されないことに注意してください。 これは、後述するように、完了と合成の可換性を保証できないことに起因する。
なお、補完の規則は、以下の意味において、合成の規則と一貫性を保つように選ばれていることに留意されたい self.compose(other).complete() == self.complete().compose(other.complete())。 さらに、完全順列の場合、によって示唆されるクリフォードへの写像は、群準同型(乗法を保つ)である COMPLETE_TO_C1_TABLEAU 。
パラメーター
その他 – 共に創作する相手。
戻り値
構成された順列。
昇給
ValueError – と self の合成 other が未定義の場合。
empty
classmethod empty(num_qubits: int) → Self
. 上で、完全に未指定のインスタンスを生成します num_qubits。
パラメーター
num_qubits – 量子ビットの数。
戻り値
新しい、些細な PartialPauliPermutation.
from_qubit_sparse_paulis
classmethod from_qubit_sparse_paulis(in_pauli: QubitSparsePauli, out_pauli: QubitSparsePauli) → Self
を に in_pauli 写す写像 PartialPauliPermutation を定義せよ out_pauli。
パラメーター
- in_pauli – マッピング対象となるパウリ。
- out_pauli – マッピング先の Pauli。
戻り値
を in_pauli に写す新しい である PartialPauliPermutationout_pauli 。
昇給
ValueError – in_pauli と out_pauli が同じクビット数でない場合、または同じクビットに対して作用しない場合。
from_qubit_sparse_pauli_lists
classmethod from_qubit_sparse_pauli_lists(in_paulis: QubitSparsePauliList, out_paulis: QubitSparsePauliList) → Self
を に in_paulis 写す写像 PartialPauliPermutation を定義せよ out_paulis。
パラメーター
- in_paulis – マッピング対象となるパウリス。
- out_paulis – マッピング先の Paulis。
戻り値
昇給
ValueError – 量子ビットの数が一致しない場合、または暗黙的に想定される順列に不整合がある場合。
from_sets
classmethod from_sets(sets: list[frozenset[tuple[str, str]]]) → Self
集合のリストから構築する。
期待される形式については、クラスのドキュメントを参照してください。
パラメーター
集合 – 部分順列を指定する集合。
戻り値
新しいインスタンス。
昇給
ValueError – いずれかのセットが無効な場合。
is_mergeable_with
is_mergeable_with(other)
この指示が別の指示と統合可能かどうか。
2つの命令は、その両方の動作を同時に実行する3つ目の命令が存在する場合、マージ可能である。 最も単純なケースは、命令が同一である場合です。この場合、3番目の命令は、同じ命令の3番目のインスタンスとすることができます。 しかし、一部の命令タイプ(特に PartialPauliPermutation)は、必ずしも自身の動作を完全に規定しているわけではないため、非自明なケースが生じる可能性がある。その結果、互いに異なるインスタンスであっても、単一の第三のインスタンスによってその制約が同時に満たされることがあり得る。
このメソッドが を返す場合 True、メソッド は正常に実行されるはずです merge() 。
パラメーター
その他 – マージ可能性を確認するためのその他の指示。
戻り値
この指示は、他の指示と統合可能かどうか。
merge
merge(other)
「自己」と「他者」をひとつの指示に統合する。
パラメーター
その他 – マージする相手となるもう一方の指示。
戻り値
この命令と他の命令の動作を同時に実行する、ある命令(おそらく同じインスタンス)。
propagate
propagate(pauli: QubitSparsePauli, inverse: bool = False) → QubitSparsePauli
propagate(pauli: PhasedQubitSparsePauli, inverse: bool = False) → PhasedQubitSparsePauli
あるパウリ演算子に対して、この置換によって暗示されるクリフォード演算子を通じてそれを伝播させる。
この方法は、供給されるパウリのタイプに応じて、位相ありの伝播と位相なしの伝播のどちらにも適用できます。 不位相伝播は、その順列がパウリ基底上で定義されている限り、不完全な順列に対しても実行可能です。 段階的伝播を行うには、が完了している self 必要があり、そうして初めてこのインスタンスに明示的なクリフォード演算子を関連付けることができる。
パラメーター
pauli – レイヤーを適用する「Pauli」です。
戻り値
進化したパウリ。
昇給
- ValueError – の場合
pauli.num_qubits != self.num_qubits、または の場合isinstance(pauli, PhasedQubitSparsePauli and not self.is_complete、あるいは がフェーズ外でありpauli、かつこのインスタンスがそのフェーズ上で未定義である場合。 - TypeError – が無効な型
pauliである場合。
to_sets
to_sets() → list[frozenset[tuple[str, str]]]
セットの表現を返す。