Skip to main content
IBM Quantum Platform

SolovayKitaevDecomposition

class qiskit.synthesis.SolovayKitaevDecomposition(basic_approximations=None, *, basis_gates=None, depth=12, check_input=False)

GitHub

ベース: object

Solovay Kitaev離散分解アルゴリズム。

このクラスはトランスパイラーのパスによって再帰的に呼び出される。 参照 SolovayKitaev を参照のこと。

ファイル .npy として渡された basic_approximations 場合、内部でピクルが使用されてデータが読み込まれます。 これは潜在的なセキュリティ上の脆弱性であり、信頼できるファイルのみを読み込むべきです。

パラメーター

  • basic_approximations (str |dict[str, np.ndarray] | list[GateSequence] | None) –

    離散ゲートを用いたSO(3)の基本近似の仕様。 このアルゴリズムの各反復において、残差はこの集合の中で最も近いゲート列を用いて近似される。 a が指定されている str場合、これは近似値を読み込むファイル名を指定します。 もし a dictなら、これは 組 {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_gatesdepth のどちらかを指定する。

  • 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)

GitHub

sequence に近似する self._basic_approximationsGateSequence を見つける。

2.3 以降非推奨

このメソッドは、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)

GitHub

基本的な近似値をロードする。

引数として文字列が渡された場合 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

query_basic_approximation(gate)

GitHub

行列の基本的な近似値を問い合わせる。

パラメーター

gate (ndarray |Gate)

戻りの型

QuantumCircuit

run

run(gate_matrix, recursion_degree, return_dag=False, check_input=True)

GitHub

アルゴリズムを実行する。

パラメーター

  • gate_matrix (np.ndarray | Gate) – 近似する単一量子ビットゲート。 のいずれかである。 Gateここで Gate.to_matrix() 行列,またはゲートを表す 2×22\times 2 ユニタリ行列を返します.
  • recursion_degree (int) – 再帰度。論文では nn
  • return_dag (bool) – if True return a DAGCircuitを返します。 QuantumCircuit.
  • check_input (bool) – True の場合、入力行列が分解に有効かどうかをチェックする。 同じ名前の class 属性をオーバーライドしますが、この関数呼び出しに対してのみオーバーライドします。

戻り値

gate_matrix を指定された離散基底で近似した1量子ビット回路。

戻りの型

QuantumCircuit | DAG回路

save_basic_approximations

save_basic_approximations(filename)

GitHub

基本的な近似値をファイルに保存する。

これは、クラス・イニシャライザー(推奨)または load_basic_approximations():

filename = "approximations.bin"
sk.save_basic_approximations(filename)

new_sk = SolovayKitaevDecomposition(filename)

パラメーター

filename (str) – 近似値を保存するファイル名。

レイズ

ValueError - ファイル名の拡張子が.npyの場合。 フォーマットは.npyではないので、そのように保存すると、ファイルを再度読み込む際にエラーが発生する可能性がある。

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。