Skip to main content
IBM Quantum Platform

Clifford

class qiskit.quantum_info.Clifford(data, validate=True, copy=True)

GitHub

ベース BaseOperator AdjointMixinOperation

クリフォード群のN量子ビットユニタリー演算子。

N量子ビットのクリフォード作用素は、(大域的な位相まで)共役によってポーリスをポーリスに変換する。 より正確には、クリフォード群 CN\mathcal{C}_N は次のように定義される

CN={UU(2N)UPNU=PN}/U(1)\mathcal{C}_N = \{ U \in U(2^N) | U \mathcal{P}_N U^{\dagger} = \mathcal{P}_N \} / U(1)

ここで、 PN\mathcal{P}_N はシングル量子ビットのパウリ演算子によって生成される NN 量子ビット上のパウリ群であり、 UUNN 量子ビット上の演算を表すユニタリー群 U(2N)U(2^N) のユニタリー演算子である。 CN\mathcal{C}_N はスカラーユニタリー行列の部分群による商群 U(1)U(1)

表現

N量子ビットのクリフォード演算子は、参考文献 [1の]慣例に従い、長さ 2N × ( 2N+1 ) boolean tableauとして格納される。

  • 0行目から N-1不安定化群生成子
  • N 行から 2N-1スタビライザー 群生成子である。

クリフォードの内部ブーリアン・テーブルは、 tableau 属性を使ってアクセスできる。 デスタビライザーまたはスタビライザーの行は、それぞれ長さNのスタビライザーテーブルとして、次のようにアクセスできます。 destabstab 属性を使用してアクセスできます。

クリフォード演算子のより読みやすい表現は 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() メソッドを使ってオブジェクトに戻すことができる。 この分解は、ゲート数の点で必ずしも最適ではないことに注意。

クリフォード回路の最小生成ゲート集合は HGate そして SGate ゲート*と *CXGate または CZGate 2量子ビットゲート。

また、クリフォード演算子は Operator オブジェクトに変換することもできる。 to_operator() メソッドを使ってオブジェクトに変換することもできる。 これは、回路に分解し、その回路をユニタリー演算子としてシミュレートすることによって行われる。

参考文献

  1. 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配列。


方法

随伴

adjoint()

GitHub

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

構成する

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

GitHub

別のクリフォードとの演算子合成を返す。

パラメーター

  • other (Clifford) – クリフォード・オブジェクト。
  • qargs (list or None) – オプションで、その他を適用するサブシステムの位置のリスト。 None の場合、すべてのサブシステムに適用される(デフォルト:None)。
  • front (bool) – Trueの場合、左掛け算ではなく右掛け算で合成する [:False].

戻り値

構成されたクリフォード

戻りの型

Clifford

レイズ

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

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

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

共役

conjugate()

GitHub

クリフォードの共役を返す。

コピー

copy()

GitHub

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

ドット

dot(other, qargs=None)

GitHub

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

パラメーター

  • other (Operator) – 演算子オブジェクト。
  • qargs (list or None) – オプションで、その他を適用するサブシステムの位置のリスト。 None の場合、すべてのサブシステムに適用される(デフォルト:None)。

戻り値

演算子を乗じた右行列。

戻りの型

オペレーター

ドット積は、 @ 二項演算子を用いて求めることができる。 したがって、 a.dot(b)a @ b と等価である。

展開

expand(other)

GitHub

別のクリフォードとの逆順テンソル積を返す。

パラメーター

other (Clifford) – クリフォード・オブジェクト。

戻り値

テンソル積 bab \otimes aaa

は現在のクリフォード、 bb はもう一人のクリフォードである。

戻りの型

Clifford

from_circuit

static from_circuit(circuit)

GitHub

QuantumCircuit またはインストラクションから初期化する。

パラメーター

circuit (QuantumCircuit orInstruction) – 命令で初期化する。

戻り値

命令に対するクリフォード・オブジェクト。

戻りの型

Clifford

レイズ

QiskitError - 入力命令が非クリフォード命令であるか、古典的なレジスタ命令を含んでいる場合。

from_dict

classmethod from_dict(obj)

GitHub

辞書からクリフォードを読み込む

from_label

static from_label(label)

GitHub

単一量子ビットクリフォードゲートのテンソル積を返す。

パラメーター

label (string) – 単一量子ビット演算子文字列。

戻り値

N量子ビットクリフォード演算子。

戻りの型

Clifford

レイズ

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)

GitHub

一次関数からクリフォードを作成する。

一次関数がnxnの二項反転行列Aで表される場合、対応するクリフォードはシンプレクティック行列 [[A^t, 0], [0, A^ {-1}] ]を持つ。

パラメーター

linear_function (LinearFunction) – 変換される一次関数。

戻り値

この線形関数のクリフォード・オブジェクト。

戻りの型

Clifford

from_matrix

classmethod from_matrix(matrix)

GitHub

ユニタリー行列からクリフォードを作成する。

この関数には指数関数的に長い時間 w.r.t がかかることに注意してほしい。 量子ビットの数。

