qiskit.circuit.library.efficient_su2
qiskit.circuit.library.efficient_su2(num_qubits, su2_gates=None, entanglement='reverse_linear', reps=3, skip_unentangled_qubits=False, skip_final_rotation_layer=False, parameter_prefix='θ', insert_barriers=False, name='EfficientSU2')
ハードウェア効率の高い 2ローカル回路。
efficient_su2 回路は、 と CX エンタングルメントにまたがる単一量子ビット演算の層で構成されている。 これは、変分量子アルゴリズムや機械学習の分類回路のための試行波動関数を準備するために使用できる発見的なパターンである。
は次数2の特殊なユニタリー群であり、その要素はパウリ回転ゲートのような行列式1の ユニタリー行列である。
3つの量子ビットを用い、単一量子ビットゲートとしてパウリ回転 および を使用する場合、この回路は次のように表されます:
┌──────────┐┌──────────┐ ░ ░ ░ ┌───────────┐┌───────────┐
┤ RY(θ[0]) ├┤ RZ(θ[3]) ├─░────────■───░─ ... ─░─┤ RY(θ[12]) ├┤ RZ(θ[15]) ├
├──────────┤├──────────┤ ░ ┌─┴─┐ ░ ░ ├───────────┤├───────────┤
┤ RY(θ[1]) ├┤ RZ(θ[4]) ├─░───■──┤ X ├─░─ ... ─░─┤ RY(θ[13]) ├┤ RZ(θ[16]) ├
├──────────┤├──────────┤ ░ ┌─┴─┐└───┘ ░ ░ ├───────────┤├───────────┤
┤ RY(θ[2]) ├┤ RZ(θ[5]) ├─░─┤ X ├──────░─ ... ─░─┤ RY(θ[14]) ├┤ RZ(θ[17]) ├
└──────────┘└──────────┘ ░ └───┘ ░ ░ └───────────┘└───────────┘例:
デフォルトでは、 "reverse_linear" エンタングルメントが使用される。これは、CXゲートの場合、全対全エンタングルメントと等価である:
from qiskit.circuit.library import efficient_su2
circuit = efficient_su2(3, reps=1)
circuit.draw("mpl")
回転レイヤーでどのSU(2)ゲートを使うかを指定するには、 su2_gates 。 さらに、もつれ構造を変えることもできる。 例:
circuit = efficient_su2(4, su2_gates=["rx", "y"], entanglement="circular", reps=1)
circuit.draw("mpl")
パラメーター
- num_qubits (int) – 量子ビットの数。
- su2_gates (str |Gate |Iterable[str |Gate] | None) – 単一量子ビットゲート層で適用する単一量子ビットゲート。 ゲートが1つしか提供されない場合、同じゲートが各量子ビットに適用される。 ゲートの一覧が指定された場合、すべてのゲートは指定された順序で各量子ビットに適用される。
- reps (int) – 回転層の後にエンタングルメント層が続く構造が繰り返される頻度を指定する。
- entanglement (str |Iterable[Iterable[int]] | Iterable[str |Iterable[Iterable[int]]] | Callable[[int], str |Iterable[Iterable[int]] | Iterable[str |Iterable[Iterable[int]]]]) – 入力ブロックが作用する量子ビットを指定するインデックス。 詳細については、を
n_local()参照してください。 - skip_final_rotation_layer (bool) – 回路に最終回転層を追加するかどうか。
- skip_unentangled_qubits (bool) –
Trueの場合、回転ゲートはエンタングルされた量子ビットにのみ作用する。Falseの場合、回転ゲートはすべての量子ビットに作用する。 - parameter_prefix (str) – 自由パラメーターの名前。
- insert_barriers (bool) – Trueの場合、各レイヤーの間にバリアが挿入される。 False の場合、バリアは挿入されない。
- name (str) – 回路の名前。
戻り値
効率的なSU(2)回路。
戻りの型
このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。