回路ライブラリー
qiskit.circuit.library
回路ライブラリーは、貴重な回路とビルディング・ブロックのコレクションです。 私たちがこれらを価値あるものと呼ぶ理由はそれぞれ異なる。 例えば、アルゴリズムのビルディング・ブロックとして使用されたり、ベンチマークとして機能したり、古典的なシミュレーションが困難と推測される回路であったりする。
回路ライブラリの要素は QuantumCircuitまたは Instructionのどちらかであり、簡単に調査したり、他の回路に接続したりすることができる。 これにより、より高い抽象度での高速プロトタイピングと回路設計が可能になる。
例:
from qiskit.circuit import QuantumCircuit
from qiskit.circuit.library import PauliEvolutionGate
from qiskit.quantum_info import SparsePauliOp
hamiltonian = SparsePauliOp(["ZZI", "IZZ", "IXI"], coeffs=[1, 1, -1])
gate = PauliEvolutionGate(hamiltonian)
circuit = QuantumCircuit(hamiltonian.num_qubits)
circuit.append(gate, circuit.qubits)
circuit.draw("mpl")
このライブラリーは様々なセクションで構成されている:
私たちはオペレーションをさまざまなカテゴリーに分類している:
標準ゲート
これらは基本的な量子ゲートであり、そのサブセットは通常、量子コンピューターの基底ゲートセットを形成する。 これらは次のように表される単項演算である。 Gate. ライブラリはまた、標準的なコンパイラ指令 (a Barrierなど)や非単位演算( Measure).
抽象的な操作
このカテゴリーには、数学的作用によって定義されるが、異なる分解で実装できる操作が含まれる。 例えば、マルチ制御 XGate 全ての制御量子ビットが の場合、ターゲット量子ビットを反転させる。低レベルゲートを用いてこの演算を実装した様々な具体的回路がある。 このような抽象的な操作は Gate または Instruction. これにより、各ブロックの具体的な実装を選択することなく回路を構築することができ、最終的にはコンパイラ(またはユーザーであるあなた)に最適な分解を選択させることができる。 例:
from qiskit.circuit.library import MCXGate
mcx = MCXGate(4)
from qiskit import QuantumCircuit
circuit = QuantumCircuit(5)
circuit.append(mcx, [0, 1, 4, 2, 3])
circuit.draw("mpl")
抽象的な演算を行う回路では、回路コンテキストがトランスパイル時に考慮される。 例えば、アイドル量子ビットがあれば、それを使ってより浅い回路を得ることができる:
from qiskit import transpile
small_circuit = QuantumCircuit(5) # here we have no idle qubits
small_circuit.append(mcx, [0, 1, 4, 2, 3])
small_tqc = transpile(small_circuit, basis_gates=["u", "cx"])
print("No aux:", small_tqc.count_ops())
large_circuit = QuantumCircuit(10) # now we will have 5 idle qubits
large_circuit.append(mcx, [0, 1, 4, 2, 3])
large_tqc = transpile(large_circuit, basis_gates=["u", "cx"])
print("With aux:", large_tqc.count_ops())どのプリントか:
No aux: OrderedDict([('u', 41), ('cx', 36)])
With aux: OrderedDict([('u', 24), ('cx', 18)])構造オペレーション
これらのオペレーションは一意に分解される。 コンパイラーは、これらの関数についてより高いレベルで推論する必要がないため、これらの関数は QuantumCircuit オブジェクトを返す関数として実装されている。 例:
from qiskit.circuit.library import real_amplitudes
ansatz = real_amplitudes(5, entanglement="pairwise")
ansatz.draw("mpl")
標準ゲート
これらの演算は可逆的なユニタリーゲートであり、すべて以下のクラスである。 Gate. 結果として、これらのメソッドはすべて to_matrix(), power()と control()を持っている。
例:
from qiskit.circuit.library import XGate
gate = XGate()
print(gate.to_matrix()) # X gate
print(gate.power(1/2).to_matrix()) # √X gate -- see also the SXGate
print(gate.control(1).to_matrix()) # CX (controlled X) gate[[0.+0.j 1.+0.j]
[1.+0.j 0.+0.j]]
[[0.5+0.5j 0.5-0.5j]
[0.5-0.5j 0.5+0.5j]]
[[1.+0.j 0.+0.j 0.+0.j 0.+0.j]
[0.+0.j 0.+0.j 0.+0.j 1.+0.j]
[0.+0.j 0.+0.j 1.+0.j 0.+0.j]
[0.+0.j 1.+0.j 0.+0.j 0.+0.j]]機能 get_standard_gate_name_mapping() を使用すると、使用可能な標準ゲートと操作を確認できます。
get_standard_gate_name_mapping
qiskit.circuit.library.get_standard_gate_name_mapping()
標準ゲートと命令の名前を、その名前のオブジェクトにマッピングした辞書を返す。
例
from qiskit.circuit.library import get_standard_gate_name_mapping
gate_name_map = get_standard_gate_name_mapping()
cx_object = gate_name_map["cx"]
print(cx_object)
print(type(cx_object))Instruction(name='cx', num_qubits=2, num_clbits=0, params=[])
_SingletonCXGate1量子ビット標準ゲート
HGate(˶*args[,˶*force_mutable] ) | 単一量子ビットハダマードゲート。 |
IGate(˶*args[,˶*force_mutable] ) | アイデンティティ・ゲート |
PhaseGate(θ[、ラベル] ) | Z軸を中心とした1量子ビットの回転。 |
RGate(θ、φ[、ラベル] ) | 軸を中心に 回転。 |
RXGate(θ[、ラベル] ) | X軸を中心とした1量子ビットの回転。 |
RYGate(θ[、ラベル] ) | Y軸を中心とした1量子ビットの回転。 |
RZGate(phi[, label] ) | Z軸を中心とした1量子ビットの回転。 |
SGate(˶*args[,˶*force_mutable] ) | 単一量子ビットSゲート( )。 |
SdgGate(˶*args[,˶*force_mutable] ) | 単一量子ビットのS随伴ゲート( )。 |
SXGate(˶*args[,˶*force_mutable] ) | 単一量子ビットSqrt(X)ゲート( )。 |
SXdgGate(˶*args[,˶*force_mutable] ) | 逆1量子ビットSqrt(X)ゲート。 |
TGate(˶*args[,˶*force_mutable] ) | 単一量子ビットTゲート( )。 |
TdgGate(˶*args[,˶*force_mutable] ) | 単一量子ビットのT随伴ゲート( )。 |
UGate(theta, phi, lam[, label] ) | ZYZオイラー角による一般的な単一量子ビット回転。 |
U1Gate(θ[、ラベル] ) | Z軸を中心とした1量子ビットの回転。 |
U2Gate(phi, lam[, label] ) | X+Z軸を中心とした1量子ビットの回転。 |
U3Gate(theta, phi, lam[, label] ) | 3つのオイラー角を持つ一般的な1量子ビット回転ゲート。 |
XGate(˶*args[,˶*force_mutable] ) | 単一量子ビットPauli-Xゲート( )。 |
YGate(˶*args[,˶*force_mutable] ) | シングル量子ビットのポーリ-Yゲート( )。 |
ZGate(˶*args[,˶*force_mutable] ) | シングル量子ビットPauli-Zゲート( )。 |
2量子ビット標準ゲート
CHGate(˶*args[,˶*force_mutable] ) | 制御ハダマードゲート。 |
CPhaseGate(theta[, label, ctrl_state,...] ) | 制御位相ゲート。 |
CRXGate(theta[, label, ctrl_state, ˶´⚰︎`˵] ) | 制御されたRXゲート。 |
CRYGate(theta[, label, ctrl_state, ˶´⚰︎`˵] ) | 制御されたRYゲート。 |
CRZGate(theta[, label, ctrl_state, ˶´⚰︎`˵] ) | 制御されたRZゲート。 |
CSGate(˶*args[,˶*force_mutable] ) | 制御Sゲート。 |
CSdgGate(˶*args[,˶*force_mutable] ) | 制御付き - ゲート。 |
CSXGate(˶*args[,˶*force_mutable] ) | 制御された√Xゲート。 |
CUGate(シータ, ファイ, ラム, ガンマ[, ラベル,...] ) | Controlled-Uゲート(4パラメータ2量子ビットゲート)。 |
CU1Gate(theta[, label, ctrl_state, ˶´⚰︎`˵] ) | Controlled-U1 ゲート |
CU3Gate(シータ, ファイ, ラム[, ラベル,...] ) | Controlled-U3 ゲート(3パラメータ2量子ビットゲート)。 |
CXGate(˶*args[,˶*force_mutable] ) | コントロールXゲート。 |
CYGate(˶*args[,˶*force_mutable] ) | 制御Yゲート。 |
CZGate(˶*args[,˶*force_mutable] ) | 制御されたZゲート。 |
DCXGate(˶*args[,˶*force_mutable] ) | ダブルCXゲート。 |
ECRGate(˶*args[,˶*force_mutable] ) | エコー・クロスレゾナンス・ゲート。 |
iSwapGate(˶*args[,˶*force_mutable] ) | iSWAP ゲート |
RXXGate(θ[、ラベル] ) | パラメトリック2量子ビット 相互作用(XXに関する回転)。 |
RYYGate(θ[、ラベル] ) | パラメトリック2量子ビット 相互作用(YYに関する回転)。 |
RZXGate(θ[、ラベル] ) | パラメトリック2量子ビット 相互作用(ZXに関する回転)。 |
RZZGate(θ[、ラベル] ) | パラメトリック2量子ビット 相互作用(ZZに関する回転)。 |
SwapGate(˶*args[,˶*force_mutable] ) | SWAPゲート。 |
XXMinusYYGate(シータ[、ベータ、ラベル)] | XX-YY相互作用ゲート。 |
XXPlusYYGate(シータ[、ベータ、ラベル)] | XX+YY相互作用ゲート。 |
3量子ビット以上の標準ゲート
C3SXGate(˶*args[,˶*force_mutable] ) | 3量子ビット制御のsqrt-Xゲート。 |
C3XGate(˶*args[,˶*force_mutable] ) | 3量子ビットで制御されるXゲート。 |
C4XGate(˶*args[,˶*force_mutable] ) | 4量子ビット制御Xゲート。 |
CCXGate(˶*args[,˶*force_mutable] ) | CCXゲート、別名トッフォリゲート。 |
CCZGate(˶*args[,˶*force_mutable] ) | CCZゲート |
CSwapGate(˶*args[,˶*force_mutable] ) | フレドキンゲートとしても知られるControlled-SWAPゲート。 |
RCCXGate(˶*args[,˶*force_mutable] ) | 簡略化されたトッフォリ門は、マルゴルス門とも呼ばれる。 |
RC3XGate(˶*args[,˶*force_mutable] ) | 簡略化された3制御トフォリゲート。 |
グローバル標準ゲート
以下のゲートはグローバルであり、いかなる量子ビット引数も取らない。
GlobalPhaseGate(フェーズ[、ラベル)] | グローバル・フェーズ・ゲート( )。 |
標準指令
ディレクティブは量子スタックに対する操作で、バックエンドやトランスパイラによって解釈されることを意図している。 一般的に、トランスパイラやバックエンドは、実装がない場合、オプションでこれらを無視することができる。
標準操作
演算とは、回路の量子状態を非可逆的に変化させることである。
に加えて Measure、一般化された共同パウリ測定が利用可能であり、パウリベース計算における基本操作として用いられる。
PauliProductMeasurement(パウリ[, ラベル] ) | パウリ積測定手順書 |
一般化されたゲート
このモジュールは、より幅広い基本ゲートのコレクションで標準ゲートを拡張する。 これには、量子ビットの数が入力に依存するバリアディックゲートも含まれる。 例:
from qiskit.circuit.library import DiagonalGate
diagonal = DiagonalGate([1, 1j])
print(diagonal.num_qubits)
diagonal = DiagonalGate([1, 1, 1, -1])
print(diagonal.num_qubits)とプリントする:
1
2DiagonalGate(斜め) | 一般的な斜め量子ゲート。 |
PermutationGate(パターン) | 量子ビットを並べ替えるゲート。 |
MCMTGate(gate, num_ctrl_qubits,...[,...] ) | マルチ制御マルチターゲットゲート、任意の単一制御ターゲットゲート用。 |
MCPhaseGate(lam, num_ctrl_qubits[, label,...] ) | マルチ制御位相ゲート。 |
MCXGate([num_ctrl_qubits, label,...] ) | 一般的なマルチコントロールXゲート。 |
MSGate(num_qubits, theta[, label] ) | メルマー・ソーレンセン門。 |
RVGate(v_x, v_y, v_z[, basis] ) | 任意の回転軸 を中心とした回転。 はラジアン単位の回転角。 |
PauliGate(ラベル) | マルチ量子ビットのパウリゲート。 |
PauliProductRotationGate(pauli, angle[, label] ) | 一般的なパウリ回転。 |
LinearFunction(linear[, validate_input] ) | n量子ビットの線形可逆回路。 |
Isometry(isometry, num_ancillas,...[,...] ) | から クビットへの任意のアイソメトリーの分解。 |
UnitaryGate(data[, label, check_input,...] ) | ユニタリ行列で指定される量子ゲートのクラス。 |
UCGate(gate_list[, up_to_diagonal, mux_simp] ) | 均一制御ゲート(多重化ゲートとも呼ばれる)。 |
UCPauliRotGate(angle_list, rot_axis) | 一様に制御されたパウリ回転。 |
UCRXGate(angle_list) | 一様に制御されたパウリ-X回転。 |
UCRYGate(angle_list) | 一様に制御されたパウリ-Y回転。 |
UCRZGate(angle_list) | 一様に制御されたパウリ-Z回転。 |
上記のオブジェクトは Gate または Instructionを派生させ、コンパイラが抽象的なレベルで推論できるようにしている。 従って、次のようなものを使用することをお勧めする。 QuantumCircuit を導出するものであり、熱心に構築されている。
Diagonal(斜め) | 対角変換を行う回路。 |
MCMT(gate, num_ctrl_qubits, num_target_qubits) | マルチ制御マルチターゲットゲート、任意の単一制御ターゲットゲート用。 |
MCMTVChain(gate, num_ctrl_qubits,...) | CCXのVチェーンを使ったMCMTの実装。 |
MCXGrayCode([num_ctrl_qubits, label,...] ) | グレーコードを使ってマルチ制御Xゲートを実装する。 |
MCXRecursive([num_ctrl_qubits, label,...] ) | 再帰を使用してマルチ制御Xゲートを実装する。 |
MCXVChain([num_ctrl_qubits, dirty_ancillas,...] ) | CXゲートのVチェーンを使ってマルチ制御Xゲートを実装する。 |
Permutation(num_qubits[, pattern, seed] ) | 量子ビットを並べ替えるn_qubit回路。 |
GMS(num_qubits, theta) | グローバル・モルマー・ソーレンセン・ゲート。 |
GR(num_qubits, theta, phi) | グローバルRゲート。 |
GRX(num_qubits, theta) | グローバルRXゲート。 |
GRY(num_qubits, theta) | グローバルRYゲート |
GRZ(num_qubits, phi) | グローバルRZゲート。 |
ブールロジック
これらは Gateは、量子ビット状態の論理 or のようなブーリアン論理演算を実装している。
AndGate(num_variable_qubits[, flags] ) | 複数の量子ビットの論理AND演算を表すゲート。 |
OrGate(num_variable_qubits[, flags] ) | 複数の量子ビットに対する論理和演算を表すゲート。 |
BitwiseXorGate(num_qubits, amount) | 入力とある整数 amount とのビットごとのxorを行うn-qubitゲート。 |
InnerProductGate(num_qubits) | 上の2つのn量子ビットベクトルの内積を計算する 2n-qubit ブール関数。 |
上記のオブジェクトは Gate (またはこの型を返す)ため、コンパイラーは抽象的なレベルでこれらを推論することができる。 従って、以下のような導出ではなく、これらを使用することをお勧めする。 QuantumCircuit を派生させるものである。
AND(num_variable_qubits[, flags, mcx_mode] ) | 複数の量子ビットに対して論理AND演算を行う回路。 |
OR(num_variable_qubits[, flags, mcx_mode] ) | 複数の量子ビットに対して論理和演算を行う回路。 |
XOR(num_qubits[, amount, seed] ) | n_qubit回路は、入力をある整数 amount とビット毎xorするための回路である。 |
InnerProduct(num_qubits) | 上の2つのn量子ビットベクトルの内積を計算する 2n-qubit ブール関数。 |
ランダムなビット単位の xor 回路は、これを用いて直接生成することができる:
random_bitwise_xor(num_qubits, seed) | ランダムな BitwiseXorGate。 |
基準変更
これらのゲートは量子ビット状態の基底変換を行う。 例えば、量子フーリエ変換(QFT)の場合、計算基底とフーリエ基底の間で変換する。
QFTGate(num_qubits) | 量子フーリエ変換ゲート。 |
上記のオブジェクトは Gateを導出することで、コンパイラーは抽象的なレベルでこのオブジェクトを推論することができる。 従って、次のような導出ではなく、これを使うことをお勧めする。 QuantumCircuit を導出し、エージリィに構築されます。
QFT([num_qubits, approximation_degree,...] ) | 量子フーリエ変換回路。 |
算術
これらのゲートや回路は、加算や乗算といった古典的な算術を実行する。
毒蛇
加算器は2つの -qubitレジスタの和を計算する
ここで、出力レジスタのサイズ は、使用される加算器のタイプに依存する。
ModularAdderGate(num_state_qubits[, label] ) | 二つの -sized qubit registersのmodulo の和を計算する。 |
HalfAdderGate(num_state_qubits[, label] ) | キャリーアウトビットを含む2つの等しい大きさの量子ビットレジスタの和を計算する。 |
FullAdderGate(num_state_qubits[, label] ) | キャリーインビットとキャリーアウトビットを含む2つの -サイズの量子ビットレジスタの和を計算する。 |
上記のオブジェクトは Gateこれは、コンパイラが抽象的なレベルでこれらを推論することを可能にする。 従って、以下のような導出ではなく、これらを使用することをお勧めする。 QuantumCircuit を派生させるものである。
DraperQFTAdder(num_state_qubits[, kind, name] ) | QFTを用いて2つの量子ビットレジスタのインプレース加算を行う回路。 |
CDKMRippleCarryAdder(num_state_qubits[,...] ) | 2つの量子ビットレジスタのインプレース加算を行うリップルキャリー回路。 |
VBERippleCarryAdder(num_state_qubits[,...] ) | VBEリップルキャリー加算器 [1]。 |
乗数
乗算器は2つの -qubitレジスタの積を計算する
ここで、 は結果を表すのに使われるビット数である。
MultiplierGate(num_state_qubits[,...] ) | 2つの等しい大きさの量子ビットレジスタの積を新しいレジスタに計算する。 |
上記のオブジェクトは Gateを導出することで、コンパイラーは抽象的なレベルでこのオブジェクトを推論することができる。 従って、以下のように導出する代わりに、これを使用することをお勧めする。 QuantumCircuit を派生させるものである。
HRSCumulativeMultiplier(num_state_qubits[,...] ) | 2つの入力レジスタの積を場外に保存する乗算回路。 |
RGQFTMultiplier(num_state_qubits[,...] ) | 2つの入力レジスタの積をout-of-placeで格納するQFT乗算回路。 |
振幅関数
振幅関数は、 の量子ビットの振幅に適用される関数を近似する。 より詳細な情報については、クラスのdocstringを参照してください。
LinearAmplitudeFunctionGate(...[, ...]) | 量子ビットの振幅に対する(区分的)線形関数を実装した回路。 |
上記のオブジェクトは Gateを導出することで、コンパイラーは抽象的なレベルでこのオブジェクトを推論することができる。 従って、次のような導出ではなく、これを使うことをお勧めする。 QuantumCircuit を導出し、エージリィに構築されます。
LinearAmplitudeFunction(num_state_qubits,...) | 量子ビットの振幅に対する(区分的)線形関数を実装した回路。 |
機能的パウリ回転
関数的パウリ回転は、次のような形式の演算を実行する
線形、多項式、またはこれらの区分バージョンなど、さまざまなタイプの関数 に対して、Pauli- 回転を使用する。 これらは上記の振幅関数と似ているが、ターゲット関数のドメインとイメージのための事前および事後処理はない。
LinearPauliRotationsGate(num_state_qubits[,...] ) | X、YまたはZ回転をリニアに制御。 |
PolynomialPauliRotationsGate(num_state_qubits) | 多項式パウリ回転を実装したゲート。 |
PiecewiseLinearPauliRotationsGate([...]) | 断片的に線形制御されたパウリ回転。 |
PiecewisePolynomialPauliRotationsGate(...[, ...]) | 断片的に多項式に制御されたパウリ回転。 |
PiecewiseChebyshevGate(f_x, num_state_qubits) | 入力関数に対する区分的チェビシェフ近似。 |
上記のオブジェクトは Gateこれは、コンパイラが抽象的なレベルでこれらを推論することを可能にする。 従って、以下のような導出ではなく、これらを使用することをお勧めする。 QuantumCircuit を派生させるものである。
FunctionalPauliRotations([num_state_qubits,...] ) | 関数パウリ回転の基本クラス。 |
LinearPauliRotations([num_state_qubits,...] ) | X、YまたはZ回転をリニアに制御。 |
PolynomialPauliRotations([num_state_qubits,...] ) | 多項式パウリ回転を実装した回路。 |
PiecewiseLinearPauliRotations([...]) | 断片的に線形制御されたパウリ回転。 |
PiecewisePolynomialPauliRotations([...]) | 断片的に多項式に制御されたパウリ回転。 |
PiecewiseChebyshev(f_x[, degree,...] ) | 入力関数に対する区分的チェビシェフ近似。 |
その他の算術関数
ここでは、追加の演算回路をリストアップする。 詳細は各クラスのドキュメントを参照。
ExactReciprocalGate(num_state_qubits, scaling) | 正確な逆数関数を実装する。 |
IntegerComparatorGate(num_state_qubits, value) | 古典的な整数に対して、量子ビット・レジスタで (または ) を実行する。 |
QuadraticFormGate([num_result_qubits,...] ) | 量子ビットレジスタにエンコードされた2値変数に2次形式を実装する。 |
WeightedSumGate(num_state_qubits[, weights,...] ) | 量子ビットレジスタの重み付き和を計算するゲート。 |
上記のオブジェクトは Gateこれは、コンパイラが抽象的なレベルでこれらを推論することを可能にする。 従って、以下のような導出ではなく、これらを使用することをお勧めする。 QuantumCircuit を派生させるものである。
ExactReciprocal(num_state_qubits, scaling[,...] ) | 正確な逆数 |
IntegerComparator([num_state_qubits, value,...] ) | 整数コンパレータ。 |
QuadraticForm([num_result_qubits,...] ) | 量子ビットレジスタにエンコードされた2値変数に2次形式を実装する。 |
WeightedAdder([num_state_qubits, weights, name] ) | 量子ビットレジスタの重み付き和を計算する回路。 |
特定の量子回路
以下のゲートと量子回路は、特定の演算を定義している:
fourier_checking(f, g) | フーリエ検査回路。 |
hidden_linear_function(adjacency_matrix) | 隠れ一次関数問題を解く回路。 |
iqp交流 | 瞬間量子多項式時間(IQP)回路。 |
random_iqp(num_qubits[, seed] ) | ランダムな瞬間量子多項式時間(IQP)回路。 |
quantum_volume(num_qubits[, depth, seed] ) | 量子ボリュームモデル回路。 |
phase_estimation(num_evaluation_qubits, unitary) | 位相推定回路。 |
grover_operator(oracle[, state_preparation,...] ) | グローバー演算子を構築する。 |
unitary_overlap(unitary1, unitary2[, ...]) | 2つのユニタリーの重なりを返す回路 。 |
GraphStateGate(adjacency_matrix) | グラフの状態を表すゲート。 |
PauliEvolutionGate(演算子[, 時間, ラベル,...] ) | パウリからなる演算子の時間発展。 |
HamiltonianGate(データ, 時間[, ラベル] ) | ハミルトニアン演算子による進化をゲートとして表現するためのクラス。 |
を派生させるクラスと同じ操作を提供する。 QuantumCircuit. しかし、ランタイムとコンパイラのパフォーマンスを向上させるためには、上記の関数とゲートを使用することをお勧めする。
FourierChecking(f, g) | フーリエ検査回路。 |
GraphState(adjacency_matrix) | グラフの状態を準備する回路。 |
HiddenLinearFunction(adjacency_matrix) | 隠れ一次関数問題を解く回路。 |
IQP交流 | 瞬間量子多項式(IQP)回路。 |
QuantumVolume(num_qubits[, depth, seed,...] ) | 量子ボリュームモデル回路。 |
PhaseEstimation(num_evaluation_qubits, unitary) | 位相推定回路。 |
GroverOperator(oracle[, state_preparation,...] ) | グローバーのオペレーター |
UnitaryOverlap(unitary1, unitary2[, ...]) | 2つのユニタリーの重なりを返す回路 。 |
N-局所回路
以下の関数は、パラメータ化された QuantumCircuit を返し、変分量子アルゴリズムのansatzとして使用します。
例えば、変分回路を作ることができる
from qiskit.circuit.library import efficient_su2
num_qubits = 4
ansatz = efficient_su2(num_qubits, entanglement="pairwise")
ansatz.draw("mpl")
と組み合わせる
from qiskit.circuit.library import zz_feature_map
circuit = zz_feature_map(num_qubits)
circuit.barrier()
circuit.compose(ansatz, inplace=True)
circuit.draw("mpl")
変分量子分類の回路を得る。
以下の関数はすべて変分回路を構成するもので、高速に構成できるように最適化されている:
n_local(num_qubits, rotation_blocks,...[,...] ) | n-局所変分回路を構成する。 |
efficient_su2(num_qubits [、 su2_gates、...] ) | ハードウェア効率の高い 2ローカル回路。 |
real_amplitudes(num_qubits[, entanglement,...] ) | 実振幅の2ローカル回路を構成する。 |
pauli_two_design(num_qubits[, reps, seed,...] ) | Pauli 2-design ansatzを構築する。 |
excitation_preserving(num_qubits[, mode,...] ) | 発見的励起保存波動関数アサッツ。 |
qaoa_ansatz(cost_operator[, reps,...] ) | カスタム初期状態とミキサーをサポートした一般化QAOA量子回路。 |
hamiltonian_variational_ansatz(ハミルトニアン) | ハミルトニアン変分アサッツを構築する。 |
evolved_operator_ansatz(オペレーター[、レップ、...)] | 演算子の展開からアナザッツを構築する。 |
上記の関数を使用することを推奨するが、回路をブロックにラップし、回路のインプレース変異を可能にする以下の BlueprintCircuit も引き続きサポートする:
NLocal([num_qubits, rotation_blocks,...] ) | nローカル回路クラス。 |
TwoLocal([num_qubits, rotation_blocks,...] ) | 2ローカル回路。 |
PauliTwoDesign([num_qubits, reps, seed,...] ) | パウリ2デザイン解析。 |
RealAmplitudes([num_qubits, entanglement,...] ) | 実振幅2ローカル回路。 |
EfficientSU2( [num_qubits、 su2_gates、...] ) | ハードウェア的に効率的なSU(2) 2ローカル回路。 |
EvolvedOperatorAnsatz[(オペレーター、レップ、...)] | 進化した演算子ansatz。 |
ExcitationPreserving([num_qubits, mode,...] ) | 発見的励起保存波動関数アサッツ。 |
QAOAAnsatz([cost_operator, reps,...] ) | カスタム初期状態とミキサーをサポートした一般化QAOA量子回路。 |
データ符号化回路
以下の関数は QuantumCircuit を返し、一連の変分量子アルゴリズムのデータ符号化回路として使用する:
pauli_feature_map(feature_dimension[, reps,...] ) | パウリ拡大回路。 |
z_feature_map(feature_dimension[, reps,...] ) | 1次のパウリZ進化回路。 |
zz_feature_map(feature_dimension[, reps,...] ) | 2次パウリ-Z進化回路。 |
上記の関数を使用することを推奨するが、回路をブロックにラップし、回路のインプレース変異を可能にする以下の BlueprintCircuit も引き続きサポートする:
PauliFeatureMap([feature_dimension, reps,...] ) | パウリ拡大回路。 |
ZFeatureMap(feature_dimension[, reps,...] ) | 1次のパウリZ進化回路。 |
ZZFeatureMap(feature_dimension[, reps,...] ) | 2次パウリ-Z進化回路。 |
データ準備回路
状態準備には以下の操作を行う:
StatePreparation(params[, num_qubits,...] ) | 複雑な振幅状態の準備。 |
Initialize(params[, num_qubits, normalize] ) | 複素振幅の初期化。 |
オラクル
オラクル」とは、量子状態に対するさまざまなブラックボックス操作を指す。 ここでは、 フェーズ・フリップを介してブーリアン関数を実装するオラクルを考える
またはビット反転
これらは
PhaseOracleGate(expression[, var_order, label] ) | 位相オラクルを実装します。 |
BitFlipOracleGate(expression[, var_order, label] ) | ビット反転オラクルの実装 |
の重要な構成要素であり、グローバーのアルゴリズム( grover_operator()).
に加えて Gate-ベースの実装に加えて QuantumCircuit-バージョンの位相反転オラクル
PhaseOracle(expression[, var_order] ) | フェーズ Oracle. |
テンプレート回路
テンプレートは、アイデンティティを計算する回路を返す関数である。 これは回路の最適化で使用され、テンプレートの一部をマッチさせることで、コンパイラはそのマッチをテンプレートからの余りの逆数に置き換えることができる。
この例では、テンプレート内のID定数がチェックされる:
from qiskit.circuit.library.templates import template_nct_4b_1
from qiskit.quantum_info import Operator
import numpy as np
template = template_nct_4b_1()
identity = np.identity(2 ** len(template.qubits), dtype=complex)
data = Operator(template).data
np.allclose(data, identity) # True, template_nct_4b_1 is the identityNCT(非CNOT-トフォリ)テンプレート回路
のテンプレート回路 XGate, CXGateおよび CCXGate (トッフォリ)ゲートのテンプレート回路です。
参照資料:
マスロフ、D.およびデュエック、G. W. とミラー、D. 可逆トフォリネットワークの合成技術, 2007 https://dx.doi.org/10.1145/1278349.1278355
template_nct_2a_1
qiskit.circuit.library.templates.nct.template_nct_2a_1()
テンプレート 2a_1:
┌───┐┌───┐
q_0: ┤ X ├┤ X ├
└───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_2a_2
qiskit.circuit.library.templates.nct.template_nct_2a_2()
テンプレート 2a_2:
q_0: ──■────■──
┌─┴─┐┌─┴─┐
q_1: ┤ X ├┤ X ├
└───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_2a_3
qiskit.circuit.library.templates.nct.template_nct_2a_3()
テンプレート 2a_3:
q_0: ──■────■──
│ │
q_1: ──■────■──
┌─┴─┐┌─┴─┐
q_2: ┤ X ├┤ X ├
└───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_4a_1
qiskit.circuit.library.templates.nct.template_nct_4a_1()
テンプレート 4a_1:
q_0: ───────■─────────■──
│ │
q_1: ──■────┼────■────┼──
│ │ │ │
q_2: ──■────■────■────■──
│ ┌─┴─┐ │ ┌─┴─┐
q_3: ──┼──┤ X ├──┼──┤ X ├
┌─┴─┐└───┘┌─┴─┐└───┘
q_4: ┤ X ├─────┤ X ├─────
└───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_4a_2
qiskit.circuit.library.templates.nct.template_nct_4a_2()
テンプレート 4a_2:
q_0: ──■─────────■───────
│ │
q_1: ──■────■────■────■──
│ ┌─┴─┐ │ ┌─┴─┐
q_2: ──┼──┤ X ├──┼──┤ X ├
┌─┴─┐└───┘┌─┴─┐└───┘
q_3: ┤ X ├─────┤ X ├─────
└───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_4a_3
qiskit.circuit.library.templates.nct.template_nct_4a_3()
テンプレート 4a_3:
q_0: ──■────■────■────■──
│ ┌─┴─┐ │ ┌─┴─┐
q_1: ──┼──┤ X ├──┼──┤ X ├
┌─┴─┐└───┘┌─┴─┐└───┘
q_2: ┤ X ├─────┤ X ├─────
└───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_4b_1
qiskit.circuit.library.templates.nct.template_nct_4b_1()
テンプレート 4b_1:
q_0: ───────■─────────■──
│ │
q_1: ──■────┼────■────┼──
│ │ │ │
q_2: ──■────■────■────■──
┌─┴─┐┌─┴─┐┌─┴─┐┌─┴─┐
q_3: ┤ X ├┤ X ├┤ X ├┤ X ├
└───┘└───┘└───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_4b_2
qiskit.circuit.library.templates.nct.template_nct_4b_2()
テンプレート 4b_2:
q_0: ──■─────────■───────
│ │
q_1: ──■────■────■────■──
┌─┴─┐┌─┴─┐┌─┴─┐┌─┴─┐
q_2: ┤ X ├┤ X ├┤ X ├┤ X ├
└───┘└───┘└───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_5a_1
qiskit.circuit.library.templates.nct.template_nct_5a_1()
テンプレート 5a_1:
q_0: ──■────■────■────■────■──
│ ┌─┴─┐ │ ┌─┴─┐ │
q_1: ──■──┤ X ├──■──┤ X ├──┼──
┌─┴─┐└───┘┌─┴─┐└───┘┌─┴─┐
q_2: ┤ X ├─────┤ X ├─────┤ X ├
└───┘ └───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_5a_2
qiskit.circuit.library.templates.nct.template_nct_5a_2()
テンプレート 5a_2:
q_0: ──■─────────■─────────■──
│ ┌───┐ │ ┌───┐ │
q_1: ──■──┤ X ├──■──┤ X ├──┼──
┌─┴─┐└───┘┌─┴─┐└───┘┌─┴─┐
q_2: ┤ X ├─────┤ X ├─────┤ X ├
└───┘ └───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_5a_3
qiskit.circuit.library.templates.nct.template_nct_5a_3()
テンプレート 5a_3:
q_0: ───────■─────────■────■──
┌─┴─┐ ┌─┴─┐ │
q_1: ──■──┤ X ├──■──┤ X ├──┼──
┌─┴─┐└───┘┌─┴─┐└───┘┌─┴─┐
q_2: ┤ X ├─────┤ X ├─────┤ X ├
└───┘ └───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_5a_4
qiskit.circuit.library.templates.nct.template_nct_5a_4()
テンプレート 5a_4:
┌───┐ ┌───┐
q_0: ──■──┤ X ├──■──┤ X ├
┌─┴─┐└───┘┌─┴─┐├───┤
q_1: ┤ X ├─────┤ X ├┤ X ├
└───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_6a_1
qiskit.circuit.library.templates.nct.template_nct_6a_1()
テンプレート 6a_1:
┌───┐ ┌───┐ ┌───┐
q_0: ──■──┤ X ├──■──┤ X ├──■──┤ X ├
┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘
q_1: ┤ X ├──■──┤ X ├──■──┤ X ├──■──
└───┘ └───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_6a_2
qiskit.circuit.library.templates.nct.template_nct_6a_2()
テンプレート 6a_2:
q_0: ──■────■────■────■────■────■──
│ ┌─┴─┐ │ ┌─┴─┐ │ ┌─┴─┐
q_1: ──■──┤ X ├──■──┤ X ├──■──┤ X ├
┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘
q_2: ┤ X ├──■──┤ X ├──■──┤ X ├──■──
└───┘ └───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_6a_3
qiskit.circuit.library.templates.nct.template_nct_6a_3()
テンプレート 6a_3:
q_0: ───────■─────────■────■────■──
┌─┴─┐ ┌─┴─┐ │ ┌─┴─┐
q_1: ──■──┤ X ├──■──┤ X ├──■──┤ X ├
┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘
q_2: ┤ X ├──■──┤ X ├──■──┤ X ├──■──
└───┘ └───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_6a_4
qiskit.circuit.library.templates.nct.template_nct_6a_4()
テンプレート 6a_4:
q_0: ───────■──────────────■───────
┌─┴─┐ ┌───┐ │ ┌───┐
q_1: ──■──┤ X ├──■──┤ X ├──■──┤ X ├
┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘
q_2: ┤ X ├──■──┤ X ├──■──┤ X ├──■──
└───┘ └───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_6b_1
qiskit.circuit.library.templates.nct.template_nct_6b_1()
テンプレート 6b_1:
q_0: ──■─────────■────■─────────■──
│ ┌─┴─┐ │ ┌─┴─┐
q_1: ──■────■──┤ X ├──■────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_6b_2
qiskit.circuit.library.templates.nct.template_nct_6b_2()
テンプレート 6b_2:
q_0: ───────■────■─────────■────■──
│ ┌─┴─┐ │ ┌─┴─┐
q_1: ──■────■──┤ X ├──■────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_6c_1
qiskit.circuit.library.templates.nct.template_nct_6c_1()
テンプレート 6c_1:
q_0: ──■─────────■─────────■────■──
│ ┌───┐ │ ┌───┐ │ ┌─┴─┐
q_1: ──■──┤ X ├──■──┤ X ├──■──┤ X ├
┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘
q_2: ┤ X ├──■──┤ X ├──■──┤ X ├──■──
└───┘ └───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_7a_1
qiskit.circuit.library.templates.nct.template_nct_7a_1()
テンプレート 7a_1:
┌───┐ ┌───┐
q_0: ┤ X ├──■─────────■────■──┤ X ├──■──
└─┬─┘┌─┴─┐ │ ┌─┴─┐└─┬─┘ │
q_1: ──■──┤ X ├──■────■──┤ X ├──■────■──
└───┘┌─┴─┐┌─┴─┐└───┘ ┌─┴─┐
q_2: ──────────┤ X ├┤ X ├──────────┤ X ├
└───┘└───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_7b_1
qiskit.circuit.library.templates.nct.template_nct_7b_1()
テンプレート 7b_1:
┌───┐ ┌───┐
q_0: ┤ X ├──■─────────■────■──┤ X ├──■──
└───┘┌─┴─┐ │ ┌─┴─┐└───┘ │
q_1: ─────┤ X ├──■────■──┤ X ├───────■──
└───┘┌─┴─┐┌─┴─┐└───┘ ┌─┴─┐
q_2: ──────────┤ X ├┤ X ├──────────┤ X ├
└───┘└───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_7c_1
qiskit.circuit.library.templates.nct.template_nct_7c_1()
テンプレート 7c_1:
┌───┐ ┌───┐
q_0: ┤ X ├──■─────────■────■──┤ X ├──■──
└───┘┌─┴─┐ │ ┌─┴─┐└───┘ │
q_1: ─────┤ X ├──■────■──┤ X ├───────■──
└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘ ┌─┴─┐
q_2: ───────■──┤ X ├┤ X ├──■───────┤ X ├
└───┘└───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_7d_1
qiskit.circuit.library.templates.nct.template_nct_7d_1()
テンプレート 7d_1:
┌───┐ ┌───┐
q_0: ┤ X ├──■─────────■────■──┤ X ├──■──
└─┬─┘┌─┴─┐ │ ┌─┴─┐└─┬─┘ │
q_1: ──■──┤ X ├──■────■──┤ X ├──■────■──
└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘ ┌─┴─┐
q_2: ───────■──┤ X ├┤ X ├──■───────┤ X ├
└───┘└───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_7e_1
qiskit.circuit.library.templates.nct.template_nct_7e_1()
テンプレート 7e_1:
┌───┐ ┌───┐
q_0: ┤ X ├──■─────────■────■──┤ X ├──■──
└───┘┌─┴─┐ │ ┌─┴─┐└───┘ │
q_1: ─────┤ X ├───────┼──┤ X ├───────┼──
└─┬─┘┌───┐┌─┴─┐└─┬─┘ ┌─┴─┐
q_2: ───────■──┤ X ├┤ X ├──■───────┤ X ├
└───┘└───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9a_1
qiskit.circuit.library.templates.nct.template_nct_9a_1()
テンプレート 9a_1:
┌───┐ ┌───┐ ┌───┐
q_0: ┤ X ├──■──┤ X ├──■────■──┤ X ├──■──
└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐
q_1: ──■──┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├
└─┬─┘ │ ├───┤└─┬─┘┌───┐└─┬─┘
q_2: ───────■────■──┤ X ├──■──┤ X ├──■──
└───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9c_1
qiskit.circuit.library.templates.nct.template_nct_9c_1()
テンプレート 9c_1:
┌───┐ ┌───┐┌───┐ ┌───┐ ┌───┐
q_0: ┤ X ├──■──┤ X ├┤ X ├─────┤ X ├──■───────┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌───┐└─┬─┘┌─┴─┐┌───┐└─┬─┘
q_1: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9c_2
qiskit.circuit.library.templates.nct.template_nct_9c_2()
テンプレート 9c_2:
q_0: ───────■────■──────────────■────■─────────■──
┌───┐ │ ┌─┴─┐┌───┐ ┌─┴─┐ │ ┌─┴─┐
q_1: ┤ X ├──■──┤ X ├┤ X ├─────┤ X ├──■───────┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌───┐└─┬─┘┌─┴─┐┌───┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9c_3
qiskit.circuit.library.templates.nct.template_nct_9c_3()
テンプレート 9c_3:
q_0: ───────■────────────────────────■────────────
┌───┐ │ ┌───┐┌───┐ ┌───┐ │ ┌───┐
q_1: ┤ X ├──■──┤ X ├┤ X ├─────┤ X ├──■───────┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌───┐└─┬─┘┌─┴─┐┌───┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9c_4
qiskit.circuit.library.templates.nct.template_nct_9c_4()
テンプレート 9c_4:
q_0: ──■────■─────────■──────────────■────────────
┌─┴─┐ │ ┌───┐┌─┴─┐ ┌───┐ │ ┌───┐
q_1: ┤ X ├──■──┤ X ├┤ X ├─────┤ X ├──■───────┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌───┐└─┬─┘┌─┴─┐┌───┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9c_5
qiskit.circuit.library.templates.nct.template_nct_9c_5()
テンプレート 9c_5:
q_0: ────────────■─────────■──────────────■───────
┌───┐ ┌─┴─┐┌───┐ │ ┌───┐ │ ┌───┐
q_1: ┤ X ├──■──┤ X ├┤ X ├──┼──┤ X ├──■────┼──┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9c_6
qiskit.circuit.library.templates.nct.template_nct_9c_6()
テンプレート 9c_6:
q_0: ───────■────■─────────■─────────■────■───────
┌───┐ │ ┌─┴─┐┌───┐ │ ┌───┐ │ │ ┌───┐
q_1: ┤ X ├──■──┤ X ├┤ X ├──┼──┤ X ├──■────┼──┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9c_7
qiskit.circuit.library.templates.nct.template_nct_9c_7()
テンプレート 9c_7:
q_0: ──■────■────■────■────■─────────■────■───────
┌─┴─┐ │ ┌─┴─┐┌─┴─┐ │ ┌───┐ │ │ ┌───┐
q_1: ┤ X ├──■──┤ X ├┤ X ├──┼──┤ X ├──■────┼──┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9c_8
qiskit.circuit.library.templates.nct.template_nct_9c_8()
テンプレート 9c_8:
q_0: ──■─────────■────■─────────■──────────────■──
┌─┴─┐ ┌─┴─┐┌─┴─┐ ┌─┴─┐ ┌─┴─┐
q_1: ┤ X ├──■──┤ X ├┤ X ├─────┤ X ├──■───────┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌───┐└─┬─┘┌─┴─┐┌───┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9c_9
qiskit.circuit.library.templates.nct.template_nct_9c_9()
テンプレート 9c_9:
q_0: ──■────■────■────■─────────■────■─────────■──
┌─┴─┐ │ ┌─┴─┐┌─┴─┐ ┌─┴─┐ │ ┌─┴─┐
q_1: ┤ X ├──■──┤ X ├┤ X ├─────┤ X ├──■───────┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌───┐└─┬─┘┌─┴─┐┌───┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9c_10
qiskit.circuit.library.templates.nct.template_nct_9c_10()
テンプレート 9c_10:
q_0: ──■─────────■────■────■────■─────────■────■──
┌─┴─┐ ┌─┴─┐┌─┴─┐ │ ┌─┴─┐ │ ┌─┴─┐
q_1: ┤ X ├──■──┤ X ├┤ X ├──┼──┤ X ├──■────┼──┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9c_11
qiskit.circuit.library.templates.nct.template_nct_9c_11()
テンプレート 9c_11:
q_0: ───────■────■─────────■────■────■────■────■──
┌───┐ │ ┌─┴─┐┌───┐ │ ┌─┴─┐ │ │ ┌─┴─┐
q_1: ┤ X ├──■──┤ X ├┤ X ├──┼──┤ X ├──■────┼──┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9c_12
qiskit.circuit.library.templates.nct.template_nct_9c_12()
テンプレート 9c_12:
q_0: ──■────■────■────■────■────■────■────■────■──
┌─┴─┐ │ ┌─┴─┐┌─┴─┐ │ ┌─┴─┐ │ │ ┌─┴─┐
q_1: ┤ X ├──■──┤ X ├┤ X ├──┼──┤ X ├──■────┼──┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9d_1
qiskit.circuit.library.templates.nct.template_nct_9d_1()
テンプレート 9d_1:
┌───┐ ┌───┐ ┌───┐
q_0: ──■───────┤ X ├───────■──┤ X ├───────■──┤ X ├
┌─┴─┐┌───┐└─┬─┘┌───┐┌─┴─┐└─┬─┘┌───┐┌─┴─┐└─┬─┘
q_1: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9d_2
qiskit.circuit.library.templates.nct.template_nct_9d_2()
テンプレート 9d_2:
q_0: ──■────■────■──────────────■──────────────■──
│ │ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐
q_1: ──■────┼──┤ X ├───────■──┤ X ├───────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌───┐┌─┴─┐└─┬─┘┌───┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9d_3
qiskit.circuit.library.templates.nct.template_nct_9d_3()
テンプレート 9d_3:
q_0: ──■────■───────────────────■─────────────────
│ │ ┌───┐ ┌─┴─┐ ┌───┐
q_1: ──■────┼──┤ X ├───────■──┤ X ├───────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌───┐┌─┴─┐└─┬─┘┌───┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9d_4
qiskit.circuit.library.templates.nct.template_nct_9d_4()
テンプレート 9d_4:
q_0: ───────■─────────■──────────────■────────────
│ ┌───┐ │ ┌───┐ │ ┌───┐
q_1: ──■────┼──┤ X ├──┼────■──┤ X ├──┼────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9d_5
qiskit.circuit.library.templates.nct.template_nct_9d_5()
テンプレート 9d_5:
q_0: ──■────■─────────■─────────■────■────────────
│ │ ┌───┐ │ ┌─┴─┐ │ ┌───┐
q_1: ──■────┼──┤ X ├──┼────■──┤ X ├──┼────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9d_6
qiskit.circuit.library.templates.nct.template_nct_9d_6()
テンプレート 9d_6:
q_0: ──■────■──────────────■────■─────────■───────
│ │ ┌───┐ │ ┌─┴─┐ │ ┌───┐
q_1: ──■────┼──┤ X ├───────■──┤ X ├───────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌───┐┌─┴─┐└─┬─┘┌───┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9d_7
qiskit.circuit.library.templates.nct.template_nct_9d_7()
テンプレート 9d_7:
q_0: ──■────■─────────■────■────■────■────■───────
│ │ ┌───┐ │ │ ┌─┴─┐ │ │ ┌───┐
q_1: ──■────┼──┤ X ├──┼────■──┤ X ├──┼────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9d_8
qiskit.circuit.library.templates.nct.template_nct_9d_8()
テンプレート 9d_8:
q_0: ──■────■────■────■─────────■────■─────────■──
│ │ ┌─┴─┐ │ ┌─┴─┐ │ ┌─┴─┐
q_1: ──■────┼──┤ X ├──┼────■──┤ X ├──┼────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9d_9
qiskit.circuit.library.templates.nct.template_nct_9d_9()
テンプレート 9d_9:
q_0: ──■────■────■─────────■────■─────────■────■──
│ │ ┌─┴─┐ │ ┌─┴─┐ │ ┌─┴─┐
q_1: ──■────┼──┤ X ├───────■──┤ X ├───────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌───┐┌─┴─┐└─┬─┘┌───┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
template_nct_9d_10
qiskit.circuit.library.templates.nct.template_nct_9d_10()
テンプレート 9d_10:
q_0: ──■────■────■────■────■────■────■────■────■──
│ │ ┌─┴─┐ │ │ ┌─┴─┐ │ │ ┌─┴─┐
q_1: ──■────┼──┤ X ├──┼────■──┤ X ├──┼────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
クリフォード・テンプレート回路
クリフォードゲート上のテンプレート回路。
clifford_2_1
qiskit.circuit.library.clifford_2_1()
クリフォード・テンプレート
q_0: ─■──■─
│ │
q_1: ─■──■─戻り値
量子回路としてのテンプレート
戻りの型
clifford_2_2
qiskit.circuit.library.clifford_2_2()
Clifford template 2_2:
q_0: ──■────■──
┌─┴─┐┌─┴─┐
q_1: ┤ X ├┤ X ├
└───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
clifford_2_3
qiskit.circuit.library.clifford_2_3()
Clifford template 2_3:
┌───┐┌───┐
q_0: ┤ H ├┤ H ├
└───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
clifford_2_4
qiskit.circuit.library.clifford_2_4()
Clifford template 2_4:
q_0: ─X──X─
│ │
q_1: ─X──X─戻り値
量子回路としてのテンプレート
戻りの型
clifford_3_1
qiskit.circuit.library.clifford_3_1()
クリフォード・テンプレート
┌───┐┌───┐┌───┐
q_0: ┤ S ├┤ S ├┤ Z ├
└───┘└───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
clifford_4_1
qiskit.circuit.library.clifford_4_1()
クリフォード・テンプレート
┌───┐
q_0: ──■──┤ X ├──■───X─
┌─┴─┐└─┬─┘┌─┴─┐ │
q_1: ┤ X ├──■──┤ X ├─X─
└───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
clifford_4_2
qiskit.circuit.library.clifford_4_2()
Clifford template 4_2:
q_0: ───────■────────■─
┌───┐┌─┴─┐┌───┐ │
q_1: ┤ H ├┤ X ├┤ H ├─■─
└───┘└───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
clifford_4_3
qiskit.circuit.library.clifford_4_3()
Clifford template 4_3:
┌───┐ ┌─────┐
q_0: ┤ S ├──■──┤ SDG ├──■──
└───┘┌─┴─┐└─────┘┌─┴─┐
q_1: ─────┤ X ├───────┤ X ├
└───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
clifford_4_4
qiskit.circuit.library.clifford_4_4()
Clifford template 4_4:
┌───┐ ┌─────┐
q_0: ┤ S ├─■─┤ SDG ├─■─
└───┘ │ └─────┘ │
q_1: ──────■─────────■─戻り値
量子回路としてのテンプレート
戻りの型
clifford_5_1
qiskit.circuit.library.clifford_5_1()
クリフォード・テンプレート
q_0: ──■─────────■─────────■── ┌─┴─┐ ┌─┴─┐ │ q_1: ┤ X ├──■──┤ X ├──■────┼── └───┘┌─┴─┐└───┘┌─┴─┐┌─┴─┐ q_2: ─────┤ X ├─────┤ X ├┤ X ├ └───┘ └───┘└───┘
戻り値
量子回路としてのテンプレート
戻りの型
clifford_6_1
qiskit.circuit.library.clifford_6_1()
クリフォード・テンプレート
┌───┐ ┌───┐┌───┐ q_0: ┤ H ├──■──┤ H ├┤ X ├ ├───┤┌─┴─┐├───┤└─┬─┘ q_1: ┤ H ├┤ X ├┤ H ├──■── └───┘└───┘└───┘
戻り値
量子回路としてのテンプレート
戻りの型
clifford_6_2
qiskit.circuit.library.clifford_6_2()
Clifford template 6_2:
┌───┐ q_0: ┤ S ├──■───────────■───■─ ├───┤┌─┴─┐┌─────┐┌─┴─┐ │ q_1: ┤ S ├┤ X ├┤ SDG ├┤ X ├─■─ └───┘└───┘└─────┘└───┘
戻り値
量子回路としてのテンプレート
戻りの型
clifford_6_3
qiskit.circuit.library.clifford_6_3()
Clifford template 6_3:
┌───┐ ┌───┐
q_0: ─X──■─┤ H ├──■──┤ X ├─────
│ │ └───┘┌─┴─┐└─┬─┘┌───┐
q_1: ─X──■──────┤ X ├──■──┤ H ├
└───┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
clifford_6_4
qiskit.circuit.library.clifford_6_4()
Clifford template 6_4:
┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐
q_0: ┤ S ├┤ H ├┤ S ├┤ H ├┤ S ├┤ H ├
└───┘└───┘└───┘└───┘└───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
clifford_6_5
qiskit.circuit.library.clifford_6_5()
Clifford template 6_5:
┌───┐
q_0: ─■───■───┤ S ├───■───────
│ ┌─┴─┐┌┴───┴┐┌─┴─┐┌───┐
q_1: ─■─┤ X ├┤ SDG ├┤ X ├┤ S ├
└───┘└─────┘└───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
clifford_8_1
qiskit.circuit.library.clifford_8_1()
クリフォード・テンプレート
┌───┐ ┌───┐ ┌───┐┌─────┐
q_0: ──■───────┤ X ├─┤ S ├─┤ X ├┤ SDG ├
┌─┴─┐┌───┐└─┬─┘┌┴───┴┐└─┬─┘└┬───┬┘
q_1: ┤ X ├┤ H ├──■──┤ SDG ├──■───┤ H ├─
└───┘└───┘ └─────┘ └───┘戻り値
量子回路としてのテンプレート
戻りの型
clifford_8_2
qiskit.circuit.library.clifford_8_2()
Clifford template 8_2:
┌───┐
q_0: ──■─────────■───┤ S ├───■────────────
┌─┴─┐┌───┐┌─┴─┐┌┴───┴┐┌─┴─┐┌───┐┌───┐
q_1: ┤ X ├┤ H ├┤ X ├┤ SDG ├┤ X ├┤ S ├┤ H ├
└───┘└───┘└───┘└─────┘└───┘└───┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
clifford_8_3
qiskit.circuit.library.clifford_8_3()
Clifford template 8_3:
q_0: ─────────────────■───────────────────────■──
┌───┐┌───┐┌───┐┌─┴─┐┌─────┐┌───┐┌─────┐┌─┴─┐
q_1: ┤ S ├┤ H ├┤ S ├┤ X ├┤ SDG ├┤ H ├┤ SDG ├┤ X ├
└───┘└───┘└───┘└───┘└─────┘└───┘└─────┘└───┘戻り値
量子回路としてのテンプレート
戻りの型
RZXGateテンプレート回路
テンプレート回路 RZXGate.
rzx_yz
qiskit.circuit.library.rzx_yz(theta=None)
RZXベースのCX用テンプレート - RYGate - CX.
┌────────┐ ┌─────────┐┌─────────┐┌──────────┐
q_0: ──■──┤ RY(-ϴ) ├──■──┤ RX(π/2) ├┤0 ├┤ RX(-π/2) ├
┌─┴─┐└────────┘┌─┴─┐└─────────┘│ RZX(ϴ) │└──────────┘
q_1: ┤ X ├──────────┤ X ├───────────┤1 ├────────────
└───┘ └───┘ └─────────┘パラメーター
theta (ParameterExpression |float | None)
rzx_xz
qiskit.circuit.library.rzx_xz(theta=None)
RZXベースのCX用テンプレート - RXGate - CX.
┌───┐ ┌───┐┌─────────┐┌─────────┐┌─────────┐┌──────────┐»
q_0: ┤ X ├─────────┤ X ├┤ RZ(π/2) ├┤ RX(π/2) ├┤ RZ(π/2) ├┤0 ├»
└─┬─┘┌───────┐└─┬─┘└─────────┘└─────────┘└─────────┘│ RZX(-ϴ) │»
q_1: ──■──┤ RX(ϴ) ├──■───────────────────────────────────┤1 ├»
└───────┘ └──────────┘»
« ┌─────────┐┌─────────┐┌─────────┐
«q_0: ┤ RZ(π/2) ├┤ RX(π/2) ├┤ RZ(π/2) ├
« └─────────┘└─────────┘└─────────┘
«q_1: ─────────────────────────────────
«パラメーター
theta (ParameterExpression |float | None)
rzx_cy
qiskit.circuit.library.rzx_cy(theta=None)
RZXベースのCX用テンプレート - RYGate - CX.
┌──────────┐
q_0: ──■─────────────■─────────────────────────────────┤0 ├───────────
┌─┴─┐┌───────┐┌─┴─┐┌────────┐┌──────────┐┌───────┐│ RZX(-ϴ) │┌─────────┐
q_1: ┤ X ├┤ RY(ϴ) ├┤ X ├┤ RY(-ϴ) ├┤ RZ(-π/2) ├┤ RX(ϴ) ├┤1 ├┤ RZ(π/2) ├
└───┘└───────┘└───┘└────────┘└──────────┘└───────┘└──────────┘└─────────┘パラメーター
theta (ParameterExpression |float | None)
rzx_zz1
qiskit.circuit.library.rzx_zz1(theta=None)
RZXベースのCX用テンプレート - RZGate - CX.
»
q_0: ──■────────────────────────────────────────────■───────────────────────»
┌─┴─┐┌───────┐┌────┐┌───────┐┌────┐┌────────┐┌─┴─┐┌────────┐┌─────────┐»
q_1: ┤ X ├┤ RZ(ϴ) ├┤ √X ├┤ RZ(π) ├┤ √X ├┤ RZ(3π) ├┤ X ├┤ RZ(-ϴ) ├┤ RZ(π/2) ├»
└───┘└───────┘└────┘└───────┘└────┘└────────┘└───┘└────────┘└─────────┘»
« ┌──────────┐ »
«q_0: ───────────────────────────────┤0 ├──────────────────────»
« ┌─────────┐┌─────────┐┌───────┐│ RZX(-ϴ) │┌─────────┐┌─────────┐»
«q_1: ┤ RX(π/2) ├┤ RZ(π/2) ├┤ RX(ϴ) ├┤1 ├┤ RZ(π/2) ├┤ RX(π/2) ├»
« └─────────┘└─────────┘└───────┘└──────────┘└─────────┘└─────────┘»
«
«q_0: ───────────
« ┌─────────┐
«q_1: ┤ RZ(π/2) ├
« └─────────┘パラメーター
theta (ParameterExpression |float | None)
rzx_zz2
qiskit.circuit.library.rzx_zz2(theta=None)
CX - PhaseGate - CXのRZXベースのテンプレート。
»
q_0: ──■────────────■─────────────────────────────────────────────────────»
┌─┴─┐┌──────┐┌─┴─┐┌───────┐┌─────────┐┌─────────┐┌─────────┐┌───────┐»
q_1: ┤ X ├┤ P(ϴ) ├┤ X ├┤ P(-ϴ) ├┤ RZ(π/2) ├┤ RX(π/2) ├┤ RZ(π/2) ├┤ RX(ϴ) ├»
└───┘└──────┘└───┘└───────┘└─────────┘└─────────┘└─────────┘└───────┘»
« ┌──────────┐
«q_0: ┤0 ├─────────────────────────────────
« │ RZX(-ϴ) │┌─────────┐┌─────────┐┌─────────┐
«q_1: ┤1 ├┤ RZ(π/2) ├┤ RX(π/2) ├┤ RZ(π/2) ├
« └──────────┘└─────────┘└─────────┘└─────────┘パラメーター
theta (ParameterExpression |float | None)
rzx_zz3
qiskit.circuit.library.rzx_zz3(theta=None)
RZXベースのCX用テンプレート - RZGate - CX.
»
q_0: ──■─────────────■──────────────────────────────────────────────────────»
┌─┴─┐┌───────┐┌─┴─┐┌────────┐┌─────────┐┌─────────┐┌─────────┐┌───────┐»
q_1: ┤ X ├┤ RZ(ϴ) ├┤ X ├┤ RZ(-ϴ) ├┤ RZ(π/2) ├┤ RX(π/2) ├┤ RZ(π/2) ├┤ RX(ϴ) ├»
└───┘└───────┘└───┘└────────┘└─────────┘└─────────┘└─────────┘└───────┘»
« ┌──────────┐
«q_0: ┤0 ├─────────────────────────────────
« │ RZX(-ϴ) │┌─────────┐┌─────────┐┌─────────┐
«q_1: ┤1 ├┤ RZ(π/2) ├┤ RX(π/2) ├┤ RZ(π/2) ├
« └──────────┘└─────────┘└─────────┘└─────────┘パラメーター
theta (ParameterExpression |float | None)