パラメーター

matrix (np.array) – 変換するクリフォードを表すユニタリー行列。

戻り値

ユニタリー行列のクリフォードオブジェクト。

戻りの型

Clifford

レイズ

QiskitError - 入力がクリフォード行列でない場合。

from_operator

classmethod from_operator(operator)

GitHub

演算子からクリフォードを作る。

この関数には指数関数的に長い時間 w.r.t がかかることに注意してほしい。 量子ビットの数。

パラメーター

operator (Operator) – 変換するクリフォードを表す演算子。

戻り値

演算子のクリフォード・オブジェクト。

戻りの型

Clifford

レイズ

QiskitError - 入力がクリフォード演算子でない場合。

from_permutation

classmethod from_permutation(permutation_gate)

GitHub

PermutationGate からクリフォードを作成する。

パラメーター

permutation_gate (PermutationGate) – 変換される順列。

戻り値

この順列のクリフォード・オブジェクト。

戻りの型

Clifford

入力次元数

input_dims(qargs=None)

GitHub

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

は単一である

is_unitary()

GitHub

クリフォード・テーブルが有効であれば真を返す。

出力次元

output_dims(qargs=None)

GitHub

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

電源

power(n)

GitHub

演算子をそれ自身と n 回合成したものを返す。

パラメーター

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

戻り値

n回合成された演算子。

戻りの型

Clifford

レイズ

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

形状変更

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 - すべてのサブシステム入力次元またはサブシステム出力次元の合計サイズが一定でない場合。

Tensor

tensor(other)

GitHub

別のクリフォードとのテンソル積を返す。

パラメーター

other (Clifford) – クリフォード・オブジェクト。

戻り値

テンソル積 aba \otimes baa

は現在のクリフォード、 bb はもう一人のクリフォードである。

戻りの型

Clifford

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

to_circuit

to_circuit()

GitHub

クリフォードを実装した QuantumCircuit を返す。

N <= 3 qubits this is based on optimal CX cost decomposition from reference [1]. For N > 3量子ビットの場合、参考文献 [2に]ある一般的な非最適コンパイルルーチンを用いている。

戻り値

クリフォードの回路実装。

戻りの型

QuantumCircuit

参考文献

  1. S. Bravyi, D. Maslov, Hadamard-free回路がクリフォード群の構造を暴露, arXiv:2003.09412 [quant-ph]
  2. S. Aaronson, D. Gottesman, Improved Simulation of Stabilizer Circuits, Phys. Rev. A 70, 052328 (2004). arXiv:quant-ph/0406196

to_dict

to_dict()

GitHub

Cliffordオブジェクトの辞書表現を返す。

to_instruction

to_instruction()

GitHub

クリフォードを実装したゲート命令を返す。

to_labels

to_labels(array=False, mode='B')

GitHub

CliffordをPauli(de)stabilizer文字列ラベルのリストに変換する。

array=True kwargを使用すると、ラベルの完全なNumpy配列のメモリが事前に確保されるため、大きなCliffordの変換がより効率的になります。

ラベル
フェーズ
シンプレクティック
クロス集計
パウリ

| "+I" | 0 | [0,0][0, 0] | [1001]\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} | II | | "-I" | 1 | [0,0][0, 0] | [1001]\begin{bmatrix} -1 & 0 \\ 0 & -1 \end{bmatrix} | I-I | | "X" | 0 | [1,0][1, 0] | [0110]\begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} | XX | | "-X" | 1 | [1,0][1, 0] | [0110]\begin{bmatrix} 0 & -1 \\ -1 & 0 \end{bmatrix} | X-X | | "Y" | 0 | [1,1][1, 1] | [0110]\begin{bmatrix} 0 & 1 \\ -1 & 0 \end{bmatrix} | iYiY | | "-Y" | 1 | [1,1][1, 1] | [0110]\begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} | iY-iY | | "Z" | 0 | [0,1][0, 1] | [1001]\begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix} | ZZ | | "-Z" | 1 | [0,1][0, 1] | [1001]\begin{bmatrix} -1 & 0 \\ 0 & 1 \end{bmatrix} | Z-Z |

パラメーター

  • array (bool) – TrueならNumpyの配列を返し、そうでなければリストを返す(デフォルト:False)。
  • mode (Literal["S", "D", "B"]) – B "の場合はスタビライザーとデスタビライザーの両方を返し、"S "の場合はスタビライザーのみを返し、"D "の場合はデスタビライザーのみを返す。

戻り値

StabilizerTable、ラベル形式の行。

戻りの型

リストまたは配列

レイズ

QiskitError - スタビライザーとデスタビライザーが両方とも偽の場合。

to_matrix

to_matrix()

GitHub

演算子をNumpy行列に変換します。

to_operator

to_operator()

GitHub

Operator オブジェクトに変換します。

戻りの型

オペレーター

入れ替え

transpose()

GitHub

クリフォードの転置を返す。

このページは役に立ちましたか?
GitHub に関するバグ、誤字の報告、またはコンテンツのリクエスト。