Skip to main content
IBM Quantum Platform

qiskit.circuit.library.real_amplitudes

qiskit.circuit.library.real_amplitudes(num_qubits, entanglement='reverse_linear', reps=3, skip_unentangled_qubits=False, skip_final_rotation_layer=False, parameter_prefix='θ', insert_barriers=False, name='RealAmplitudes')

GitHub

実振幅の2ローカル回路を構成する。

この回路は、化学、最適化、機械学習などのアプリケーションでアサッツとして使用されるヒューリスティックな試行波動関数である。 この回路は、 YY の回転と CXCX のもつれを交互に重ねたものである。 エンタングルメントパターンは、ユーザー定義、または定義済みのセットから選択することができる。 準備された量子状態は実振幅しか持たないので、この回路は「実振幅」である。

例えば、 "reverse_linear" エンタングルメントを持つ3量子ビットで2回繰り返しの real_amplitudes 回路は次のようになる

┌──────────┐ ░            ░ ┌──────────┐ ░            ░ ┌──────────┐
Ry(θ[0]) ├─░────────■───░─┤ Ry(θ[3]) ├─░────────■───░─┤ Ry(θ[6])
├──────────┤ ░      ┌─┴─┐ ░ ├──────────┤ ░      ┌─┴─┐ ░ ├──────────┤
Ry(θ[1]) ├─░───■──┤ X ├─░─┤ Ry(θ[4]) ├─░───■──┤ X ├─░─┤ Ry(θ[7])
├──────────┤ ░ ┌─┴─┐└───┘ ░ ├──────────┤ ░ ┌─┴─┐└───┘ ░ ├──────────┤
Ry(θ[2]) ├─░─┤ X ├──────░─┤ Ry(θ[5]) ├─░─┤ X ├──────░─┤ Ry(θ[8])
└──────────┘ ░ └───┘      ░ └──────────┘ ░ └───┘      ░ └──────────┘

エンタングルメントは、 entanglement キーワードを使用して、文字列またはインデックス・ペアのリストとして設定することができる。 のドキュメントを参照。 n_local(). さらに設定可能なオプションには、繰り返し回数、エンタングルされていない量子ビットのローテーション・ゲートのスキップ、最終ローテーション層の省略、ローテーション層とエンタングルメント層の間のバリアの挿入などがある。

例:

from qiskit.circuit.library import real_amplitudes

ansatz = real_amplitudes(3, reps=2)  # create the circuit on 3 qubits
ansatz.draw("mpl")
先のコードで出力された回路図。
ansatz = real_amplitudes(3, entanglement="full", reps=2)  # it is the same unitary as above
ansatz.draw("mpl")
先のコードで出力された回路図。
ansatz = real_amplitudes(3, entanglement="linear", reps=2, insert_barriers=True)
ansatz.draw("mpl")
先のコードで出力された回路図。
ansatz = real_amplitudes(4, reps=2, entanglement=[[0,3], [0,2]], skip_unentangled_qubits=True)
ansatz.draw("mpl")
先のコードで出力された回路図。

パラメーター

  • num_qubits (int) – RealAmplitudes 回路の量子ビット数。
  • 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) – 回路の名前。

戻り値

実振幅回路。

戻りの型

QuantumCircuit

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