Skip to main content
IBM Quantum Platform

Nローカル

class qiskit.circuit.library.NLocal(num_qubits=None, rotation_blocks=None, entanglement_blocks=None, entanglement=None, reps=1, insert_barriers=False, parameter_prefix='θ', overwrite_block_parameters=True, skip_final_rotation_layer=False, skip_unentangled_qubits=False, initial_state=None, name='nlocal', flatten=None)

GitHub

ベース: BlueprintCircuit

nローカル回路クラス。

nローカル回路の構造は、回転層とエンタングルメント層が交互に配置されている。 どちらのレイヤーでも、パラメータ化された回路ブロックが、定義された方法で回路に作用する。 回転レイヤーでは、ブロックは互いに重ねられて適用され、エンタングルメントレイヤーでは、 entanglement 戦略に従って適用される。 回路ブロックは任意のサイズ(回路内の量子ビット数に等しい小さいサイズ)を持つことができる。 各レイヤーは reps 回繰り返され、デフォルトでは最後の回転レイヤーが追加される。

例えば、2量子ビットの回転ブロックと、 'linear' エンタングルメントを使った4量子ビットのエンタングルメント・ブロックは、次のような回路になる。

┌──────┐ ░ ┌──────┐                      ░ ┌──────┐
┤0     ├─░─┤0     ├──────────────── ... ─░─┤0     ├
│  Rot │ ░ │      │┌──────┐              ░ │  Rot │
┤1     ├─░─┤1     ├┤0     ├──────── ... ─░─┤1     ├
├──────┤ ░ │  Ent ││      │┌──────┐      ░ ├──────┤
┤0     ├─░─┤2     ├┤1     ├┤0     ├ ... ─░─┤0     ├
│  Rot │ ░ │      ││  Ent ││      │      ░ │  Rot │
┤1     ├─░─┤3     ├┤2     ├┤1     ├ ... ─░─┤1     ├
├──────┤ ░ └──────┘│      ││  Ent │      ░ ├──────┤
┤0     ├─░─────────┤3     ├┤2     ├ ... ─░─┤0     ├
│  Rot │ ░         └──────┘│      │      ░ │  Rot │
┤1     ├─░─────────────────┤3     ├ ... ─░─┤1     ├
└──────┘ ░                 └──────┘      ░ └──────┘

|                                 |
+---------------------------------+
       repeated reps times

指定があれば、各ブロックの間にバリアを挿入することができる。 初期状態オブジェクトが提供された場合、それはNLocalの前に追加される。

関連資料

この n_local() 関数は機能的に等価な回路を構築するが、より高速である。

バージョンから非推奨 2.1

クラス qiskit.circuit.library.n_local.n_local.NLocal は Qiskit 2.1 で非推奨となりました。 Qiskit 3.0 で削除されます。 これはNLocalのサブクラスにも当てはまる。 代わりにモジュール qiskit.circuit.library.n_local の対応する関数を使用する。

パラメーター

  • num_qubits (int | None) – 回路の量子ビット数。
  • rotation_blocks (QuantumCircuit |list[QuantumCircuit] | qiskit.circuit.Instruction |list[qiskit.circuit.Instruction] | None) – 回転レイヤーに使用されるブロック。 複数渡された場合、(新しいサブレイヤーのように)次々と適用される。
  • entanglement_blocks (QuantumCircuit |list[QuantumCircuit] | qiskit.circuit.Instruction |list[qiskit.circuit.Instruction] | None) – エンタングルメント層に使用されるブロック。 複数渡された場合、それらは次々に適用される。 サブレイヤーに異なるエンタングルメントを使用するには、以下を参照のこと。 get_entangler_map().
  • entanglement (list[int] | list[list[int]] | None) – 入力ブロックがどの量子ビットに作用するかを指定するインデックス。 None の場合、エンタングルメント・ブロックは回路の先頭に適用される。
  • reps (int) – 回転ブロックともつれブロックを繰り返す頻度を指定する。
  • insert_barriers (bool) – True の場合、各層の間にバリアが挿入される。 False の場合、バリアは挿入されない。
  • parameter_prefix (str) – デフォルトのパラメータが生成される場合に使用する接頭辞。
  • overwrite_block_parameters (bool |list[list[Parameter]]) – 追加したブロックのパラメータを上書きする場合。 False の場合、ブロック内のパラメータは変更されない。
  • skip_final_rotation_layer (bool) – 回路に最終回転層を追加するかどうか。
  • skip_unentangled_qubits (bool) – True の場合、回転ゲートはエンタングルされた量子ビットにのみ作用する。 False の場合、回転ゲートはすべての量子ビットに作用する。
  • initial_state (QuantumCircuit | None) – A QuantumCircuit オブジェクトで、NLocal 回路の前に付加される初期状態を記述するのに使われる。
  • name (str) – 回路の名前。
  • flatten (bool | None) – これを True に設定すると、ゲートオブジェクトの複数のレイヤーの中に入れ子にする代わりに、フラットな回路を出力する。 現在デフォルトでは、出力回路の内容は、よりきれいに視覚化するためにネストされたオブジェクトにラップされる。 しかし、この回路を視覚化以外に使用する場合は、パラメータ・バインディングの大きなパフォーマンス・オーバーヘッドを避けるために、このフラグを True に設定することを強くお勧めします。

レイズ

  • ValueError - reps パラメータが 0 以下の場合。
  • TypeError - reps パラメータが int 値でない場合。

属性

entanglement

エンタングルメント戦略を手に入れろ

