SolovayKitaevDecomposition
class qiskit.synthesis.SolovayKitaevDecomposition(basic_approximations=None, *, basis_gates=None, depth=12, check_input=False)
ベース: object
Solovay Kitaev離散分解アルゴリズム。
このクラスはトランスパイラーのパスによって再帰的に呼び出される。 参照 SolovayKitaev を参照のこと。
ファイル .npy として渡された basic_approximations 場合、内部でピクルが使用されてデータが読み込まれます。 これは潜在的なセキュリティ上の脆弱性であり、信頼できるファイルのみを読み込むべきです。
パラメーター
-
basic_approximations (str |dict[str, np.ndarray] | list[GateSequence] | None) –
離散ゲートを用いたSO(3)の基本近似の仕様。 このアルゴリズムの各反復において、残差はこの集合の中で最も近いゲート列を用いて近似される。 a が指定されている
str場合、これは近似値を読み込むファイル名を指定します。 もし adictなら、これは 組{gates: effective_SO3_matrix}を含みます。例えば{"h t": np.array([[0, 0.7071, -0.7071], [0, -0.7071, -0.7071], [-1, 0, 0]]}、。 リストの場合、これには辞書と同じ情報が含まれていますが、すでにオブジェクトGateSequenceに変換されており、そのオブジェクトにはSO(3)行列とゲートが含まれています。このパラメータか、
basis_gates、depthのどちらかを指定する。 -
basis_gates (list[str |Gate] | None) – 離散的な(つまりパラメータ化されていない)標準ゲートのリスト。 デフォルトは
["h", "t", "tdg"]です。 -
depth (int) – 基底セットで考慮する基底ゲートの組み合わせの数。 これはアルゴリズムが収束する速さ(と収束する場合)を決定するもので、十分に高い値を選ぶべきである。
-
check_input (bool) –
Trueの場合、行列が期待される形式かどうかをチェックする中間ステップを実行する。
属性
basis_gates
基本近似の基礎ゲートセット。
None の場合、デフォルトは ["h", "t", "tdg"]。
check_input
内部データの実行時チェックを行うかどうか。
depth
基本近似の最大ゲート深度。
方法
find_basic_approximation
find_basic_approximation(sequence)
sequence に近似する self._basic_approximations の GateSequence を見つける。
このメソッドは、Qiskit 2.3qiskit.synthesis.discrete_basis.solovay_kitaev.SolovayKitaevDecomposition.find_basic_approximation() の時点で非推奨となっています。 リリース日から3ヶ月以上経過した時点で削除されます。 代わりに query_basic_approximation を使用してください。これはゲートまたは行列を入力として受け取り、 QuantumCircuit オブジェクトを返します。
パラメーター
sequence (GateSequence) – GateSequence の近似値を求める。
戻り値
GateSequence で、 sequence に近似する。
戻りの型
GateSequence
load_basic_approximations
static load_basic_approximations(data)
基本的な近似値をロードする。
引数として文字列が渡された場合 data 、このメソッドは内部的にpickleを利用してファイルを読み込みます。 これは潜在的なセキュリティ上の脆弱性であり、信頼できるファイルのみを読み込むべきです。
パラメーター
data (list |str |dict) – 文字列の場合、データをロードするファイルへのパスを指定する。 辞書の場合は、 {gates: matrix} または {gates: (matrix, global_phase)} として直接分解を指定する。 ここで、 gates はSO(3)行列 matrix を生成するゲートの名前である。 {"h t": np.array([[0, 0.7071, -0.7071], [0, -0.7071, -0.7071], [-1, 0, 0]]} と global_phase 、量子ゲートのU(2)行列と保存されたSO(3)行列の間の大域的な位相差を説明するために与えることができる。 指定がない場合、 global_phase は0とみなされる。
戻り値
GateSequence 型としての基本的な近似値のリスト。
レイズ
ValueError - ゲートの組み合わせと関連マトリックスの数が一致しない場合。
戻りの型
[GateSequence] のリスト
query_basic_approximation
run
run(gate_matrix, recursion_degree, return_dag=False, check_input=True)
アルゴリズムを実行する。
パラメーター
- gate_matrix (np.ndarray | Gate) – 近似する単一量子ビットゲート。 のいずれかである。
GateここでGate.to_matrix()行列,またはゲートを表す ユニタリ行列を返します. - recursion_degree (int) – 再帰度。論文では 。
- return_dag (bool) – if
Truereturn aDAGCircuitを返します。QuantumCircuit. - check_input (bool) –
Trueの場合、入力行列が分解に有効かどうかをチェックする。 同じ名前の class 属性をオーバーライドしますが、この関数呼び出しに対してのみオーバーライドします。
戻り値
gate_matrix を指定された離散基底で近似した1量子ビット回路。
戻りの型
save_basic_approximations
save_basic_approximations(filename)
基本的な近似値をファイルに保存する。
これは、クラス・イニシャライザー(推奨)または load_basic_approximations():
filename = "approximations.bin"
sk.save_basic_approximations(filename)
new_sk = SolovayKitaevDecomposition(filename)パラメーター
filename (str) – 近似値を保存するファイル名。
レイズ
ValueError - ファイル名の拡張子が.npyの場合。 フォーマットは.npyではないので、そのように保存すると、ファイルを再度読み込む際にエラーが発生する可能性がある。