Clifford
class qiskit.quantum_info.Clifford(data, validate=True, copy=True)
ベース BaseOperator AdjointMixin、 Operation
クリフォード群のN量子ビットユニタリー演算子。
N量子ビットのクリフォード作用素は、(大域的な位相まで)共役によってポーリスをポーリスに変換する。 より正確には、クリフォード群 は次のように定義される
ここで、 はシングル量子ビットのパウリ演算子によって生成される 量子ビット上のパウリ群であり、 は 量子ビット上の演算を表すユニタリー群 のユニタリー演算子である。 はスカラーユニタリー行列の部分群による商群 。
表現
N量子ビットのクリフォード演算子は、参考文献 [1の]慣例に従い、長さ 2N × ( 2N+1 ) boolean tableauとして格納される。
- 0行目から N-1 は不安定化群生成子
- N 行から 2N-1 はスタビライザー 群生成子である。
クリフォードの内部ブーリアン・テーブルは、 tableau 属性を使ってアクセスできる。 デスタビライザーまたはスタビライザーの行は、それぞれ長さNのスタビライザーテーブルとして、次のようにアクセスできます。 destab と stab 属性を使用してアクセスできます。
クリフォード演算子のより読みやすい表現は to_dict() メソッドを呼び出すことで得られる。 この表現は、次の例のようにクリフォード・オブジェクトが印刷される場合にも使われる
from qiskit import QuantumCircuit
from qiskit.quantum_info import Clifford
# Bell state generation circuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
cliff = Clifford(qc)
# Print the Clifford
print(cliff)
# Print the Clifford destabilizer rows
print(cliff.to_labels(mode="D"))
# Print the Clifford stabilizer rows
print(cliff.to_labels(mode="S"))Clifford: Stabilizer = ['+XX', '+ZZ'], Destabilizer = ['+IZ', '+XI']
['+IZ', '+XI']
['+XX', '+ZZ']回路変換
クリフォード演算子は、以下のクリフォード・ ゲートだけを含む回路から初期化できる: IGate, XGate, YGate, ZGate, HGate, SGate, SdgGate, SXGate, SXdgGate, CXGate, CZGate, CYGate, DCXGate, SwapGate, iSwapGate, ECRGate, LinearFunction, PermutationGate.に戻すことができる。 QuantumCircuitまたは Gate オブジェクトに戻すことができる。 to_circuit() または to_instruction() メソッドを使ってオブジェクトに戻すことができる。 この分解は、ゲート数の点で必ずしも最適ではないことに注意。
また、クリフォード演算子は Operator オブジェクトに変換することもできる。 to_operator() メソッドを使ってオブジェクトに変換することもできる。 これは、回路に分解し、その回路をユニタリー演算子としてシミュレートすることによって行われる。
参考文献
- S. Aaronson, D. Gottesman, Improved Simulation of Stabilizer Circuits, Phys. Rev. A 70, 052328 (2004). arXiv:quant-ph/0406196
演算子オブジェクトを初期化します。
属性
デスタブ
シンプレクティック表現の不安定化配列。
不安定化段階
デスタビライザーの位相をブーリアン表現で返す。
destab_x
シンプレクティック表現の不安定化 x 配列。
destab_z
シンプレクティック表現の不安定化z配列。
DIM
タプル(input_shape, output_shape)を返す。
名前
操作タイプを表す一意の文字列識別子。
num_clbits
クラシックビットの数。
num_qubits
N量子ビット演算子の場合は量子ビット数を、それ以外の場合はNoneを返す。
フェーズ
位相をブーリアン表現で返す。
qargs
演算子の qargs を返す。
刺す
シンプレクティック表現のスタビライザー配列。
stab_phase
スタビライザーの位相をブーリアン表現で返す。
stab_x
シンプレクティック表現のスタビライザーx配列。
stab_z
シンプレクティック表現のスタビライザー配列。
シンプレクティック行列
ブール値のシンプレクティック行列を返す。
x
シンプレクティック表現のx配列。
z
シンプレクティック表現のz配列。
方法
随伴
構成する
compose(other, qargs=None, front=False)
別のクリフォードとの演算子合成を返す。
パラメーター
- other (Clifford) – クリフォード・オブジェクト。
- qargs (list or None) – オプションで、その他を適用するサブシステムの位置のリスト。 None の場合、すべてのサブシステムに適用される(デフォルト:None)。
- front (bool) – Trueの場合、左掛け算ではなく右掛け算で合成する [:False].
戻り値
構成されたクリフォード
戻りの型
レイズ
QiskitError - 他が演算子に変換できない場合、または指定されたサブシステムに対して互換性のない寸法を持つ場合。
共役
コピー
ドット
dot(other, qargs=None)
右掛け演算子 self * other を返します。
パラメーター
- other (Operator) – 演算子オブジェクト。
- qargs (list or None) – オプションで、その他を適用するサブシステムの位置のリスト。 None の場合、すべてのサブシステムに適用される(デフォルト:None)。
戻り値
演算子を乗じた右行列。
戻りの型
ドット積は、 @ 二項演算子を用いて求めることができる。 したがって、 a.dot(b) は a @ b と等価である。
展開
expand(other)
別のクリフォードとの逆順テンソル積を返す。
パラメーター
other (Clifford) – クリフォード・オブジェクト。
戻り値
テンソル積 。
は現在のクリフォード、 はもう一人のクリフォードである。
戻りの型
from_circuit
static from_circuit(circuit)
QuantumCircuit またはインストラクションから初期化する。
パラメーター
circuit (QuantumCircuit orInstruction) – 命令で初期化する。
戻り値
命令に対するクリフォード・オブジェクト。
戻りの型
レイズ
QiskitError - 入力命令が非クリフォード命令であるか、古典的なレジスタ命令を含んでいる場合。
from_dict
from_label
static from_label(label)
単一量子ビットクリフォードゲートのテンソル積を返す。
パラメーター
label (string) – 単一量子ビット演算子文字列。
戻り値
N量子ビットクリフォード演算子。
戻りの型
レイズ
QiskitError - ラベルに無効な文字が含まれている場合。
追加情報:
ラベルは1量子ビットのクリフォードに対応している
-
- ラベル
- スタビライザー
- デスタビライザー
-
"I"- +Z
- +X
-
"X"- -Z
- +X
-
"Y"- -Z
- -X
-
"Z"- +Z
- -X
-
"H"- +X
- +Z
-
"S"- +Z
- +Y
線形関数から
classmethod from_linear_function(linear_function)
一次関数からクリフォードを作成する。
一次関数がnxnの二項反転行列Aで表される場合、対応するクリフォードはシンプレクティック行列 [[A^t, 0], [0, A^ {-1}] ]を持つ。
パラメーター
linear_function (LinearFunction) – 変換される一次関数。
戻り値
この線形関数のクリフォード・オブジェクト。
戻りの型
from_matrix
classmethod from_matrix(matrix)
ユニタリー行列からクリフォードを作成する。
この関数には指数関数的に長い時間 w.r.t がかかることに注意してほしい。 量子ビットの数。
パラメーター
matrix (np.array) – 変換するクリフォードを表すユニタリー行列。
戻り値
ユニタリー行列のクリフォードオブジェクト。
戻りの型
レイズ
QiskitError - 入力がクリフォード行列でない場合。
from_operator
classmethod from_operator(operator)
演算子からクリフォードを作る。
この関数には指数関数的に長い時間 w.r.t がかかることに注意してほしい。 量子ビットの数。
パラメーター
operator (Operator) – 変換するクリフォードを表す演算子。
戻り値
演算子のクリフォード・オブジェクト。
戻りの型
レイズ
QiskitError - 入力がクリフォード演算子でない場合。
from_permutation
classmethod from_permutation(permutation_gate)
PermutationGate からクリフォードを作成する。
パラメーター
permutation_gate (PermutationGate) – 変換される順列。
戻り値
この順列のクリフォード・オブジェクト。
戻りの型
入力次元数
は単一である
出力次元
電源
power(n)
演算子をそれ自身と n 回合成したものを返す。
パラメーター
n (int) – self ( n>0 ) と合成する回数。
戻り値
n回合成された演算子。
戻りの型
レイズ
QiskitError - 演算子の入力次元と出力次元が等しくない場合、またはべき乗が正の整数でない場合。
形状変更
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 - すべてのサブシステム入力次元またはサブシステム出力次元の合計サイズが一定でない場合。
Tensor
tensor(other)
別のクリフォードとのテンソル積を返す。
パラメーター
other (Clifford) – クリフォード・オブジェクト。
戻り値
テンソル積 。
は現在のクリフォード、 はもう一人のクリフォードである。
戻りの型
テンソル積は、 ^ 二項演算子を用いて求めることができる。 したがって、 a.tensor(b) は a ^ b と等価である。
to_circuit
to_circuit()
クリフォードを実装した QuantumCircuit を返す。
N <= 3 qubits this is based on optimal CX cost decomposition from reference [1]. For N > 3量子ビットの場合、参考文献 [2に]ある一般的な非最適コンパイルルーチンを用いている。
戻り値
クリフォードの回路実装。
戻りの型
参考文献
- S. Bravyi, D. Maslov, Hadamard-free回路がクリフォード群の構造を暴露, arXiv:2003.09412 [quant-ph]
- S. Aaronson, D. Gottesman, Improved Simulation of Stabilizer Circuits, Phys. Rev. A 70, 052328 (2004). arXiv:quant-ph/0406196
to_dict
to_instruction
to_labels
to_labels(array=False, mode='B')
CliffordをPauli(de)stabilizer文字列ラベルのリストに変換する。
array=True kwargを使用すると、ラベルの完全なNumpy配列のメモリが事前に確保されるため、大きなCliffordの変換がより効率的になります。
ラベル | フェーズ | シンプレクティック | クロス集計 | パウリ |
|---|
| "+I" | 0 | | | | | "-I" | 1 | | | | | "X" | 0 | | | | | "-X" | 1 | | | | | "Y" | 0 | | | | | "-Y" | 1 | | | | | "Z" | 0 | | | | | "-Z" | 1 | | | |
パラメーター
- array (bool) – TrueならNumpyの配列を返し、そうでなければリストを返す(デフォルト:False)。
- mode (Literal["S", "D", "B"]) – B "の場合はスタビライザーとデスタビライザーの両方を返し、"S "の場合はスタビライザーのみを返し、"D "の場合はデスタビライザーのみを返す。
戻り値
StabilizerTable、ラベル形式の行。
戻りの型
リストまたは配列
レイズ
QiskitError - スタビライザーとデスタビライザーが両方とも偽の場合。