戻り値

エンタングルメント戦略 get_entangler_map() を参照してください。

entanglement_blocks

エンタングルメント層のブロック。

戻り値

エンタングルメント層のブロック。

flatten

回路がネストされたゲート/命令でラップされているか、フラット化されているかを返します。

initial_state

n個のローカル回路の前に追加される初期状態を返す。

戻り値

初期状態。

insert_barriers

バリアが層の間に挿入されているかどうか。

戻り値

Trueバリアが層間に挿入されていれば、 False

num_layers

nローカル回路のレイヤー数を返す。

戻り値

回路の層数。

num_parameters_settable

明確な値を設定できるパラメーターの総数。

これは、パラメータがバインドされたり、同じパラメータと交換されたりしても変化しないため、 num_parametersParameter とは異なる。

戻り値

回路で元々使用可能なパラメータの数。

この量は、まだ回路を作る必要はない。

num_qubits

この回路の量子ビット数を返します。

戻り値

量子ビットの数。

ordered_parameters

基礎となる回路で使用されるパラメータ。

これにはフロート値や重複も含まれる。

>>> # prepare circuit ...
>>> print(nlocal)
     ┌───────┐┌──────────┐┌──────────┐┌──────────┐
q_0:Ry(1) ├┤ Ry(θ[1]) ├┤ Ry(θ[1]) ├┤ Ry(θ[3])
     └───────┘└──────────┘└──────────┘└──────────┘
>>> nlocal.parameters
{Parameter(θ[1]), Parameter(θ[3])}
>>> nlocal.ordered_parameters
[1, Parameter(θ[1]), Parameter(θ[1]), Parameter(θ[3])]

戻り値

回路で使用されるパラメータオブジェクト。

parameter_bounds

回路の未束縛パラメータのパラメータ境界。

戻り値

境界を示すペアのリスト。 Noneは、対応する方向のパラメータが束縛されていないことを示す。 もし None

preferred_init_points

パラメータの初期点。 最適化の初期推測値として保存できる。

戻り値

パラメータの初期値、または何も設定されていない場合はNone。

reps

回転とエンタングルメントブロックの繰り返し回数。

戻り値

繰り返し回数。

rotation_blocks

回転レイヤーのブロック。

戻り値

回転レイヤーのブロック。

name

タイプ: str

人間が読める回路名。

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit

方法

add_layer

add_layer(other, entanglement=None, front=False)

GitHub

NLocalに別のレイヤーを追加する。

パラメーター

  • other (QuantumCircuit |qiskit.circuit.Instruction) – 合成するレイヤーは、別のNLocal、インストラクションやゲート、 QuantumCircuit。
  • entanglement (list[int] | str |list[list[int]] | None) – エンタングルメントまたは量子ビットのインデックス。
  • front (bool) – もしTrueなら、 other が前に、そうでなければ後ろに追加される。

戻り値

連鎖的なコンポーズが可能である。

レイズ

TypeError - 他が互換性がない場合、つまりInstructionがなく、to_instructionメソッドもない場合。

戻りの型

ローカル

assign_parameters

assign_parameters(parameters, inplace=False, **kwargs)

GitHub

nローカル回路にパラメータを割り当てる。

このメソッドは、辞書の代わりにリストを渡すこともできる。 リストが渡される場合、そのリストの長さは、回路の未束縛パラメータの数と同じでなければならない。 のパラメータの順番で割り当てられる。 ordered_parameters().

戻り値

指定されたパラメータを持つ NLocal 回路のコピー。

レイズ

AttributeError - パラメータがリストとして与えられ、パラメータの数と一致しない場合。

パラメーター

戻りの型

QuantumCircuit | なし

get_entangler_map

get_entangler_map(rep_num, block_num, num_block_qubits)

GitHub

rep_num とブロック block_num の繰り返しでエンタングラー・マップを得る。

現在のブロックのエンタングラー・マップは、 self.entanglement の値から導き出される。 ij はそれぞれ繰り返し番号とブロック番号を表し、 n はブロック内の量子ビット数を表す。

もつれタイプ
エンタングラー・マップ
None[[0, ..., n - 1]]
str (例 'full'指定された量子ビット n 間の接続
List[int][entanglement]
List[List[int]]entanglement
List[List[List[int]]]entanglement[i]
List[List[List[List[int]]]]entanglement[i][j]
List[str]に規定されている接続性 entanglement[i]
List[List[str]]に規定されている接続性 entanglement[i][j]
Callable[int, str]同じ List[str]
Callable[int, List[List[int]]]同じ List[List[List[int]]]

すべてのインデックスは、それが作用する配列の長さのモジュロとして取られることに注意してください。

パラメーター

  • rep_num (int) – 今、私たちが繰り返していること。
  • block_num (int) – エンタングルメント層内のブロック番号。
  • num_block_qubits (int) – ブロック内の量子ビット数。

戻り値

現在の反復における現在のブロックのエンタングラー・マップ。

レイズ

ValueError - entanglement の値が対応するエンタングラー・マップにキャストできなかった場合。

戻りの型

シーケンス[* シーケンス*[ int ]]

get_unentangled_qubits

get_unentangled_qubits()

GitHub

集合内のもつれない量子ビットのインデックスを取得する。

戻り値

絡み合っていない量子ビット。

戻りの型

set[ int ]

print_settings()

GitHub

設定に関する情報を返します。

戻り値

str、クラス名とインスタンスの属性/パラメータを指定する。

戻りの型

str

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